BASH Flashcards
BASH
Какие файлы автоматически выполняет:
bash –posix …
?
Обращается к переменной ENV и выполняет файл, имя которого там указано (ищет в текущем каталоге, а потом в каталогах PATH).
Больше не выполняет никаких файлов.
BASH
Способы запуска bash в не интерактивном режиме (3)?
[1] С ключом -c:
bash -c “…”
[2] Запуск скрипта:
./имя_скрипта
[3] Перенаправление ввода:
bash < скрипт
~4) Использование heredoc:
bash «_space;EOF
… код …
EOF
BASH
[1] Как запустить bash так, чтобы строка (“…”) была интерпретирована как код на bash, либо как скрипт на bash.
[2] Что с переменными командной строки?
[1] Флаг -c
Пример:
bash -c “echo ‘Hello, world!’”
[2] Все последующие после этого аргументы командной строки будут начинаться с к $0, причем $0 будет интерпретироваться как название выполняющей программы.
BASH
Перечислите способы запустить bash в интерактивном режиме (5).
[1] bash
[2] bash -i, в том числе и в скриптах, к примеру:
#! /bin/bash -i
[3] Открытие терминала (большинство из них запускают bash по умолчанию).
[4] Подключение по SSH
[5] exec bash
BASH
[1] Имена демонов, которые используются для удаленного запуска bash (2).
[2] Какие файлы автоматически выполняются в этом случае?
[1]
rshd - remote shell daemon.
sshd - secure shell daemon.
[2]
~/.bashrc
п-(если вызван как sh, то выполнения ~/.bashrc не происходит).
BASH
Что происходит при запуске bash, когда эффективный идентификатор пользователя (группы) не равен реальному идентификатору пользователя (группы)?
[1] jЕсли нет ключа -p, то:
1) Не происходит автоматического выполнения стартовых файлов.
позже-2) Функции оболочки не наследуются от среды.
3) Игнорируются, если существуют, переменные:
SHELLOPTS
BASHOPTS
CDPATH
GLOBIGNORE
4) Эффективный идентификатор пользователя устанавливается равным реальному.
[2] Если ключ -p есть, то все то же, что и в [1], но не происходит изменения эффективного идентификатора пользователя.
BASH
~Перечислите зарезервированные слова в bash.
if elif else fi
case esac
!
{}
[[ ]]
for in do done
select
then
until
while
function
BASH
д-Что возвращает команда bash?
“exit status” или 128+n, если команда завершена сигналом n.
BASH
Что происходит раньше - перенаправления, задаваемые командами или перенаправления конвеера?
Перенаправления конвеера.
BASH
Различные варианты конвейеров (2)
[1] ./скрипт_1 | ./скрипт_2
stdout скрипт_1 перенаправляется в stdin скрипт_2
stderr стандартно выводится в терминал.
[2] ./скрипт_1 |& ./скрипт_2
stdout скрипт_1 и stderr скрипт_1 перенаправляются в stdin скрипт_2
BASH
Что возвращает конвейер?
При нормальной работе - exit status последней команды.
При pipefail - последняя самая правая команда, у которой не нулевой статус, либо, если все команды завершились успешно, возвращает 0.
BASH
Если нужно, чтобы exit status конвейера был изменен на противоположный, то для этого нужно …
Пере конвейером поставить !
Пример:
! ./скрипт_1 |& ./скрипт_2
BASH
[1] Как узнать системное и пользовательское время, потраченное на работу конвейера?
[2] То же самое, но в формате POSIX?
[1] Поставить перед конвейером time
Пример:
$ time ./first | ./second
real 0m0,004s
user 0m0,001s
sys 0m0,005s
[2] Поставить после time ключ -p
Пример:
$ time -p ./first | ./second
real 0,00
user 0,00
sys 0,00
BASH
Когда bash в posix mode, он не распознает time как ключевое слово, если …
если следующий токен начинается с -
BASH
[1] Что такое список (list)?
[2] Расписать приоритет операторов.
[1] Список - последовательность из одного или более конвейеров, разделенных одним из следующих операторов:
;
&
&&
||
и, опционально, завершающихся одним из следующих символов:
;
&
<newline>
[2] (из этих операторов && и || имеют равный приоритет, затем идут ; и & также с равным приоритетом)
Для разделения команд в списке, вместо символа ; может использоваться несколько newlines.
</newline>