В наши дни Linux стал де-факто операционной системой, особенно для серверов. Большинство из нас используют операционные системы Linux почти каждый день, и возникла необходимость понять эту ОС от самых основ до ее ядра. Несмотря на то, что в Интернете доступно множество руководств и сообщений, которые могут помочь нам узнать больше о Linux, в этом посте я расскажу о нескольких не очень популярных и некоторых очень распространенных синтаксисах, используемых для сценариев bash.
Bash-скрипт начинается
В большинстве bash-скриптов, которые вы, возможно, читали или писали, следующие три строки:
set -o errexit
set -o pipefail
set -o nounset
set -o errexit также равно set -e, что означает, что в случае сбоя какой-либо из команд в нашем скрипте bash выполнение всего скрипта завершится ошибкой. Этот вариант очень удобен, если у вас запущено несколько сценариев как часть конвейеров автоматизации или доставки.
set -o pipefail используется для выхода из вашего сценария, если какая-либо из команд канала не работает во время выполнения сценария bash. В противном случае вас встретят с неправильными кодами выхода, когда код передается по конвейеру.
set -o nounset также равно set -u, что означает, что скрипт завершится, если какая-либо из ваших переменных не установлена.
Использование команд pushd и popd
Часто вы бы видели две команды pushd и popd, используемые в любом сценарии bash (пример). Эти две команды являются встроенными командами оболочки, которые позволяют управлять использованием стека каталогов. Они используются для смены каталогов и возврата к ним при необходимости. Допустим, мы сейчас находимся в каталоге с именем k8s_practice,
$ pwd
~/k8s_practice
Теперь я перейду в другой каталог с именем git-clones,
$ pushd ~/git-clones
~/git-clones ~/k8s_practice
$ pwd
~/git-clones
И при использовании popd мы можем просто открыть текущий каталог и вернуться к предыдущему каталогу k8s_practice,
$ popd
~/k8s_practice
$ pwd
~/k8s_practice
Эти команды очень полезны, когда вы планируете быстро переключаться между стеками каталогов в вашем скрипте bash.
За гранью бесконечности: /dev/null
Бьюсь об заклад, вы видели следующий синтаксис: во многих bash-скриптах
» /dev/null 2›&1
Этот синтаксис в основном является более коротким способом отключения процесса. Можно даже написать так: 2›&
» /dev/null перенаправляет стандартный вывод (stdout) на /dev/null, который в конечном итоге отбрасывает его. /dev/null — это темное место (специальный файл) ОС Linux, в котором все, что в него записывается, в конечном итоге выбрасывается в пустоту или отправляется в черную дыру. И 2›&1 перенаправляет стандартную ошибку на стандартный вывод, который в конечном итоге отбрасывает ее. & здесь указывает файловый дескриптор, так как их три — стандартный ввод, вывод и ошибка.
Итак, это было несколько основных советов, которые, я надеюсь, вы запомните или, возможно, обратите на них внимание при написании вашего следующего скрипта bash.