BASH Flashcards

1
Q

BASH

Какие файлы автоматически выполняет:

bash –posix …

?

A

Обращается к переменной ENV и выполняет файл, имя которого там указано (ищет в текущем каталоге, а потом в каталогах PATH).
Больше не выполняет никаких файлов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

BASH

Способы запуска bash в не интерактивном режиме (3)?

A

[1] С ключом -c:

bash -c “…”

[2] Запуск скрипта:

./имя_скрипта

[3] Перенаправление ввода:

bash < скрипт

~4) Использование heredoc:

bash &laquo_space;EOF
… код …
EOF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

BASH

[1] Как запустить bash так, чтобы строка (“…”) была интерпретирована как код на bash, либо как скрипт на bash.

[2] Что с переменными командной строки?

A

[1] Флаг -c

Пример:
bash -c “echo ‘Hello, world!’”

[2] Все последующие после этого аргументы командной строки будут начинаться с к $0, причем $0 будет интерпретироваться как название выполняющей программы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

BASH

Перечислите способы запустить bash в интерактивном режиме (5).

A

[1] bash
[2] bash -i, в том числе и в скриптах, к примеру:
#! /bin/bash -i
[3] Открытие терминала (большинство из них запускают bash по умолчанию).
[4] Подключение по SSH
[5] exec bash

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

BASH

[1] Имена демонов, которые используются для удаленного запуска bash (2).

[2] Какие файлы автоматически выполняются в этом случае?

A

[1]

rshd - remote shell daemon.

sshd - secure shell daemon.

[2]

~/.bashrc

п-(если вызван как sh, то выполнения ~/.bashrc не происходит).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

BASH

Что происходит при запуске bash, когда эффективный идентификатор пользователя (группы) не равен реальному идентификатору пользователя (группы)?

A

[1] jЕсли нет ключа -p, то:

1) Не происходит автоматического выполнения стартовых файлов.

позже-2) Функции оболочки не наследуются от среды.

3) Игнорируются, если существуют, переменные:

SHELLOPTS
BASHOPTS
CDPATH
GLOBIGNORE

4) Эффективный идентификатор пользователя устанавливается равным реальному.

[2] Если ключ -p есть, то все то же, что и в [1], но не происходит изменения эффективного идентификатора пользователя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

BASH

~Перечислите зарезервированные слова в bash.

A

if elif else fi
case esac
!
{}
[[ ]]
for in do done
select
then
until
while
function

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

BASH

д-Что возвращает команда bash?

A

“exit status” или 128+n, если команда завершена сигналом n.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

BASH

Что происходит раньше - перенаправления, задаваемые командами или перенаправления конвеера?

A

Перенаправления конвеера.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

BASH

Различные варианты конвейеров (2)

A

[1] ./скрипт_1 | ./скрипт_2

stdout скрипт_1 перенаправляется в stdin скрипт_2
stderr стандартно выводится в терминал.

[2] ./скрипт_1 |& ./скрипт_2

stdout скрипт_1 и stderr скрипт_1 перенаправляются в stdin скрипт_2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

BASH

Что возвращает конвейер?

A

При нормальной работе - exit status последней команды.

При pipefail - последняя самая правая команда, у которой не нулевой статус, либо, если все команды завершились успешно, возвращает 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

BASH

Если нужно, чтобы exit status конвейера был изменен на противоположный, то для этого нужно …

A

Пере конвейером поставить !

Пример:

! ./скрипт_1 |& ./скрипт_2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

BASH

[1] Как узнать системное и пользовательское время, потраченное на работу конвейера?

[2] То же самое, но в формате POSIX?

A

[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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

BASH

Когда bash в posix mode, он не распознает time как ключевое слово, если …

A

если следующий токен начинается с -

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

BASH

[1] Что такое список (list)?

[2] Расписать приоритет операторов.

A

[1] Список - последовательность из одного или более конвейеров, разделенных одним из следующих операторов:
;
&
&&
||
и, опционально, завершающихся одним из следующих символов:
;
&

<newline>

[2] (из этих операторов && и || имеют равный приоритет, затем идут ; и & также с равным приоритетом)

Для разделения команд в списке, вместо символа ; может использоваться несколько newlines.
</newline>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

BASH

[1] (в том числе, и в контексте списка) Для того, чтобы команда выполнялась в фоновом режиме, нужно …

[2] Что из себя представляет фоновый режим?

A

[1] в конце команды поставить символ &.

[2] Shell выполняет команду в фоновом режиме (background) в порожденном интерпретаторе (subshell) (shell не будет ждать завершения команды и вернет статус 0, т.е. команды будут в асинхронном режиме).

17
Q

BASH

(в том числе, и в контексте списка) Для того, чтобы команды выполнялись последовательно, нужно …

A

разделить их символом ;

Тогда в списке return status = exit status последней выполненной команды.

18
Q

BASH

Как сделать так, чтобы команда_2 выполнялась тогда, и только тогда, когда команда_1 возвращает exit status = 0 ?

A

команда_1 && команда_2

19
Q

BASH

Как сделать так, чтобы команда_2 выполнялась тогда, и только тогда, когда команда_1 возвращает exit status != 0 ?

A

команда_1 || команда_2

20
Q

BASH

в bash AND и OR обозначаются как …

21
Q

BASH

команда_1 && команда_2

Какое значение принимает выходной статус?

A

Принимает значение выходного статуса последней выполненной команды.

22
Q

BASH

команда_1 || команда_2

Какое значение принимает выходной статус?

A

Принимает значение выходного статуса последней выполненной команды.

23
Q

BASH

Виды составных команд (4) - синтаксис, особенности выполнения.

A

[1] (list)

Выполняется в subshell environment. Действия, меняющие переменные и среду командного интерпретатора, не действуют после окончания команды.
Код возврата - код возврата list.

[2] { list; }

Выполняется в текущей оболочке.
List должен закончиться символом ; или newline.
Символы { и } отделяются от остальных пробелами или другими метасимволами.
Код возврата - код возврата list.

[3] ((expression))

Арифметические вычисления.
Если вычисленное значение != 0, то возвращает 0, в противном случае возвращает 1.
((expression)) полностью эквивалентно let “expression”.

[4] [[ expression ]]

Условное выражение, в зависимости от соблюдения или не соблюдения условия возвращающее 0 или 1 соответственно.
НЕ ВЫПОЛНЯЕТСЯ:
1. разделение слов
2. подстановка pathname
ВЫПОЛНЯЕТСЯ:
1. подстановка ~
2. подстановка значений параметров и переменных
3. арифметическая подстановка
4. подстановка результатов команд и подстановка процессов
5. удаление кавычек.

Условные операторы ( к примеру -f) должны быть без кавычек.
Операторы < и > сортируют по алфавиту.

24
Q

BASH

При проверке на равенство (==) и не равенство (!=), что возвращается?

A

Успех = 0

Не успех = 1

25
п-BASH Оператор =~ [1] Что делает? [2] Какой приоритет?
[1] Выражение: строка_1 =~ строка_2 сравнивает строки, интерпретируя строка_1 как расширенное регуляторное выражение POSIX (ищет строку в подстроке). Равенство - возвращает 0, не равно - возвращает 1. Синтаксическая ошибка - возвращает 2. С опцией nocasematch - сравнения без учета регистра букв. [2] Такой же, как и у == и !=
26
п-BASH Оператор для сравнения строк, используя расширенные регуляторные выражения.
=~ Выражение: строка_1 =~ строка_2 Сравнивает строки, интерпретируя строка_2 как расширенное регуляторное выражение POSIX (ищет строку в подстроке) Равенство - возвращает 0, не равно - возвращает 1. Синтаксическая ошибка - возвращает 2. С опцией nocasematch - сравнения без учета регистра букв.
27
BASH Вернуть значение выражения
( выражение )
28
BASH Вернуть True, если выражение False.
! выражение
29
BASH Вернуть True, если выражение_1 и выражение_2 возвращают True.
выражение_1 && выражение_2 Если результат выражения_1 определяет возвращаемое значение, то выражение_2 не вычисляется.
30
BASH Вернуть True, если выражение_1 True или выражение_2 True.
выражение_1 || выражение_2 Если результат выражения_1 определяет возвращаемое значение, то выражение_2 не вычисляется.
31
BASH Оператор select
select переменная in список do () блок команд () break done Оператор select выводит в столбик все пары: номер) значение_из_списка (номера - целые положительные числа, начиная с 1). после чего идет предложение ко вводу, обозначенное как: #? введя номер, будет выполнен блок команд, в рамках выполнения которого, переменная из заголовка select будет равна значению, которое соответствует введенному номеру (номер + для окончания ввода). Если нажать , ничего не введя, то select будет запущен заново. Если ввести EOF - select будет выполнен. Любые другие значения, которых нет в списке заголовка select, приведут к тому, что переменной из заголовка будет присвоено значение null (пустота). Если в конце блока команд не будет break, то, после выполнения этого блока команд, будет новый "цикл" оператора select. PS3 - переменная, которая хранит значение приглашения ко вводу. REPLY - переменная, которая хранит значение выбранного номера.
32
BASH Переменная, которая хранит значение приглашения ко вводу для оператора select.
PS3
33
BASH Переменная, которая хранит значение выбранного номера (для оператора select).
REPLY
34
н-BASH Оператор case
case переменная in значение_1) команда_1 ;; значение_2) команда_2 ;; ... значение_n) команда_n ;; esac Завершение case после выполнения блока команд: значение_1) команда_1 ;; Выполнение следующего блока (только одного следующего) команд при завершении текущего (без проверки совпадения переменной): значение_1) команда_1 ;&
35
BASH while
while выражение do () блок кода done Цикл, в каждой итерации которого, если выражение возвращает статус 0 (т.е. выражение верное и.т.д.), то исполняется блок кода.
36
BASH until
until выражение do () блок кода done Цикл, в каждой итерации которого, если выражение возвращает статус 1 (т.е. выражение не верное и.т.д.), то исполняется блок кода.
37
BASH [1] Что такое сопроцес? [2] Сделать сопроцесс с именем.
[1] Сопроцесс выполняется асинхронно в subshell, как если бы команда выполнялась с символом & в конце, с двухсторонней трубой, установленной между оболочкой и сопроцессом. [2] coproc [имя] [команда] [перенаправление] Сопроцессу можно задать имя. Без указания имени сопроцесс будет называться COPROC.
38
BASH Какое имя будет по умолчанию назначено сопроцессу, если при его создании имя не было указано?
COPROC.