Страница 1 из 1
Как сделать простейший скрипт?
Добавлено: 07 июл 2018, 14:05
StarMAUGLI
Последнее время постоянно отваливается NetworkManager
Чего ему не хватает не знаю, но сейчас речь не об этом.
Я никогда не писал скриптов и решил попробовать написать.
Команда для старта службы известна
sudo service NetworkManager start
Т.е. весь скрипт должен выглядеть как-то так
Код: Выделить всё
#!/bin/bash
# Старт НетворкМенеджера
sudo service NetworkManager start
После сохранения текстового файла с расширением .sh сделать файл исполняемым +x
А вопросы следующие:
1. Где хранятся пользовательские скрипты? Просто в корне или в хомяке на сколько я понимаю их быть не должно. А если в других местах, то нужно что бы они были прописаны в path. Как узнать какие каталоги уже там прописаны? Как добавить новое место в path если по каким-то причинам существующие каталоги меня не устроят?
2. Второй вопрос вообще глупый. Но чего-то не осилил. Как в КДЕ сделать ярлык на рабочий стол что бы запускать скрипт без поисков файла по всему компьютеру (просто кликом по ярлыку)?
Как сделать простейший скрипт?
Добавлено: 07 июл 2018, 15:53
slant
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 не использую, по его ярлыкам подсказать не могу.
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 00:11
StarMAUGLI
slant писал(а): ↑07 июл 2018, 15:53
Редактируем файл ~/.profile
А если такого файла нет? Создать?
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 00:25
broken
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 $
Насчет второго вопроса. В кедах нет как такового ярлыкового рабочего стола. Вы можете добавить на него виджет, отображающий содержимое папки "Рабочий стол" и туда уже поместить ярлык на запуск скрипта. Можно так же запуск скрипта повесить на хоткей. Тут уж зависит от фантазии.
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 00:41
StarMAUGLI
broken писал(а): ↑08 июл 2018, 00: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: Осталось дело за малым. Дождаться, когда Нетворк Менеджер опять отвалится и опробовать скрипт в "Боевых условиях". ))
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 00:45
broken
StarMAUGLI, вполне допускаю. В моем примере он создан в июле, что странно, ибо системе уже год точно или около того... Да и апгрейда в июле не делал по версиям. Возможно прилетел с каким-то обновлением. Поскольку вы имеете дело с древними кедами, то возможно с этим и связано его отсутствие. (Древние, поскольку в 19 минте их уже нет).
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 01:07
StarMAUGLI
broken писал(а): ↑08 июл 2018, 00:45
(Древние, поскольку в 19 минте их уже нет).
М-да... я тоже на это уже обратил внимание. Теперь ломаю голову, как бы мне мягенько без больших последствий для работоспособности сменить ДЕ.
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 01:09
StarMAUGLI
slant писал(а): ↑07 июл 2018, 15:53
Если скрипт пользовательский - место ему как раз в хомяке.
Ну один-два-пять куда ни шло. А если человек их увлеченно плодить начнет, то получится помойка. Не? Там в хомяке и без скриптов не айс.
Как сделать простейший скрипт?
Добавлено: 08 июл 2018, 01:31
slant
StarMAUGLI писал(а): ↑08 июл 2018, 01:09
Ну один-два-пять куда ни шло. А если человек их увлеченно плодить начнет, то получится помойка. Не? Там в хомяке и без скриптов не айс.
С чего бы? Для них отдельный каталог внутри хомяка. Точнее говоря, есть три боле-менее стандартных варианта: ~/bin, ~/.bin (скрытый) и ~/.local/bin (в скрытом каталоге настроек). Последний обычно используется как раз для перекрытия общесистемных бинарников/скриптов.
А если вы переживаете что внутри этого bin будет помойка, так я вас успокою - в общесистемном /usr/bin, напрмер, тоже самое. Т.к. path не умеет лазить по подкаталогам автоматически. Т.е. либо каждый подкаталог отдельно добавлять, либо держать все в одном месте. А слишком много подкаталогов в path тоже не айс - это замедляет поиск файла при вызове. Больше десятка путей там - и уже будет заметно.
Как сделать простейший скрипт?
Добавлено: 09 июл 2018, 21:58
zuzabrik
В минте по умолчанию папка ~/bin находится в перменной path, можно не изобретать ничего, и пихать свои нетленки в этот каталог, создав папку bin внутри домашней папки.
Кусок из дефолтного ~/.profile
Код: Выделить всё
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Как сделать простейший скрипт?
Добавлено: 11 июл 2018, 20:38
StarMAUGLI
slant писал(а): ↑08 июл 2018, 01:31
Точнее говоря, есть три боле-менее стандартных варианта: ~/bin, ~/.bin (скрытый) и ~/.local/bin (в скрытом каталоге настроек).
~/bin и ~/.bin меня вполлне устраивают, я просто в голом хомяке не хотел свалку устраивать.
Проблема с НетворкМенеджером очередной раз повторилась. Соединение отвалилось.
Но вот сам скрипт (текст в топике) чего-то категорически отказывается запускаться. Для проверки сделал такой же скрипт на остановку НетворкМенеджера. С ним такая же проблема.
Окошко с паролем не вылазит. Сервис в первом случае не стартует, а во втором не останавливается. Что-то я не так все-таки делаю. Подскажите куда курить?
Как сделать простейший скрипт?
Добавлено: 12 июл 2018, 05:45
abulaev2008
Как сделать простейший скрипт?
Добавлено: 12 июл 2018, 06:13
rogoznik
StarMAUGLI писал(а): ↑07 июл 2018, 14:05
sudo service NetworkManager start
Эта строчка ошибочна.
Должно быть
sudo systemctl restart NetworkManager.service
.
Вот только так не сработает, т.к.
sudo
консольная утилита. Поэтому если у тебя минт 19 - просто убери
sudo
, если 18.х - замени на
gksudo
(для гномьих DE) и на
kdesudo
(или
kdesu
, не помню как там оно) для KDE.
Как сделать простейший скрипт?
Добавлено: 12 июл 2018, 15:20
StarMAUGLI
darkfenix писал(а): ↑12 июл 2018, 06:13
kdesudo(или kdesu, не помню как там оно) для KDE.
Оказалось, что
kdesudo
Спасибо, теперь скрипт заработал.
Остался вопрос, почему ошибочная строка работала в консоли? Для консоли другой синтаксис?
Как сделать простейший скрипт?
Добавлено: 18 июл 2018, 19:26
zuzabrik
StarMAUGLI писал(а): ↑12 июл 2018, 15:20
Остался вопрос, почему ошибочная строка работала в консоли? Для консоли другой синтаксис?
sudo спрашивает пароль через консоль, kdesudo через диалоговое окно KDE раб стола. Так что используя судо тебе скорее всего просто некуда было вбить этот пароль, терминал не открывался...
синтаксис через service команду вместо systemctl устарел, но все еще работает. лучше использовать новый, который сейчас повсеместно, так как повсеместно используется systemd.
Как сделать простейший скрипт?
Добавлено: 18 июл 2018, 20:59
StarMAUGLI
zuzabrik, спасибо. Доходчиво.
