Как сделать простейший скрипт?

Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Версия ОС вместе с разрядностью. Пример: LM 18.1 x64, LM Sarah x32 2. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 3. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 4. Суть. Желательно с выводом консоли, логами. 5. Скрин. Просьба указывать 1, 2 и 3 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 07 июл 2018, 11:05

Последнее время постоянно отваливается NetworkManager
Чего ему не хватает не знаю, но сейчас речь не об этом.
Я никогда не писал скриптов и решил попробовать написать.
Команда для старта службы известна
sudo service NetworkManager start
Т.е. весь скрипт должен выглядеть как-то так

Код: Выделить всё

#!/bin/bash
# Старт НетворкМенеджера
sudo service NetworkManager start
После сохранения текстового файла с расширением .sh сделать файл исполняемым +x

А вопросы следующие:
1. Где хранятся пользовательские скрипты? Просто в корне или в хомяке на сколько я понимаю их быть не должно. А если в других местах, то нужно что бы они были прописаны в path. Как узнать какие каталоги уже там прописаны? Как добавить новое место в path если по каким-то причинам существующие каталоги меня не устроят?
2. Второй вопрос вообще глупый. Но чего-то не осилил. Как в КДЕ сделать ярлык на рабочий стол что бы запускать скрипт без поисков файла по всему компьютеру (просто кликом по ярлыку)?

Решение darkfenix » 12 июл 2018, 03:13
StarMAUGLI писал(а):
07 июл 2018, 11:05
sudo service NetworkManager start

Эта строчка ошибочна.
Должно быть sudo systemctl restart NetworkManager.service.
Вот только так не сработает, т.к. sudo консольная утилита. Поэтому если у тебя минт 19 - просто убери sudo, если 18.х - замени на gksudo(для гномьих DE) и на kdesudo(или kdesu, не помню как там оно) для KDE.

Перейти к ответу ➙

Аватара пользователя

slant
Сообщения: 1634
Зарегистрирован: 21 июн 2017, 15:09
Решено: 24
Благодарил (а): 11 раз
Поблагодарили: 687 раз

Как сделать простейший скрипт?

Сообщение slant » 07 июл 2018, 12:53

1 - Если скрипт пользовательский - место ему как раз в хомяке. Можно в ~/bin/ положить, например. (Символ ~ обозначает путь к домашнему каталогу активного пользователя, каталог bin если отсутствует в хомяке - создать предварительно).

Как узнать какие каталоги есть в path - echo $PATH

Как добавить свой - для пользовательского ~/bin/ правильнее всего сделать так:

Редактируем файл ~/.profile, в самый конец добавляем строчку:
PATH="$HOME/bin:$HOME/.bin:$HOME/.local/bin:$PATH"
Теперь у нас для этого (и только этого) пользователя добалены пути запуска - ~/bin, ~/.bin, ~/.local/bin
И эти пути будут просмотрены ПЕРЕД стандартными в системе, так что можно туда закинуть свой личный вариант какого-то скрипта/бинарника с таким же именем как у общесистемного. И запускаться для этого пользователя будут именно они, а не общесистемные.

Если же новый скрипт должен быть общесистемным - ему место в /usr/local/bin или /usr/local/sbin. Писать туда может только root и права на скрипт желательно выдать соответственно - запись только для root.

2 - KDE не использую, по его ярлыкам подсказать не могу.

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 07 июл 2018, 21:11

slant писал(а):
07 июл 2018, 12:53
Редактируем файл ~/.profile
А если такого файла нет? Создать?

Аватара пользователя

broken
Сообщения: 219
Зарегистрирован: 31 авг 2016, 22:45
Решено: 1
Благодарил (а): 9 раз
Поблагодарили: 7 раз

Как сделать простейший скрипт?

Сообщение broken » 07 июл 2018, 21:25

StarMAUGLI, его не может не быть
~ $ ls -la /home/broken | grep profile
-rw-r--r--  1 broken  broken     711 июл  6 14:32 .profile
~ $ cat .profile 
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
export QT_QPA_PLATFORMTHEME="qt5ct"
~ $ 
      Что касательно где хранить скрипты. Я вот храню их в ~/.scripts/. Делаешь туда нужный скрипт и создаешь в автозапуске пункт о его запуске. Можно к примеру использовать отложенный запуск, добавив в скрипт перед строкой основной команды строку sleep 10 (Это означает, что команда запустится через 10 секунд после запуска скрипта).
Пример

Код: Выделить всё

~/.scripts $ cat redshift.sh 
#!/bin/bash

sleep 15
redshift-gtk
~/.scripts $ 
      Насчет второго вопроса. В кедах нет как такового ярлыкового рабочего стола. Вы можете добавить на него виджет, отображающий содержимое папки "Рабочий стол" и туда уже поместить ярлык на запуск скрипта. Можно так же запуск скрипта повесить на хоткей. Тут уж зависит от фантазии.

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 07 июл 2018, 21:41

broken писал(а):
07 июл 2018, 21:25
его не может не быть
Однако, его не было. :(
Вот я создал его 10 минут назад

Код: Выделить всё

mugalem@mugalem-P35 ~ $ ls -la /home/mugalem/ | grep profile
-rw-r--r--  1 mugalem mugalem     53 июл  8 00:28 .profile
mugalem@mugalem-P35 ~ $ 
И внес ту строчку, что посоветовал slant

Как оказалось, описываемые в сети способы по созданию ярлыка как-то слишком заумны. Если просто переносить файл из папки открытой в файловом менеджере (Дельфине) на рабочий стол, то открывается контекстное меню, в котором можно выбрать пункт что-то типа "создать ссылку". Если не хочется делать даже выбора из контекстного меню, то можно зажать на клаве контрол и шифт и также перетащить файл из папки на рабочий стол.

UPD: Осталось дело за малым. Дождаться, когда Нетворк Менеджер опять отвалится и опробовать скрипт в "Боевых условиях". ))
Последний раз редактировалось пользователем 3 StarMAUGLI; всего редактировалось раз: 7

Аватара пользователя

broken
Сообщения: 219
Зарегистрирован: 31 авг 2016, 22:45
Решено: 1
Благодарил (а): 9 раз
Поблагодарили: 7 раз

Как сделать простейший скрипт?

Сообщение broken » 07 июл 2018, 21:45

StarMAUGLI, вполне допускаю. В моем примере он создан в июле, что странно, ибо системе уже год точно или около того... Да и апгрейда в июле не делал по версиям. Возможно прилетел с каким-то обновлением. Поскольку вы имеете дело с древними кедами, то возможно с этим и связано его отсутствие. (Древние, поскольку в 19 минте их уже нет).

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 07 июл 2018, 22:07

broken писал(а):
07 июл 2018, 21:45
(Древние, поскольку в 19 минте их уже нет).
М-да... я тоже на это уже обратил внимание. Теперь ломаю голову, как бы мне мягенько без больших последствий для работоспособности сменить ДЕ.

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 07 июл 2018, 22:09

slant писал(а):
07 июл 2018, 12:53
Если скрипт пользовательский - место ему как раз в хомяке.
Ну один-два-пять куда ни шло. А если человек их увлеченно плодить начнет, то получится помойка. Не? Там в хомяке и без скриптов не айс.

Аватара пользователя

slant
Сообщения: 1634
Зарегистрирован: 21 июн 2017, 15:09
Решено: 24
Благодарил (а): 11 раз
Поблагодарили: 687 раз

Как сделать простейший скрипт?

Сообщение slant » 07 июл 2018, 22:31

StarMAUGLI писал(а):
07 июл 2018, 22:09
Ну один-два-пять куда ни шло. А если человек их увлеченно плодить начнет, то получится помойка. Не? Там в хомяке и без скриптов не айс.
С чего бы? Для них отдельный каталог внутри хомяка. Точнее говоря, есть три боле-менее стандартных варианта: ~/bin, ~/.bin (скрытый) и ~/.local/bin (в скрытом каталоге настроек). Последний обычно используется как раз для перекрытия общесистемных бинарников/скриптов.
А если вы переживаете что внутри этого bin будет помойка, так я вас успокою - в общесистемном /usr/bin, напрмер, тоже самое. Т.к. path не умеет лазить по подкаталогам автоматически. Т.е. либо каждый подкаталог отдельно добавлять, либо держать все в одном месте. А слишком много подкаталогов в path тоже не айс - это замедляет поиск файла при вызове. Больше десятка путей там - и уже будет заметно.

Аватара пользователя

zuzabrik
Сообщения: 1539
Зарегистрирован: 29 авг 2016, 09:08
Решено: 19
Благодарил (а): 92 раза
Поблагодарили: 485 раз

Как сделать простейший скрипт?

Сообщение zuzabrik » 09 июл 2018, 18:58

В минте по умолчанию папка ~/bin находится в перменной path, можно не изобретать ничего, и пихать свои нетленки в этот каталог, создав папку bin внутри домашней папки.

Кусок из дефолтного ~/.profile

Код: Выделить всё

# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Наш IRC-канал для общения: #linuxmint-ru на сервере irc.spotchat.org
Для захода откройте HexChat, выберите сервер Linux Mint и наберите в чате /join #linuxmint-ru
Или любым другим удобным способом ;)

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 11 июл 2018, 17:38

slant писал(а):
07 июл 2018, 22:31
Точнее говоря, есть три боле-менее стандартных варианта: ~/bin, ~/.bin (скрытый) и ~/.local/bin (в скрытом каталоге настроек).
~/bin и ~/.bin меня вполлне устраивают, я просто в голом хомяке не хотел свалку устраивать.

Проблема с НетворкМенеджером очередной раз повторилась. Соединение отвалилось.
Но вот сам скрипт (текст в топике) чего-то категорически отказывается запускаться. Для проверки сделал такой же скрипт на остановку НетворкМенеджера. С ним такая же проблема.
Окошко с паролем не вылазит. Сервис в первом случае не стартует, а во втором не останавливается. Что-то я не так все-таки делаю. Подскажите куда курить?


abulaev2008
Сообщения: 374
Зарегистрирован: 18 ноя 2017, 18:36
Решено: 3
Благодарил (а): 18 раз
Поблагодарили: 57 раз

Как сделать простейший скрипт?

Сообщение abulaev2008 » 12 июл 2018, 02:45


Аватара пользователя

darkfenix
Сообщения: 4616
Зарегистрирован: 27 июн 2017, 10:36
Решено: 52
Откуда: Нижний Тагил
Благодарил (а): 272 раза
Поблагодарили: 875 раз

Как сделать простейший скрипт?

Сообщение darkfenix » 12 июл 2018, 03:13

StarMAUGLI писал(а):
07 июл 2018, 11:05
sudo service NetworkManager start

Эта строчка ошибочна.
Должно быть sudo systemctl restart NetworkManager.service.
Вот только так не сработает, т.к. sudo консольная утилита. Поэтому если у тебя минт 19 - просто убери sudo, если 18.х - замени на gksudo(для гномьих DE) и на kdesudo(или kdesu, не помню как там оно) для KDE.
Изображение

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 12 июл 2018, 12:20

darkfenix писал(а):
12 июл 2018, 03:13
kdesudo(или kdesu, не помню как там оно) для KDE.
Оказалось, что kdesudo
Спасибо, теперь скрипт заработал.
Остался вопрос, почему ошибочная строка работала в консоли? Для консоли другой синтаксис?

Аватара пользователя

zuzabrik
Сообщения: 1539
Зарегистрирован: 29 авг 2016, 09:08
Решено: 19
Благодарил (а): 92 раза
Поблагодарили: 485 раз

Как сделать простейший скрипт?

Сообщение zuzabrik » 18 июл 2018, 16:26

StarMAUGLI писал(а):
12 июл 2018, 12:20
Остался вопрос, почему ошибочная строка работала в консоли? Для консоли другой синтаксис?
sudo спрашивает пароль через консоль, kdesudo через диалоговое окно KDE раб стола. Так что используя судо тебе скорее всего просто некуда было вбить этот пароль, терминал не открывался...

синтаксис через service команду вместо systemctl устарел, но все еще работает. лучше использовать новый, который сейчас повсеместно, так как повсеместно используется systemd.
Наш IRC-канал для общения: #linuxmint-ru на сервере irc.spotchat.org
Для захода откройте HexChat, выберите сервер Linux Mint и наберите в чате /join #linuxmint-ru
Или любым другим удобным способом ;)

Аватара пользователя

Автор темы
StarMAUGLI
Сообщения: 1532
Зарегистрирован: 10 сен 2016, 07:16
Решено: 15
Откуда: Москва
Благодарил (а): 627 раз
Поблагодарили: 177 раз

Как сделать простейший скрипт?

Сообщение StarMAUGLI » 18 июл 2018, 17:59

zuzabrik, спасибо. Доходчиво. :tux:

Вернуться в «KDE»