11.12.2024
bash
собирать то, что бессистемно нахватывала в предыдущие времена
- Filenames and Pathnames in Shell (bash, dash, ash, ksh, and so on): How to do it Correctly http://www.dwheeler.com/essays/filenames-in-shell.html (2014-07-04 Пт 13:34)
- http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html - перевод на русский Advanced Bash Scripting Guide.
- https://gist.github.com/Titiaiev/dcb7298389d1276b823bbc96e29f940d
- https://rtfm.co.ua/bash-opisanie-ciklov-for-while-until-i-primery-ispolzovaniya/
- https://ru.hexlet.io/blog/posts/kak-ispolzovat-kody-zaversheniya-v-bash-skriptah
- bash -x для отладки скриптов
- алиасы - возможность вводить короткую команду вместо длинной или даже последовательности команд.
alias command='long command'
Для того, чтоб сохранялось после перезагрузки, надо созданный алиас добавить в .bashrc домашнего каталога. Удалять алиасы можно командой unalias. И, точно также, вычищать из .bashrc.- если на команду повешен алиас, то запустить ее «настоящую» можно, добавив в начале бэкслеш например: \ls
- пишите в скриптах длинные –варианты параметров
- проверяйте код возврата
- https://shellcheck.net - проверялка скриптов на ненужности и ошибки. Emacs умеет применять эту проверялку, как минимум, через flymake: https://github.com/federicotdn/flymake-shellcheck. https://github.com/bash-lsp/bash-language-server/ - тоже существует. https://github.com/leshikus/shellcheck
- https://www.gnu.org/software/bash/
- https://habr.com/ru/post/666982/ - отладка.
- https://habr.com/ru/post/590021/ - шаблон и почему так.
- https://habr.com/ru/post/583320/ - про то, какие удобства вокруг написания и отладки bash-скриптов есть.
- https://github.com/dylanaraps/pure-bash-bible
- https://github.com/merces/bashacks/ – полезняшки для делания всякого своего.
Аналог yeahconsole башем
wmctrl надо для контролирования окошек.
WINTITLE="yeahurxvt" PROGNAME="urxvt" # ищем окно по имени и скрываем/показываем или запускаем окно в зависимости от ситуации if [ `wmctrl -xl | grep -c "$WINTITLE"` != 0 ]; then # скрываем или показываем нужное окно в зависимости от того что сейчас wmctrl -x -r "$WINTITLE" -b toggle,hidden else # запускаем если нет окна с нужным именем $PROGNAME -name "$WINTITLE" & # ну и размер сразу выставить можно, параметры добавить и прочее по желанию - главное что бы имя у окна было нужное fi exit 0
Зациклить выполнение чего-то до успеха
#!/bin/bash echo "hello" false # $? на начало until будет не 0 until [ $? -eq 0 ] do echo "do something"; # и это самое что-нибудь должно уметь код возврата хотя б на уровне "всё ок" и "всё остальное", тогда сработает done; echo "bye";
Все посты