Вспомогательный модуль SNMP для Metasploit

Продолжая наш сбор информации, давайте взглянем на SNMP Sweeping. SNMP sweep является хорошим показателем в нахождении большого количества информации о заданной системе или действительной угрозе удаленному устройству. Если вы найдете устройство Cisco управляемое частной строкой, например, вы можете загрузить конфигурацию всего устройства, модифицировать её, и загрузить свою собственную вредоносную конфигурацию. Часто само кодирование паролей 7 уровня означает что они тривиальны для декодирования и получения ‘enable‘ или пароля логина определенного устройства.

Читать далее Вспомогательный модуль SNMP для Metasploit

Ограничения и файлы bash

Ограничения bash

Если Bash запускается и именем rbash или при вызове подставляется опция -r, интерпретатор становится ограниченным. Ограниченная оболочка используется для настройки более контролируемой окружающей среды, нежели стандартная оболочка shell. Оболочка ведёт себя идентично, за исключением того что в bash запрещено или не выполняется следующее:

Смена каталога при помощи команды cd

Установка или сброс значений SHELL, PATH, ENV или BASH_ENV

Указывть имена команд содержащих /

Указывать имя файла, содержащего / в качестве аргумента к встроенной команде ‘.

Указывать имя файла содержащего / как аргумент опции -p встроенной команды hash

Импортировать функцию определяющуюся из окружающей среды shell при запуске

Анализировать значение SHELLOPTS из окружающей среды shell при запуске

Перенаправлять вывод использующий операторы перенаправления >, >|, <>, >&, &> и >>

Использовать встроенную команду exec в замене shell с иной командой

Добавление или отключение встроенных команд с опциями -f и -d во встроенной команде enable

Использовать встроенную команду enable при включении, отключении, встроенных команд shell

Указывать опцию -p к встроенной команде command

Отключение ограниченного режима с помощью set +r или set +o restricted

Эти ограничения запускаются после запуска любых файлов для чтения.

Когда команда которая есть только для выполнения shell скриптов, rbash отключает любые ограничения в shell, порождённые для выполнения скрипта.

Файлы bash

/bin/bash

Исполняемый файл bash

/etc/profile

Общесистемный файл инициализации, выполняющийся для входа в shell

/etc/bash.bashrc

Общесистемный интерактивный файл настройки запуска shell

/etc/bash.bash.logout

Общесистемный файл очистки файла shell логина, выполняющийся когда оболочка разлогинивается

~/.bash_profile

Персональный файл инициализации, выполняющийся для логинов shell

~/.bashrc

Индивидуальный интерактивный файл настройки запуска shell

~/.bash_logout

Индивидуальный файл очистки файла shell логина, выполняющийся когда оболочка разлогинивается

~/.inputrc

Индивидуальная инициализация файла readline

Встроенные команды в bash

Если явно не указано иное, каждая встроенная команда, описанная в этом разделе, принимает опции начинающиеся с дефиса ‘‘, два дефиса ‘‘ обозначают окончание опций. Встроенные команды не принимают опции ‘:‘, ‘true‘, ‘false‘ и ‘test‘ и не рассматривают ‘‘ специально. Встроенные команды принимают ‘exit‘, ‘logout‘, ‘break‘, ‘continue‘, ‘let‘ и ‘shift‘ и аргументы процессов начинающиеся с ‘‘ не требуя ‘‘. Иные встроенные команды, которые принимают аргументы, но не указанные в качестве принимающих опций интерпретации аргументов, начиная с ‘‘ как недействительные опции и требуют ‘‘ для того чтобы предотвратить эти интерпретации.

: [arguments]

Не имеет эффекта; команда ничего не делает вне расширения аргументов и выполнения любых перенаправлений. Возвращает код выхода ноль.

. имя-файла [аргументы]

source имя-файла [аргументы]

Читает и выполняет команды из имя-файла в текущем командном интерпретаторе и возвращает код выхода последней выполненной команды из имя-файла. Если имя файла не содержит косую черту, используются имена файлов в PATH, для того чтобы найти каталог в котором находится имя-файла. Поиск файлов в PATH необязательно должен быть исполняемым. Когда bash находится не в posix режиме, текущий каталог, если файл не найден в PATH. Если опция встроенной команды sourcepath включена, PATH не ищется. Если подаются какие-либо аргументы, они становятся позиционными параметрами при имени когда выполняется имя-файла. В ином случае позиционные параметры остаются неизменными. Статусом выхода является статус последней команды вышедшей в скрипте (0 если ни одна команда не выполняется) и false если имя-файла не найдено либо не может быть прочитан.

alias [-p] [name[=value] …]

Команда псевдоним(alias) без аргументов или с опцией -p печатает список псевдонимов(aliases) в виде псевдонима имя=значение на стандартный вывод. Когда подаются аргументы, псевдоним(alias) определяется для каждого имени, значение которого задаётся. Завершающий пробел в значении, вызывает в следующем слове выполнение замены псевдонимов(aliases). Для каждого имени в списке аргументов, для которых не подаётся никакого значения, печатается имя и значение псевдонима. Псевдоним возвращает true(истина) только если имя задано не являющееся именем псевдонима.

bg [jobspec …]

Возобновляет каждую приостановленную работу jobspec в фоновом режиме, как если бы он был запущен с ‘&‘. Если jobspec отсутствует, используется командный интерпретатор текущего задания. bg jobspec возвращает 0 если запустить, когда управление заданиями не отключено или при запуске с включенным управлением заданиями, любой указанный jobspec не найден или запускается с отключенным управлением заданиями.

bind [-m keymap] [-lpsvPSV]

bind [-m keymap] [-q function] [-u function] [-r keyseq]

bind [-m keymap] -f filename

bind [-m keymap] -x keyseq:shell-command

bind [-m keymap] keyseq:function-name

bind readline-command

Отображение текущих ключей readline и функциональной привязки, привязки последовательности клавиш для функции readline или макроса readline, или устанавливает переменную readline. Каждый аргумент не являющейся опцией команды, как и в файле ‘.inputrc‘, но каждая привязка должна передаваться в качестве отдельного аргумента, например ‘«\C-x\C-r»: re-read-init-file‘.

Опции если они имеются, имеют следующие значения:

-m keymap

Использовать keymap как таблицу ключей, которые будут затронув в последующих привязках. Приемлемые имена keymap, emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, и vi-insert. vi является эквивалентом vi-command: emacs эквивалентен emacs-standard.

-l

Список имён всех функций readline.

-p

Выдаёт имена readline функций и привязки таким образом, что они могут быть прочитаны повторно.

-P

Список текущих имён функций readline и привязки.

-s

Выдаёт последовательность клавиш readline, связанные с макросами и строки выдаваемые таким образом что они могут быть прочитаны повторно.

-S

Выдаёт последовательность клавиш readline, связанные с макросами и выдаваемыми строками.

-v

Выдаёт имена переменных и значения таким образом, чтобы их можно было прочитать повторно.

-V

Выдаёт список текущих имён readline переменных и значений.

-f имя-файла

Читает комбинации клавиш из файла.

-q функция

Выдаёт комбинацию клавиш, привязанную к указанной функции.

-u функция

Отменяет привязку всех ключей, связанных с именем функции.

-r keyseq

Удаляет текущую привязку для указанной комбинации клавиш keyseq.

-x keyseq:shell-command

Поэтому будет выполняется shell-command которая будет выполнятся при вводе keyseq. Когда выполняется shell-command, shell устанавливает переменную READLINE_LINE к содержимому строки буфера обмена readline, и переменную READLINE_POINT к текущему местоположению точки вставки. Если выполняющаяся команда изменяет значение READLINE_LINE или READLINE_POINT, эти новые значения будут отражены в состоянии редактирования.

Возвращается значение равное 0, если параметр неизвестен, не задан или произошла ошибка.

break [n]

Выходит из цикла for, while, until или select. Если указано значение ‘n‘, выходит из ‘n‘ уровней циклов. ‘n‘ должно быть больше или равно единице. Если ‘n‘ больше чем количество вложенных циклов, происходит выход из всех циклов. Возвращаемое значение 0, если n не больше или равно единице.

builtin shell-builtin [arguments]

Выполняет указанную команду shell, передавая ей аргументы, возвращает её код завершения. Это полезно при определении функции, чьё имя такое же как встроенная команда shell, сохранив функциональность встроенной команды внутри функции. Так обычно переопределяется встроенная команда cd. Если указанная команда не является встроенной командой shell возвращает статус выхода false.

caller [expr]

Возвращает контекст любой активной подпрограммы (функции shell или выполняющегося скрипта с ‘.‘ или встроенной командой source). Без expr, отображается номер строки и имя файла текущего вызова подпрограммы. Если подставляется целое неотрицательное число, как expr, вызов отображает номер строки, имя подпрограммы и исходный файл соответствующий этой позиции в текущем стеке исполняющихся вызовов. Эта дополнительная информация может быть использована для печати стека. Текущее значение кадра 0. Возврашается значение 0, если shell не выполняет вызов подпрограммы или expr не соответствует действительной позиции в стеке вызовов.

cd [-L|[-P [-e]]] [dir]

Изменить текущий каталог на dir. Переменная HOME является по умолчанию dir. Переменная CDPATH определяет путь поиска каталога, содержащего dir. Альтернативные имена каталогов в CDPATH разделены двоеточиями ‘:‘. Нулевое имя каталога в CDPATH такое же как в текущем каталоге, тоесть ‘.‘. Если dir начинается с косой черты ‘/‘, то CDPATH не используется. Опция -P говорит использовать физическую структуру каталогов, вместо того чтобы следовать символическим ссылкам (смотрите так же опцию -P к встроенной команде set): опция -L указывает следовать символическим ссылкам. Опция -e поставляется с -P, и текущий рабочий каталог не может успешно определится после успешного изменения каталогов, cd возвращается со статусом выхода 0. Аргумент ‘‘ эквивалентен $OLDPWD. Если используется непустое имя каталога из CDPATH, или если это первый аргумент, а изменение каталога прошло успешно, абсолютный путь новой рабочей директории записывается в стандартный ввод. Возвращаемое значение true если каталог был полностью изменен, в ином случае 1.

command [-pVv] command [arg …]

Запустить команду с arg(аргументами), подавляющими нормальную функцию поиска оболочки. Выполняются только встроенные команды или команды найденные в PATH. Если задается опция -p, выполняется поиск команды с использованием значения по умолчанию для переменной PATH, которая гарантированно найдёт все стандартные утилиты. Если подается какая либо опция -V или -v, печатается описание команды. Опция -v выдаёт одно слово, указывающее имя команды или файла, используемого для вызова команды, которая будет отображаться: опция -V производит более подробное описание. Если указывается опция -V или -v, статус выхода равен 0, если команда была найдена, и 1 если нет. Если ни одна из опций не задана, и происходит ошибка, или команда не может быть найдена, статус выхода 127. В ином случае, статус выхода встроенной команды, является статус выхода из команды.

compgen [option] [word]

Генерация возможных совпадений завершений в word, в соответствии с параметрами, которые могут быть любой опцией принятой со встроенной командой complete, за исключением опций -p и -r и записью совпадений на стандартный вывод. Когда используются опции -F или -C, различные переменные shell, устанавливают программируемые объекты завершения, в то время как доступные не имеют полезных значений.

Совпадения будут генерироваться таким же образом как если бы их породил программируемый код завершения, непосредственно из спецификации завершения с теми же флагами. Если указано word, будут отображаться только те завершения которые соответствуют word.

Возврашаемое значение true(верно) если подставляется недопустимая опция или совпадения не были сгенерированы.

complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function]

[-C command]

[-X filterpat] [-P prefix] [-S suffix] name [name …]

complete -pr [-DE] [name …]

Указывает какие аргументы каждого имени должны быть завершены. Если подается опция -p или если опция не подаётся, существующие технические завершения печатаются таким образом, что позволяет им быть повторно использованы в качестве входящих данных. Опция -r удаляет спецификацию завершения для каждого имени или если имена не подаются все спецификации завершения. Опция -D означает, что остальные опции и действия должны применяться к завершению командой «default»; тоесть завершает ту часть команды, для которых завершения ранее не было определено. Опция -E указывает что остальные опции и действия должны применяться к команде завершения «empty»; тоесть завершение пытается выполниться в пустой строке.

Попытки процесса применения этих характеристик завершения word, описаны в прошлой статье в разделе Программируемое дополнение.

Иные опции если они указаны имеют следующие значения. Аргументы опций -G, -W и -X (при необходимости -P и -S опции) должны быть указаны для защиты их от расширения до вызова встроенной команды complete.

-o comp-option

comp-option управляет некоторыми аспектами поведения compspec’s за пределами простой генерации завершений. comp-option может быть одним из:

bashdefault

Выполняет остальные bash завершения по умолчанию, если compspec не генерирует совпадения.

default

По умолчанию использует завершения имен файлов readline если compspec не генерирует совпадения.

dirnames

Выполняет завершение имен директорий, если compspec не генерирует совпадений.

filenames

Говорит readline что compspec генерирует имена файлов, поэтому он может выполнять любые имена конкретный обрабатываемых файлов (например добавление косой черты в именах каталогов, цитирования спецсимволов или подавления конечных пробелов). Предназначен для использования с функциями shell.

nospace

Говорит readline не применять пробелы (по умолчанию), слова завершаются в конце строки.

plusdirs

После любых совпадений определённых compspec генерируется, завершения имени каталога, и любые совпадения добавляются к результатам других действий.

-A action

Action(действие) может быть одним из следующих для генерации списка возможных завершений: alias(псевдонимов) Alias names(имен псевдонимов).Так же может быть указано как -a.

arrayvar

массив имен переменных.

binding

readline связанные ключевые имена.

builtin

Имена встроенных shell команд. Так же могут быть указаны как -b.

command

Имена команд. Так же могут быть указаны как -c.

directory

Имена директорий. Так же могут быть указаны как -d.

disabled

Имена отключённых встроенных команд shell.

enabled

Имена включенных встроенных команд shell.

export

Имена экспортируемых переменных shell. Может так же быть указано как -e.

file

Имена файлов. Может быть так же указано как -f.

function

Имена shell функций.

group

Имена групп. Может быть так же указано как -g.

helptopic

Записи помощи встроенной команды.

hostname

Имена хостов, берутся из файла указанного в переменной HOSTFILE.

job

Работающие имена, имена активных заданий. Так же могут быть указаны как -j.

keyword

Зарезервированные слова shell. Так же могут быть указаны как -k.

running

Имена выполняющихся заданий, если управление заданиями активно.

service

Имена служб. Так же могут указываться как -s.

setopt

Допустимые аргументы для опции -o встроенной команды set.

shopt

Имена shell опций что были приняты встроенной командой shopt.

signal

Имена сигналов.

stopped

Имена остановившихся работ, если управление заданиями активно.

user

Имена пользователей. Также могут быть указаны как -u.

variable

Имена всех переменных оболочки. Так же может быть указана как -v.

-C command

command выполняется в среде подоболочки, и её выход используется в качестве возможных завершений.

-F function

Функция, shell функции выполненной в текущей среде оболочки. Когда она завершается, возможные завершения извлекаются из значения переменной массива COMPREPLY.

-G globpat

Шаблон расширения путей имен globpat расширяется для генерации возможных завершений.

-P prefix

prefix добавляется в начале каждого возможного завершения после того как все другие параметры были применены.

-S suffix

suffix добавляется к каждому возможному завершению после того, как все другие варианты были применены.

-W wordlist

wordlist(список слов) разделен с помощью символов в специальной переменной IFS в качестве разделителей, и каждое полученное слово расширяется. Возможные завершения являются членами результирующего списка, которые соответствуют слову завершения.

-X filterpat

filterpat это шаблон, который используется для имен файлов. Применяется список возможных завершений, порождённый в предыдущих опциях и аргументах, и каждый соответствующий завершению filterpat удаляется из списка. Ведущий ‘!‘ в filterpat предоставляет отрицательный шаблон, в этом случае любое завершение не соответствующее filterpat удаляется.

Возвращаемое значение верно если подставляется недопустимая опция, значение кроме -p или -r подставляется без имени аргумента, делается попытка удалить спецификацию завершение для имени, для которого спецификация не существует или произошла ошибка добавления спецификации завершения.

compopt [-o option] [-DE] [+o option] [name]

Изменение опций завершения для каждого имени в соответствии с опциями или для текущего выполняемого завершения, если имена не подставляется. Если опции не заданы, отображает опции завершения для каждого имени или текущего завершения. Возможные значения опций действительны для встроенной команды complete, описанной выше. Опция -D указывает что остальные опции должны применяться к завершению команды по умолчанию, тоесть завершение той части команды для которых завершение ранее не было определено. Опция -E указывает что остальные опции должны применяться к пустой строке команды завершения, тоесть завершения пустой строки.

Возвращаемое значение верно, если подставляется недопустимая опция, происходит попытка изменить параметры для имени и для которых спецификация завершения не существует или происходит выход ошибки.

continue [n]

Перейти к следующей итерации цикла for, while, until или select. Если значение ‘n‘ указано, перейти к следующей итерации n-го цикла. Значение ‘n‘ должно быть больше или равно 1. Если ‘n‘ больше чем количество вмещаемых циклов, выполняется итерация самого последнего цикла(цикла «верхнего уровня»). Возвращаемое значение 0, если ‘n‘ не больше или равно 1.

declare [-aAfFgilrtux] [-p] [name[=value] …]

typeset [-aAfFgilrtux] [-p] [name[=value] …]

Объявление переменных и/или задает им атрибуты. Если имена не приводятся отображаются значения переменных. Опция -p будет отображать атрибуты и значения каждого имени. Когда используется -p с именем аргументов, дополнительные опции игнорируются. Когда -p подставляестя без аргументов имени, он будет отображать атрибуты и значения всех переменных, имеющих атрибуты, заданные дополнительными опциями. Если нет иных опций подставляющихся с -p, объявление покажет атрибуты и значения всех переменных shell. Опция -f ограничит отображение в shell функции. Опция -F ингибирует отображение определенных функций; печатаются только атрибуты и имя функции. Если shell опция extdebug включается с помощью встроенной команды shopt, имя исходного файла и номер строки где функция определяется также отображается. Опция -F подразумевает -f. Опция -g вынуждает создавать или изменять переменные в глобальной части, даже если объявляется в shell функции. Во всех остальных случаях он игнорируется. Следующие опции могут быть использованы для ограничения вывода в переменных с указанным атрибутом или задать переменные атрибуты:

-a

Каждое имя является индексированной переменной массива.(Массивы я описывал ранее)

-A

Каждое имя является ассоциативной переменной массива.(Массивы я описывал ранее)

-f

Используются только имена функций.

-i

Переменная трактуется как целое; арифметические оценки выполняются(о Арифметических оценках я писал ранее), когда переменной присваивается значение.

-l

Когда переменной присваивается значение, все символы верхнего регистра преобразуются в прописные буквы. Атрибут верхнего регистра отключен.

-r

Делает имена только для чтения. Эти имена не могут быть присвоены значения последующих операторов присваивания или unset.

-t

Предоставьте каждому имени атрибут трассировки. Трассируемые функции наследуют DEBUG и RETURN traps из вызывающейся оболочки. Трассировка атрибутов не имеет особого значения дял переменных.

-u

Когда переменной присваивается значение, все строчные символы преобразуются в верхний регистр. Атрибут нижнем регистре отключен.

-x

Все имена экспортируются в последующие команды через окружающую среду.

Использование ‘+‘ вместо ‘‘ выключают атрибут вместо того чтобы, с +a не используется для уничтожения переменной массива и +r не удаляет только атрибут для чтения. При использовании в функции, делает каждое локальное имя, как с помощью команды local, если опция -g не подставляется, если имя переменной следует за =value(значение), значение переменной устанавливается равным value(значение). Возвращается значение 0, если встречается недопустимая опция, делается попытка определить функцию с помощью ‘-f foo=bar‘, делается попытка присвоить значение переменной только для чтения, попытка присвоить значение переменной массива без использования синтаксиса присваивания (Это было описано ранее в разделе Массивы), одно из имен является недопустимым именем переменной shell, делается попытка выключить статус переменной только для чтения, делается попытка выключить статус массива для переменной массива или попытка показать несуществующую функцию с -f.

dirs [+n] [-n] [-clpv]

Без опций отображает список текущих запомненных директорий. По умолчанию отображается в одной строке с именами каталогов, разделенных пробелами. Директории добавляются в список с помощью команды pushd; команда popd удаляет записи из списка.

+n

Показывает n-ную запись слева от списка директорий, когда вызывается без опций, счёт начинается с нуля.

-n

Показывает n-ную запись справа от списка директорий, когда вызывается без опций, счёт начинается с нуля.

-c

Очищает стек каталогов, удалив все записи.

-l

Выдает полный список, по умолчанию формат списка использует тильду для обозначения домашнего каталога.

-p

Распечатывает стек каталогов, по одной записи в строке.

-v

Распечатывает стек каталогов по одной записи в строке, предваряя каждую запись её индексом в стеке.

Возвращает значение равное 0, если подставляется недопустимая опция или ‘n‘ индексов после окончания стека каталогов.

disown [-ar] [-h] [jobspec …]

Без опций каждый jobspec удаляется из таблицы активных заданий. Если нет jobspec и не подставляется ни -a ни -r используется текущее задание командного интерпретатора. Если задана опция -h, каждый jobspec не удаляется из таблицы, но отмечается так что SIGHUP не отправляет в работу если shell получает SIGHUP. Если jobspec отсутствует и ни -a ни -r опция не подставляется, используется текущее задание. Если jobspec не подставляется, опция -a означает удаление или помечение всех заданий; опция -r без jobspec аргумента ограничивает операцию по выполнению заданий. Возвращается значение 0, если jobspec не определяет допустимую работу.

echo [-neE] [arg …]

Вывод аргументов, разделенных пробелами, с дальнейшим переходом на новую строку. Статус возврата всегда 0. Если указан -n завершающий перевод строки подавляется. Если задана опция -e, интерпретация символов следующих за обратной косой чертой включена. Опция -E отключает интерпритацию символов escape, даже где они интерпретируются по умолчанию. Shell опция xpg_echo может быть использована для динамического определения или not echo расширяет символы escape по умолчанию. Echo не интерпретирует ‘‘ означающий окончание опций. Echo интерпретирует следующие управляющие последовательности:

\a

Оповещение(звонок)

\b

бекспейс

\c

Подавить дальнейший выход

\e

\E

Символ escape

\f

Прогон страницы

\n

Новая строка

\r

Возврат каретки

\t

Горизонтальная табуляция

\v

Вертикальная табуляция

\\

Обратная косая черта.

\0nnn

Восьмибитный символ, значение которого восьмеричное значение nnn (от нуля до трех восьмеричных цифр)

\xHH

Восьмибитный символ, значение которого шестнадцатеричное значение HH (одна или две шестнадцатеричные цифры)

\uHHHH

Unicode (ISO/IEC 10646) символы, значение которых шестнадцатеричное значение HHHH (от одного до четырех шестнадцатеричных символов)

\UHHHHHHHH

Unicode (ISO/IEC 10646) символы, значение которых шестнадцатеричное значение HHHHHHHH (от одного до восьми шестнадцатеричных символов)

enable [-a] [-dnps] [-f filename] [name …]

Включение и отключение встроенных команд shell. Отключение встроенной команды позволяет запускать без указания полного имени фаил на диске, имя которого совпадает со встроенной командой, хоть обычно встроенные команды рассматриваются первыми. Если используется -n, указанные имена отключаются, в ином же случае включаются. Например чтобы использовать бинарный файл программы test, который находится в одном из каталогов указанных в PATH, вместо встроенной команды оболочки выполните ‘enable -n test‘. Опция -f требует загрузить новую встроенную команду с указанным именем из заданного разделяемого объектного файла в системах поддерживающих динамическую загрузку. Опция -d удалит встроенную команду ранее загруженную с опцией -f. Если аргументы имени не заданы, или если задана опция -p, выдается список подставных встроенных команд. Не имея иных опций аргументов, список состоит из всех включенных встроенных команд shell. Если подставляется -n, печатаются только отключённые встроенные команды. Если подставляется -a, печатающийся список включает все встроенные команды, с указанием включена или нет каждая из них. Если подставляется -s, выход ограничивается специальными POSIX встроенными командами. Возвращаемое значение 0, только в том случае если имя не встроенной shell команды или есть ошибка загрузки новой встроенной команды из объектного файла.

eval [arg …]

Аргументы читаются и соединяются вместе в одной команде. Затем эта команда читается и выполняется командным интерпретатором, статус выхода возвращает в качестве значения eval. Если же аргументов нет, или аргументы только нулевые, eval возвращает 0.

exec [-cl] [-a name] [command [arguments]]

Если commamd задана, она заменяет shell. Новые процессы не создаются. Arguments становятся аргументами command. Если подставляется опция -l, командный интерпретатор помещает тире в начале нулевого аргумента переданного команде. Так делает команда login(1). Опция -c задает выполнение команды в пустой среде. Если подставляется -a, shell приводит имя в качестве нулевого аргумента выполненной команды. Если команда не может быть выполнена по какой-либо причине, неинтерактивный командный интерпретатор завершает работу, если только не включена опция интерпретатора execfail, в этом случае он возвращает ошибку. Интерактивная оболочка возвращает ошибку, если файл не может быть выполнен. Если команда не указана, любые перенаправления вступившие в силу в текущей оболочке возвращают статус 0. Если есть ошибка перенаправления, возвращается статус 1.

exit [n]

Вызывает выход из оболочки со статусом выхода ‘n‘. Если ‘n‘ опускается, статус выхода является, статус выхода последней выполненной команды. Перед завершением оболочки срабатывает обработчик сигнала EXIT.

export [-fn] [name[=word]] …

export -p

Подставляемые имена помечаются для автоматического экспорта в окружающую среду при выполнении последующих команд. Если задана опция -f, имена относятся к функциям. Если имена не заданы или подставляется опция -p, печатается список всех имен экспортированных в этой оболочке. Опция -n вызывает удаление признака экспорта с указанных переменных. Если имя переменной сопровождается =word(слово), значение переменной устанавливается word. Экспорт возвращает код завершения 0, если встречается недопустимая опция, одно из имен не является допустимым именем shell переменной или подставляется -f с именем которое не является функцией.

fc [-e ename] [-lnr] [first] [last]

fc -s [pat=rep] [cmd]

Исправить команду. В первой форме, выбирается ряд команд из первой до последней из списка истории. Первая и последняя команда может быть указана в виде строки (чтобы найти команду начиная с этой строки) или в виде числа (индекса в списке истории, где отрицательное число используется как смещение от текущего числа команды). Если последняя команда не указана, последней считается текущая команда (так ‘fc -l -10‘ печатает последние 10 команд) для остальных опций предполагается что последняя совпадает с первой. Если первая не указана, она устанавливается на предыдущей команде для редактирования и -16 (шестнадцатая с конца списка истории) при выдаче.

Если подставляется опция -n, подавляет выдачу номеров при перечислении. Опция -r изменяет порядок команд. Если задана опция -l, команды перечисляются на стандартный вывод. В ином случае, вызывается указанный редактор, которому передается файл с соответствующими командами. Если имя редактора не задано, используется значение переменной FCEDIT или значение переменной EDITOR если FCEDIT не установлена. Если переменная не установлена, используется vi. Когда редактирование завершается, отредактированные команды выдаются и выполняются.

Во второй форме, команда вновь выполняется после замены каждого вхождения par на rep. Полезно задать псевдоним ‘r=»fc -s»‘, так набор ‘r cc‘ запустит последнюю команду начиная с ‘cc‘ и при вводе ‘r‘ повторно выполнится последняя команда.

Если используется первая форма, возвращаемое значение 0, если встречается недопустимая опция или первая или последняя команда выходит за пределы номеров команд в списке истории. Если подставляется опция -e, возвращаемое значение является значением последней выполненной команды или неудачи произошедшей при работе с временным фалом команд. Если используется вторая форма, возвращается статус выхода вновь выполненной команды, если cmd не задаёт недопустимую строку в списке истории, в этом случае fs возвращает отказ.

fg [jobspec]

Возобновляет jobspec на переднем плане, и делает его текущим заданием. Если jobspec отсутствует, используется задание текущего командного интерпретатора. Возвращается значение статуса выхода команды на переднем плане или неудачи при запуске конда управление заданиями отключено или при запуске с включённым управлением заданиями если указанный jobspec не существует или jobspec определяет работу которая была начата с отключённым управлением заданиями.

getopts optstring name [args]

getopts используется shell процедурами для разбора позиционных параметров. Строка опций(optstreng) содержит символы опций которые необходимо распознать; если после символа указано двоеточие, предполагается, что у опции должен быть аргумент, отделяемый от нее пробельным символом. Двоеточия и знаки вопроса не могут быть использованы в качестве символов опций. При каждом вызове команды getopts помещает следующую опцию в переменную командного интерпретатора с указанным именем очередной опции, создавая переменную, если она еще не существует, а индекс следующего аргумента в переменную OPTIND. OPTIND получает значение 1, каждый раз при вызове командного интерпретатора или сценария оболочки. Когда опции требуется аргумент, getopts помещает аргумент в переменную OPTARG. Shell не сбрасывает значение OPTIND автоматически, оно должно быть сброшено вручную, между несколькими вызовами getopts в пределах того же вызова оболочки, если необходимо использовать новый набор параметров.

Когда все опции обработаны, getopts выходит с возвращаемым значением больше нуля. OPTIND устанавливается на индекс первого аргумента, не являющегося опцией, а переменная name получает значение ‘?‘.

Getopts обычно разбирает позиционные параметры, но если заданы аргументы, getopts сначала разбирает их.

getopts может сообщать об ошибках двумя способами. Если первый символ optstring является двоеточием, используется информирование об ошибках. При нормальной работе печатаются диагностические сообщения, когда встречаются неверные варианты или отсутствующие параметры опций. Если переменная OPTERR установлен в 0, сообщения об ошибках не будет отображаться, даже если первый символ optstring не двоеточие.

Если встречается недопустимая опция, getopts помещает ‘?‘ в переменную name и если не задано информирование об ошибках, выдает сообщение об ошибке и сбрасывает переменную OPTARG. Если getopts молчит, символ опции помещается в OPTARG и никакие диагностические сообщения не печатаются.

Если обязательный аргумент не найден, и getopts не задано информирование об ошибках, переменная name получает значение ‘?‘, OPTARG сбрасывается и выдает диагностическое сообщение. Если getopts молчит, то двоеточие (:) помещается в имени и OPTARG устанавливается на символ найденной опции.

Getopts возвращает true, если опция указана или не указана, обнаружена. Возвращает false если встречается конец опций или происходит ошибка.

hash [-lr] [-p filename] [-dt] [name]

Каждый раз когда вызывается hash, полный путь к имени команды определяется путем поиска в каталогах в $PATH и памяти. Любые ранее вспомненные пути имен отбрасываются. Если подставляется опция -p, поиск пути не выполняется и filename используется в качестве полного имени файла команды. Опция -r заставляет shell, забыть все сохраненные местоположения. Опция -d заставляет shell забыть расположение каждого имени. Если подставляется опция -t, печатается полный путь к каждому соответствующему имени. Если несколько имён аргументов подставляются с -t, name печатается перед хешированным полным путём. Опция -l заставляет выдавать результаты в формате, который может быть использован повторно в качестве входных данных. Если аргументы не указаны или если подставляется только -l, печатается информация о запомненных командах. Статус возврата true, если только имя не найдено или подставляется неправильная опция.

help [-dms] [pattern]

Отображает полезную информацию о встроенных командах. Если шаблон указан, help дает подробную информацию о всех командах совпадающих с шаблоном в ином случае help для всех встроенных команд и печати управления shell структур.

-d

Отображает краткое описание каждого шаблона.

-m

Отображает описание каждого шаблона в формате как у страницы руководства.

-s

Отображает только краткий обзор использования для каждого шаблона.

Статус выхода равен 0, если команда не соответствует шаблону.

history [n]

history -c

history -d offset

history -anrw [filename]

history -p arg [arg …]

history -s arg [arg …]

Если опции не заданы, показывает список команды истории с номерами строк. Линии перечисленные с ‘*‘ были изменены. Аргумент ‘n‘ перечисляет только последние ‘n‘ линий. Если установлена переменная HISTTIMEFORMAT и не является пустой, она используется в качестве строки форматирования strftime(3) для отображения метки времени ассоциированные с отображающейся записью истории. Не печатаются пустоты между отформатированной меткой времени и линией истории. Если подставляется имя файла, он используется в качестве имени файла истории, а если нет, то используется значение HISTFILE. Опции если они имеются, имеют следующие значения:

-c

Очистка списка истории, удалив все записи.

-d offset

Удалить запись журнала в положении смещения.

-a

Добавьте к «new» строки истории(строки истории входят с начала текущей сессии bash) к файлу истории.

-n

Читает строки истории еще не считанные из файла истории в текущий список истории. Это строки, присоединенные к файлу истории с начала текущей сессии bash.

-r

Читает содержимое файла истории и использует из в качестве текущей истории.

-w

Записывает текущую историю в файл истории, переписав содержимое файла хронологии.

-p

Выполняет подстановку истории в следующие аргументы и отображает результат на стандартный вывод. Не сохраняет результаты в списке истории. Каждый аргумент должен быть в кавычках, чтобы отключить нормальное расширение истории.

-s

Сохраняет аргументы в списке истории как одну запись. Последняя команда в списке журнала удаляется до добавления аргументов.

Если переменная HISTTIMEFORMAT установлена, информация метки времени связанная с каждой записью истории записывается в файл истории, обозначенный символом комментария истории. Когда файл истории читается, строки начинающиеся с символа комментария истории и цифры сразу за ним интерпретируются как временные метки для предыдущей линии истории. Возвращается значение 0, если встречается недопустимая опция, возникает ошибка при чтении или записи файла хронологии, недопустимое смещение поставляется в качестве аргумента -d или подставляется расширение истории в качестве аргумента -p не удаляется.

jobs [-lnprs] [ jobspec … ]

jobs -x command [ args … ]

Первая форма списка перечисленных активных работ. Опции имеют следующие значения:

-l

Список идентификаторов процессов в дополнение к обычной информации.

-n

Отображение информации только о заданиях, статус которых был изменен с момента последнего уведомления пользователя о статусе задания.

-p

Перечисляет список только идентификаторов процесса, заданий лидирующей группы процесса.

-r

Выдается только выполняющиеся задания.

-s

Выдаются только остановленные работы.

Если дается jobspec, выход ограничивается информацией о этой работе. Статус выхода равен 0, если встречается недопустимая опция или подставляется недопустимый jobspec.

Если подставляется опция -x, jobs заменяет любой jobspec найденный в команде или аргументах с соответствующими идентификаторами группы ID и выполняет команду передачи его аргументов, возвращая свой статус завершения.

kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] …

kill -l [sigspec | exit_status]

Посылает сигнал с именем sigspec или signum к процессам, именам pid или jobspec. sigspec это имя сигнала нечувствительного к регистру такое как SIGKILL (с префиксом SIG или без) или номером сигнала; signum является номером сигнала. Если sigspec отсутствует, предполагается SIGTERM. Аргумент -l приводит список имен сигналов. Если подставляются какие-либо аргументы когда дается -l, имена сигналов соответствующих аргументам в списке и возвращает статус 0. Статус выхода аргумента -l, число указывает либо номер сигнала или статус выхода процесса, прерванного сигналом. Уничтожает возврашаемое true, если по крайней мере один сигнал был успешно отправлен, или false если произошла ошибка или недопустимая опция.

let arg [arg …]

Каждый arg явяляется арифметическим выражением, которое необходимо вычислять. Если последний аргумент имеет значение 0, let возвращает 1; в ином случае возвращается 0.

local [option] [name[=value] …]

Для каждого аргумента, переменная local с именем name создает и присваивает value(значение). Опция может быть любой из принятых объявленных опций. При местном использовании внутри функции, она вызывает имя переменной, чтобы иметь выдимый контекст ограниченный этой функцией и порожденными ей. При отсутствии операндов, local пишет список локальных переменных в стандартный вывод. При использовании local вне функции происходит ошибка. Статус выхода равен 0, если local не используется вне функции, подставляется недопустимое имя, или вызывается только для чтения переменной.

logout

Выход из shell оболочки.

mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]

readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]

Читаются строки из стандартного ввода в индексированном массиве, переменной массива, или файла дескриптора fd если подставляется опция -u. Переменная MAPFILE, по умолчанию для массивов. Опции, если имеются, имеют следующие значения:

-n

Копируют большое количество строк. Если количество имеет значение 0, все строки будут скопированы.

-O

Начинает присвоение массива с индексом оригинала. Индекс по умолчанию 0.

-s

Отменяет первый прочитанный подсчёт строк.

-t

Удаляет завершающий символ новой строки из каждой прочитанной строки.

-u

Чтение строк из дескриптора файла fd вместо стандартного ввода.

-C

Вызывает callback каждый раз при чтении строк quantum. Опция -c указывает quantum.

-c

Указывает количество прочитанных строк между каждым вызовом для callback.

Если -C указана без -c, значение quantum по умолчанию 5000. Когда оценивается callback, он подставляет индекс следующего элемента массива, который будет назначен и строку которая будет присвоена этому элементу в качестве дополнительных аргументов. callback оценивается после чтения строки, но до того как присваивается элемент массива.

Если не поставляется с явным оригиналом, mapfile очищает массив перед его назначением.

mapfile успешно возвращается, если опция неправильная или аргумент опции не указан, массив является некорректным или неимеющим возможности быть переданным, или если массив является не индексированным.

popd [-n] [+n] [-n]

Удаляет записи из стека диалогов. Без аргументов, убирает верхний каталог из стека и выполняет cd к новому верхнему каталогу. Аргументы, если имеются, имеют следующие значения:

-n

Подавляет нормальное изменение каталога при удалении каталога из стека, так что только изменяется только содержимое стека.

+n

Удаляет n-ую запись из левой части стека каталогов, начиная с нуля. Например: ‘popd +0‘ удаляет первый каталог, ‘popd +0‘ второй.

-n

Удаляет n-ую запись из правой части стека каталогов, начиная с нуля. Например: ‘popd +0‘ удаляет последний каталог, ‘popd +0‘ рядом с последним.

Если команда popd успешна, каталоги также выполняются, и возвращают статус 0. popd возвращает false если опция недопустима, стек каталогов пуст, не существует указанная запись стека каталогов или нет измененной директории.

printf [-v var] format [arguments]

Пишет отформатированные аргументы на стандартный вывод в соответствии с форматом управления. Опция -v вызывает выход для назначения переменной var, не печатающейся на стандартный вывод. Форматом является строка символов, которая содержит три типа объектов: обычные символы, которые просто копируются в стандартный вывод, символ управляющих последовательностей, которые преобразуются и копируются в стандартный вывод и спецификации формата, каждый из которых вызывает печать очередного аргумента. В дополнение к стандартной printf(1) спецификации формата, printf интерпретирует следующие расширения:

%b

заставляет printf расширить обратный слеш управляющей последовательности в соответствующий аргумент (кроме того что \c завершает выход, обратная косая черта в \’, , и \? не удаляются и восьмеричные экранируются начиная с \0 может содержать до четырех цифр.

%q

вызывает printf для вывода соответствующего аргумента в формате, который может быть использован повторно в качестве входных данных shell.

%(datefmt)T

вызывает printf для вывода даты и времени строки в результате использования datefmt в виде строки формата для strftime(3). Соответствующий аргумент является целым числом, представляет число секунд с начала времени. Могут быть использованы два специальных значения аргументов: -1 представляет текущее время, и -2 представляет время вызова shell.

Аргументы нестроковых спецификаторов формата рассматриваются как C констант, кроме того что ведущий плюс или минус разрешен, а если лидирующий символ является одиночной или двойной кавычкой, значение является ASCII следующих символов.

Формат используется повторно по мере необходимости, чтобы потреблять все аргументы. Если формат требует больше аргументов, чем поставляемые спецификации лишнего формата ведёт себя так как будто значение нулевое или строка пуста, в случае необходимости подставляется. Возвращает ноль в случае успеха, не ноль в случае неудачи.

pushd [-n] [+n] [-n]

pushd [-n] [dir]

Добавляет каталог на вершину стека каталогов или перекладывает стек делая новую вершину стека текущим рабочим каталогом. Без аргументов, меняет местами два верхних каталога и возвращает 0, если стек каталогов не пустой. Аргументы, если имеются, имеют следующие значения:

-n

Отключает нормальное изменение каталога при добавлении каталогов в стек, так что действия выполняются только со стеком.

+n

Поворачивает стек так, что n-ый каталог (считая от левой части списка каталогов, начиная с нуля) становится вершиной.

-n

Поворачивает стек так, что n-ый каталог (считая от правой части списка каталогов, начиная с нуля) становится вершиной.

dir

Добавляет каталог в вершину стека каталогов, делая его текущим рабочим каталогом.

Если команда pushd успешная, выполняется команда dirs. Если используется первая форма, pushd возвращает 0, если переход в директорию не удаётся. Во второй форме pushd возвращает 0, если стек каталогов не пустой, не существует указанный элемент стека каталогов или удается изменение каталога в указанный новый каталог.

pwd [-LP]

Печатает абсолютный путь текущего рабочего каталога. Имя печатаемых путей, не содержит символические ссылки, если подставляется опция -P или физическая опция —o ко встроенной команде set включена. Если используется опция -L, печатаемый путь может содержать символические ссылки. Статус выхода равен 0, если не возникает ошибка при чтении имени текущего каталога или подставляется недопустимый параметр.

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]

Одна строка читается из стандартного ввода, или из подставляется из файлового дескриптора fd в качестве аргумента опции -u, и присваивается первое слово первому имени(name), второе слово второму имени(name) и тд. оставшиеся слова и их промежуточные сепараторы применяются к последнему имени. Если из входного потока считывается меньше слов чем есть имен(name), оставшимся именам(name) присваиваются пустые значения. Символы в IFS используются для разделения строк в слова. Символ обратной косой черты ‘\‘ может быть использован для удаления специального значения для следующего читающегося символа и для продолжения строки. Опции в том случае если они имеются, имеют следующие значения:

-a aname

Словам присваиваются последовательные индексы массива переменных aname, начиная с 0. aname не установлена до того как присваиваются новые значения. Другие имена аргументов игнорируются.

-d delim

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

-e

Если используется стандартный ввод из терминала, readline используется для получения строки. Readline использует текущие настройки редактирования.

-i text

Если redline используется для чтения строки в настоящее время, текст размещается в буфер редактирования до начала редактирования.

-n nchars

Чтение возвращается после прочтения символов nchars, не дожидаясь полной строки ввода, но учитывая разделитель, если меньшая часть символов nchars читаются до разделителя.

-N nchars

Чтение возвращается после прочтения именно символов nchars, не дожидаясь полной строки ввода, если EOF не встречается или читается на вывод. Разделяющие символы встречающиеся во входящих данных не рассматривается особо и не вызывает возвращение чтения, пока символы nchars не читаются.

-p prompt

Показать запрос в стандартный поток ошибок, без завершающего символа новой строки, перед тем как читать любой вход. Командная строка отображается, только если вход идёт из терминала.

-r

Обратная косая черта не выступает в качестве экранируещего символа. Обратная косая черта считается частью строки. В частности, пара обратный слеш-новая строка не может быть использована в качестве продолжения строки.

-s

Бесшумный режим. Если ввод происходит с терминала, символы не повторяются.

-t timeout

Способ чтения времени вывода и возвращения неудачи, если полная строка ввода не читается за определенное время в секундах. timeout может быть десятичным числом с дробной частью после запятой. Эта опция действует только тогда когда происходит чтение ввода с терминала, перенаправления или другого специального файла, он не имеет никакого эффекта при чтении с обычных файлов. Если timeout 0, чтение возвращает успех, если вход доступен на указанном дескрипторе файла, в ином случае неудача. Статус выхода больше чем 128, если время ожидания превышено.

-u fd

Читает ввод из файлового дескриптора fd.

Если имена(names) не заданы, то прочитанная строка присваивается переменной REPLY. Код возврата равен нулю, пока конец файла не встретится с читающимся выходом, или ошибочный дескриптор файла подставляется в качестве аргумента -u.

readonly [-aAf] [-p] [name[=word] …]

Данные имена обозначены только для чтения; значения этих имен не может быть изменены последующими требованиями. Если подставляется опция -f, функции соответствующие именам(name) отмечаются. Опция -a ограничивает переменные индексированных массивов; опция -A ограничивает переменные дял ассоциативных массивов. Если подставляются обе опции, приоритет имеет -A. Если имена аргументов не заданы, или если подставляется опция -p, список всех readonly имен печатается. Другие опции могут быть использованы для ограничения на подмножество, множества доступных только для чтения имен. Опция -p вызывает выход, который будет отображаться в формате, который может быть повторно использован в качестве ввода. Если за именем переменной следует =word, значение переменной устанавливается word. Статус выхода равен 0, если встречается недопустимая опция, одно из имен(name) не является допустимым именем переменной shell или -f подставляется с именем которое не является функцией.

return [n]

Вызывает функцию для выхода с возвращаемым значением указанным в ‘n‘. Если ‘n‘ опущен, возвращается статус последней выполненной команды в теле функции. При использовании вне функции, но во время исполнения сценария ‘.‘ (исходный код) команда, это указывает shell прекратить выполнение скрипта и возвращает либо ‘n‘ либо статус выхода последней выполненной команды в сценарии в качестве кода выхода из скрипта. При использовании ‘.‘ вне функции, а не во время выполнения скрипта, возвращается статус ошибки. Любые команды связанные с RETURN выполняется trap, перед выполнением, возобновляется после функции или скрипта.

set [—abefhkmnptuvxBCEHPT] [-o option-name] [arg …]

set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg …]

Без опций, имя и значение каждой переменной shell отображается в формате, которые могут быть использованы повторно в качестве входящих данных для установки или сброса установленных переменных. Переменные для чтения не могут быть сброшены. В posix режиме только shell переменные перечисляются. Вывод сортируется в соответствии с текущей локалью. Когда задаются параметры, они устанавливают и отключают shell атрибуты. Любые аргументы, оставшиеся после обработки опций, рассматриваются в качестве значений позиционных параметров и выстраиваются порядком $1, $2, … $n. Опции, если они указаны, имеют следующие значения:

-a

Автоматически отметить переменные и функции, которые изменены или созданы для экспорта в среде последующих команд.

-b

Отчёт о состоянии прерванных фоновых заданий выдается немедленно, а не перед следующим первичным приглашением. Это эффективно только когда включено управление заданиями.

-e

Выходит немедленно, если перенаправление(которое может состоять из одной простой команды), команда подоболочки заключена в скобки, или одна из команд, выполняемых в рамках списка команд заключенных в фигурные скобки выходит с нулевым статусом. Shell не выходит, если команда не является частью списка команд, сразу после или до ключевого слова, частью текста следующей за зарезервированными словами if или elif, частью команды выполненной в && или || списке, кроме команды следующей в финале && или ||, любой команды в перенаправлении, но последнее или возвращаемое значение команды будет инвертированным вернувшимся значением с ‘!‘. Прерывание ERR если установлено, выполняется перед выходом shell. Эта опция применяется к среде shell и каждой подоболочки shell отдельно и может привести подоболочку к выходу, перед выполнением всех команд в подоболочке.

-f

Отключает расширение имен путей к файлам.

-h

Запомнить расположение команд, как оно выглядит для расположения на исполнение. Включено по умолчанию.

-k

Все аргументы в форме операторов присваивания размещены в среде выполнения команды, а не только те которые предшествуют имени команды.

-m

Режим мониторинга. Управление заданиями включено. Эта опция включена по умолчанию для интерактивных оболочек на системах которые её поддерживают. Фоновые процессы выполняются в отдельной группе процессов и строка содержащая их статус выхода, печатается после завершения их разработки.

-n

Читать команды, но не выполнять их. Это может быть игнорировано для проверки скрипта на синтаксические ошибки. Это игнорируется интерактивными оболочками.

-o option-name

option-name может быть одним из слудующих:

allexport

То же, что -a.

braceexpand

То же, что -B.

emacs

Использовать emacs-style редактирования командной строки. Это включено по умолчанию, в интерактивной оболочке, если shell не запускается с опцией —noediting.Это так же влияет на интерфейс редактирования, используемый для чтения -e.

errexit

То же, что -e.

errtrace

То же, что -E.

functrace

То же, что -T.

hashall

То же, что -h.

histexpand

То же, что -H.

history

Включает историю команд, как описано ранее в разделе HISTORY. Эта опция включена по умолчанию в интерактивных оболочках.

ignoreeof

Эффект как если бы shell команда ‘IGNOREEOF=10‘ была уничтожена.

keyword

То же, что -k.

monitor

То же, что -m.

noclobber

То же, что -C.

noexec

То же, что -n.

noglob

То же, что -f.

nolog

В настоящее время игнорируется.

notify

То же, что -b.

nounset

То же, что -u.

onecmd

То же, что -t.

physical

То же, что -P.

pipefail

Если установлено, возвращаемое значение перенаправления, является значением (правой) последней) команды, для выхода с ненулевым статусом или нулем, необходимо чтобы все команды перенаправления были успешны. Эта опция по умолчанию отключена.

posix

Изменение поведения bash, где операции по умолчанию отличаются от стандарта POSIX, для соответствия стандарту(posix режима).

privileged

То же, что -p.

verbose

То же, что -v

vi

Использование vi-style редактирования командной строки. Это также влияет на интерфейс редактирования используемый для чтения -e.

xtrace

То же, что -x.

If -o

Подставляется без каких-либо опций-имен (option-name), печатаются значения текущих настроек.

If +o

Подставляется без каких-либо опций-имен (option-name), серия набора команд воссоздания текущих параметров настройки отображается на стандартный вывод.

-p

Включить в привелигированном режиме. В этом режиме файлы $ENV и $BASH_ENV не обрабатываются, shell функции не наследуются из окружающей среды, и переменные SHELLOPTS, BASHOPTS, CDPATH, и GLOBIGNORE, если появляются в окружающей среде, игнорируются. Если shell запускается с эффективным пользователем id(группы) которого не совпадает с реальным пользователем id(группы) и опция -p не указана, эти действия предпринимаются и эффективный идентификатор пользователя устанавливается в режиме реального идентификатора пользователя. Если при запуске подставляется опция -p, эффективный идентификатор пользователя не сбрасывается. Выключение этой опции указывает эффективным пользовательским и групповым ids, быть установленными на реальных пользователей и группы ids.

-t

Выход после прочтения и выполнения одной команды.

-u

Относится к неустановленным переменным и другим специальным параметрам ‘@‘ и ‘*‘ как к ошибке при выполнении расширения параметра. Если происходит попытка расширения происходит на отключённой переменной или параметре, shell печатает сообщение об ошибке и если shell не является интерактивной, завершает работу с нулевым статусом.

-v

Выдаёт строки shell ввода по мере их считывания.

-x

После расширения каждой простой команды, для команды, случайной команды, выбора команды, или арифметического расширения для команды, отображается расширенное значение PS4, а затем с помощью команды и расширения её аргументов или связанный список слов.

-B

Shell выполняет фигурные скобки. Это по умолчанию.

-C

Если установлено, bash не перезаписывает существующий файл с операторами перенаправления ‘>‘, ‘>&‘, и ‘<>‘. Это может быть переопределено при создании входных файлов с помощью оператора перенаправления ‘>|‘ вместо ‘>‘.

-E

Если установлено, любой захват ERR наследуется функцией shell, подстановкой команд и командами выполненными в среде подоболочки. Захват ERR как правило, не наследуется в таких случаях.

-H

Включить ‘!‘ историю замены стиля. Эта опция включена по умолчанию, когда shell является интерактивной.

-P

Если установлено, shell не следует символическим ссылкам при выполнении команд, таких как ‘cd‘, изменяющих текущий рабочий каталог. Вместо этого он использует физическую структуру каталогов. По умолчанию, bash следует логической цепочке каталогов при выполнении команд, которые изменяют текущий каталог.

-T

Если установлено, любой захват DEBUG и RETURN возвращается наследуемой функцией оболочки, команды подстановки и команды выполненные в среде подоболочки. Захват DEBUG и RETURN, как правило, не наследуется в таких случаях.

Если нет аргументов следующих этой опции, то сбрасываются позиционные параметры. В ином случае, позиционные параметры устанавливаются с аргументами, даже если некоторые из них начинаются с ‘‘.

Сигнал окончания опций, вызывает все остальные аргументы, которые будут назначены в позиционные параметры. Опции -x и -v выключены. Если нет аргументов, позиционные параметры остаются неизменными.

Параметры по умолчанию отключены, если не указано иное. Использование ‘+‘, а не ‘‘ указывает что эти опции должны быть выключены. Эти параметры также могут быть указаны в качестве аргументов вызова оболочки. Текущий набор опций можно найти в ‘$-‘. Статус возврата всегда истинно, если встречается недопустимая опция.

shift [n]

Позиционные параметры из ‘n+1 …‘ переименовываются в ‘$1 …‘. Параметры представленные номерами ‘$#’, ‘$#-n+1‘ сбрасываются. ‘n‘ должно быть неотрицательным числом, меньшим или равным ‘#$‘. Если ‘n‘ равен 0, параметры не изменяются. Если ‘n‘ не задан, то предполагается что 1. Если ‘n‘ больше чем ‘№$‘, позиционные параметры не изменяются. Статус возврата больше нуля, если ‘n‘ больше ‘$#‘ или меньше нуля, в ином случае 0.

shopt [-pqsu] [-o] [optname …]

Переключает значения переменных, контролирующих дополнительное поведение shell. Если опции не заданы, или заданы с опцией -p, отображается список всех устанавливаемых опций, с индикацией каждого установленного. Опция -p вызывает выход, который будет отображаться в форме, которая может быть повторно использована в качестве ввода. Другие опции имеют следующие значения:

-s

Включить (установить) все указанные опции.

-u

Отключить все указанные опции.

-q

Подавляет нормальный вывод(автоматический режим); возвращает статус индикации, указывает являются ли указанные опции устанавливающимися или отключающимися. Если несколько аргументов указаны с предоставленой опцией -q, возвращается статус ноль, если все имена опций включены; иначе нулевой статус.

-o

Ограничивает значения указанных опций, будь те определены опцией -o в встроенной команде set.

Если используется -s или -u с неуказанными опциями аргументов, дисплей ограничивается этими опциями, которые устанавливаются или не устанавливаются соответственно. Если не указано иное, опции shopt отключены по умолчанию.

Статус возврата при перечислении опций равен нулю, если все имена опций включены, в ином случае не ноль. При установке или отключении опций, возвращается статут ноль, если указанные опции не являются допустимой shell опцией.

Список опций shopt:

autocd

Если установлено, имя команды является именем выполняющейся директории, как если бы это был аргумент к команде cd. Эта опция используется только интерактивной оболочкой.

cdable_vars

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

cdspell

Если установлено, незначительные ошибки в написании компонентов каталогов в команде cd будут исправлены. Ошибки проверяются для переставленных символов, недостающего символа и одного лишнего символа. Если необходимая коррекция найдена, исправленное имя файла печатается и команда применяется. Эта опция используется только интерактивными оболочками.

checkhash

Если установлено, bash проверяет находится ли команда в существующей хеш-таблице, перед попыткой его выполнения. Если хеш команда больше не существует, выполняется нормальный путь поиска.

checkjobs

Если установлено, bash перечисляет статус любых остановленных и запущенных заданий, перед выходом из интерактивной оболочки. Если все задания работают, это приводит к выходу, который будет отложен до второго выхода, без попытки промежуточной команды. Shell всегда откладывает выход, если все задания остановлены.

checkwinsize

Если установлено, bash проверяет размер окна после каждой команды и при необходимости, обновляет значения LINES и COLUMNS.

cmdhist

Если установлено, bash пытается сохранить все строки многострочной команды в одной записи строки истории. Это позволяет легко повторно редактировать многострочные команды.

compat31

Если установлено, bash меняет свое поведение, на то что в версии 3.1 по отношению к цитируемым аргументам ‘[[‘ условным командам ‘+~‘ оператора.

compat32

Если установлено, bash меняет своё поведение на то что в версии 3.2 по отношению к данной спецификации локали сравнение строк при использовании ‘[[‘ условных команд ‘< ‘ и ‘>‘ операторов. Bash версии до bash-4.1использует ASCII сортировки и strcmp(3); bash-4.1 и затем использовать параметры сортировки текущей локальной последовательности сортировки и strcoll(3).

compat40

Если установлено, bash меняет своё поведение на то что в версии 3.2 по отношению к данной спецификации локали сравнение строк при использовании ‘[[‘ условных команд ‘< ‘ и ‘>‘ операторов и эффект прерывания списка команд.

compat41

Если установлено, bash находясь в режиме posix, рассматривает одну кавычку в расширении параметров двойных кавычек, в качестве специального символа. Одиночные кавычки должны совпадать (тоесть их должно быть четное число) и символы между одиночными кавычками, считаются кавычками. Это поведение posix режима версии 4.1. По умолчанию поведение bash остается таким как в предыдущих версиях.

direxpand

Если установлено, bash заменяет имена каталогов результатами расширения слов при завершении имени файла. Это приводит к изменению содержимого буфера редактирования readline. Если не установлен, bash пытается сохранить то что ввел пользователь.

dirspell

Если установлено, bash пытается провести проверку правописания имен каталогов во время завершения слов, если имя каталога который изначально подставляется не существует.

dotglob

Если установлено, bash включает имена начинающиеся с ‘.‘ в результатах расширения имён файлов.

execfail

Если установлено, не интерактивная оболочка не выходит, если она не может выполнить файл, указанный в качестве аргумента встроенной команды exec. Интерактивная оболочка не выходит, если exec не удаётся.

expand_aliases

Если установлено, псевдонимы(alias) расширяются, как я это описывал ранее в разделе Псевдонимы. Эта опция включена по умолчанию, для интерактивных оболочек.

extdebug

Если установлено, поведение предназначенное для использования отладчиков включено:

  1. Опция -F указывает встроенной команде declare отображать имя исходного файла и номер строки, соответствующий каждому имени файла как аргумент.

  2. Если команда run захвата DEBUG, возвращает ненулевое значение, следующая команда пропускается и не выполняется.

  3. Если команда run захвата DEBUG возвращает значение 2, и shell выполняется в подпрограмме (shell функция или скрипт выполняет ‘.‘ или встроенные команды source), симулируется вызов возврата.

  4. BASH_ARGC и BASH_ARGV обновляется, как описано в описаниях ранее.

  5. Трассировка функции включена: замена команд, shell функций, и подоболочек вызывающихся с командой, наследуют, захват DEBUG и RETURN.

  6. Трассировка ошибок включена: замена команд, shell функций, и подоболочек вызывающихся с командой, наследуют, захват ERR.

extglob

Если установлено, расширяет совпадение шаблонов функций, описанное ранее в разделе Расширение путей имен.

extquote

Если установлено, $’string’ и $»string» кавычки производяется в пределе ${parameter} расширения заключенного в двойные кавычки. Эта опция включена по умолчанию.

failglob

Если установлено, шаблоны которые не соответствуют именам файлов в результате расширения имен путей, приводят к ошибке расширения.

force_fignore

Если установлено, суффиксы указанные в переменной FIGNORE, указывает словам игнорироваться при выполнении завершения слов, даже если игнорирующиеся слова являются единственным возможным завершением. Описание FIGNORE я писал ранее в разделе Shell переменных. Эта опция включена по умолчанию.

globstar

Если установлено, то шаблон ‘**‘ используется в расширения имён путей файлов, контекст будет соответствовать всем файлам и нулю или более каталогов и подкаталогов. Если шаблон сопровождается ‘/‘, соответствуют только каталогам и подкаталогам.

gnu_errfmt

Если установлено, сообщения об shell ошибках записываются в стандартном формате сообщения ошибки GNU.

histappend

Если установлено, список истории добавляется имя файла значением переменной HISTFILE, при завершении оболочки, а не перезаписывании файла.

histreedit

Если установлено и используется readline, пользователь получает возможность повторно редактировать неудачную подстановку истории.

histverify

Если установлено и используется readline, результаты подстановки истории не сразу переходят к анализатору командного интерпретатора. Вместо этого результат строки загружается в буфер редактирования readline, что позволяет дальнейшую модификацию.

hostcomplete

Если установлено, и используется readline, bash пытается выполнить завершение имени хоста, когда завершается слово содержащее ‘@‘. Это включено по умолчанию.

huponexit

Если установлено, bash посылает SIGHUP всем заданиям когда интерактивная оболочка разлогинивается.

interactive_comments

Если установлено, разрешает слово начинающееся с ‘#‘, для вызова слова и все оставшиеся символы в этой строке игнорировать в интерактивной оболочке. Эта опция включена по умолчанию.

lastpipe

Если установлено, и управление заданиями не активно, shell запускает последнюю команду перенаправления не выполняющуюся в фоновом режиме в среде текущей оболочки.

lithist

Если установлено, и включена опция cmdhist, мультикоманды сохраняются в истории со встроенными символами новой строки, вместо использования точки с запятой, где это возможно.

login_shell

Shell устанавливает эту опцию, если он запущен в качестве регистрационной оболочки. Значение не может быть изменено.

mailwarn

Если установлено, и файл которым bash проверяет почту был доступен с момента как он был последний раз установлен, отображается сообщение «The mail in mailfile has been read».

no_empty_cmd_completion

Если установлено, и используется readline, bash не будет пытаться искать PATH для возможных завершений, когда завершение происходит на пустой строке.

nocaseglob

Если установлено, bash использует способ совпадения имён файлов без учёта регистра, при выполнении подстановки имён файлов.

nocasematch

Если установлено, bash соответствует шаблонам без учета регистра, когда выполняется соответствие при выполнении случайной или ‘[[‘ условной команды.

nullglob

Если установлено, bash позволяет шаблонам, которые не соответствуют ни одному файлу, расширяться до пустой строки, а не самой себя.

progcomp

Если установлено, программируемые объекты завершения включены. Эта опция включена по умолчанию.

promptvars

Если установлено, быстрые строки подвергаются расширению параметров, замещению команд, арифметическому расширению и удалению кавычек после расширения, как это описывалось ранее. Эта опция включена по умолчанию.

restricted_shell

Наборы shell, эта опция, если shell запущен в ограниченном режиме. Значение не может быть изменено. Это не удаляется, когда выполняются файлы запуска, позволяя файлам запуска обнаружить есть или нет shell ограничения.

shift_verbose

Если установлено, то встроенная команда shift(сдвиг) печатает сообщение об ошибке, когда сдвиг превышает число позиционных параметров.

sourcepath

Если установлено, встроенная команда source (.) использует значение PATH, чтобы найти каталог, содержащий файл, подставляемый в качестве аргумента. Эта опция включена по умолчанию.

xpg_echo

Если установлено, встроенная команда echo расширяет обратный слеш управляющей последовательности по умолчанию.

suspend [-f]

Приостановить выполнение этой оболочки, пока не поступит сигнал SIGCONT. Ввод логина в shell не может быть приостановлен: опция -f может быть использована для переопределения этого и заставить выполнить приостановку. Статус выхода равен 0, если shell не во время ввода логина, и -f не подставляется, или если управление заданиями не включено.

test expr

[ expr ]

Возвращает статус 0 или 1 в зависимости от оценки условного выражения expr. Каждый оператор и операнд должен быть отдельным аргументом. Выражения состоят из предварительных, описанных ранее в Условных выражениях. Test не принимает никаких опций, а также не принимает и игнорирует аргумент ‘‘ который означает конец опций.

Выражения могут быть объединены с помощью следующих операторов, перечисленных в порядке убывания приоритета. Оценка зависит от количества аргументов; описано ниже. Приоритет операторов используется, когда есть пять или больше аргументов.

! expr правда если expr ложно.

( expr )

Возвращает значение expr. Это может использоваться для переопределения обычного приоритета операторов.

expr1 -a expr2

Истинно если оба expr1 и expr2 истинны.

expr1 -o expr2

Истинно если либо expr1, либо expr2 истинно.

test и ‘[‘ оценивает условные выражения, используя набор правил в зависимости от количества аргументов.

0 аргументов

Выражение ложно.

1 аргумент

Выражение истинно, если и только если аргумент не является нулевым.

2 аргумента

Если первый аргумент ‘!‘, выражение истинно, если и только если второй аргумент не равен нулю. Если первый аргумент является одним из унарных условных операторов, которые перечисленны выше в «Условных выражениях», выражение истинно, если унарный тест верен. Если первый аргумент не является допустимым унарным условным оператором, выражение ложно.

3 аргумента

Следующие условия применяются в указанном порядке. Если второй аргумент является одним из бинарных условных операторов, перечисленных ранее, в «Условных выражениях», результат выражения является результатом бинарного теста с использованием первого и третьего аргументов в качестве операндов. Операторы ‘-a‘ и ‘-o‘ считаются бинарными операторами, когда есть три аргумента. Если первый аргумент ‘!‘, значение является отрицанием теста двух аргументов, используя второй и третий аргументы. Если первый аргумент exactly (и третий аргумент exactly), то результатом будет тест одного второго аргумента. В ином случае, выражение ложно.

4 аргумента

Если первый аргумент ‘!’, результатом является отрицание выражения трех аргументов, состоящее из оставшихся аргументов. В ином случае, выражение анализируется и оценивается в соответствии с приоритетом, используя правила, перечисленные ранее.

5 или больше аргументов

Выражение разбирается и оценивается в соответствии с приоритетом, используя правила, перечисленные ранее.

Когда используется с test или ‘[‘, операторы ‘< ‘ и ‘>‘ сортируются лексикографически, используя порядок ASCII.

times

Распечатать накопленное время пользователя и системное время для shell, и для процессов запускаемых из командной строки. Статус выхода равен 0.

trap [-lp] [[arg] sigspec …]

Команда ‘arg‘ должна рассматриваться и выполняться, когда shell получает сигнал(ы) sigspec. Если arg отсутствует (и есть один sigspec) или ‘‘, каждый указанный сигнал сброса в исходное расположение (значение что было на входе в shell). Если ‘arg‘ является пустой строкой, сигнал указанный каждой sigspec, игнорируется shell и вызывающимися командами. Если ‘arg‘ не присутствует и -p был подставлен, то отображается trap команда связанная с каждой sigspec. Если аргументы не подставляются или если только -p задано, trap печатает список команд, связанных с каждым сигналом. Опция -l указывает shell, распечатать список имён сигналов и их номера. Каждый sigspec либо имя сигнала определяется в , или номере сигнала. Названия сигналов не зависят от регистра и префикс SIG является обязательным.

Если sigspec является EXIT (0) команда arg выполняется при выходе из shell. Если sigspec является DEBUG, команда ‘arg‘ выполняется перед каждой простой командой, для команды, случайной команды, выбора команды, каждого арифметического сдвига команды и до первой выполненной команды в shell функции. Обращается к описанию опции extdebug, встроенной команды shopt, для деталей его влияния на DEBUG trap. Если sigspec является RETURN, команда ‘arg‘ выполняется каждый раз shell функцией или выполняющимся скриптом с ‘.‘ или исходным кодом встроенной команды заканчивающей выполнение.

Если sigspec является ERR, команда arg выполняется всякий раз когда простая команда имеет не нулевой статус выхода, при условии соблюдения следующих условий. ERR trap не выполняется, если не удаётся команда являющаяся частью списка команд следующая сразу после или до ключевого слова, частью теста в утверждении, частью команды выполненной в ‘&&‘ или ‘||‘ списке, или если возвращаемое значение команд будет инфертироваться через ‘!‘. Это те же самые условия, которым подчиняется опция errexit.

Сигналы игнорирующиеся при входе в shell не могут задерживаться или сбрасываться. Trapped сигналы, которые не были проигнорированы, сбрасываются в исходное значение в подоболочке или среде выполнения подоболочки, когда она создаётся. Статус возврата ложно, если любой sigspec является недействительным, в ином случае trap возвращает верно.

type [-aftpP] name [name …]

Если опции не заданы, указывает как каждое имя будет интерпретироваться, если использовать в качестве команды name. Если используется опция -t, type выводит строку которая является одним из псевдонимов(alias), ключевым словом, функцией, встроенной командой или файлом, если name является псевдонимом(alias), соответственно зарезервированным словом shell, функцией, встроенной командой или файлом на диске. Если name не найдено, то ничего не печатается, а статус выхода возвращается ложно. Если используется опция -p, type либо возвращает имя(name) файла на диске, которое будет выполняться, если имя(name) было указано в качестве имени команды, или ничего если ‘type -t name‘ не возвращает файл. Опция -P указывает PATH поиска для каждого имени(name), даже если ‘type -t name‘ не возвращает файл. Если команда хешируется, -p и -P печатает значение хеш, не обязательно файла который появляется первым в PATH. Если используется опция -a, type печатает все из мест, которые содержат исполняемое имя файла. Это включаем в себя псевдонимы(alias) и функции, если и только если не используется также опция -p. Таблица хешированных команд не опрашивается, при использовании -a. Опция -f, подавляет shell функцию lookup, как с помощью встроенной команды. Type возвращает истину, если все аргументы будут найдены, ложь если они не найдены.

ulimit [-HSTabcdefilmnpqrstuvx [limit]]

Обеспечивает управление ресурсами доступными shell и процессами запущенными ей на системах которые позволяют такой контроль. Опции -H и -S указывают, что для данного ресурса установлен hard или soft лимит. Hard лимит не может быть увеличен без помощи суперпользователя, soft лимит может быть увеличен до hard лимита. Если не задано ни -H ни -S, устанавливаются оба ограничения как soft так и hard. Значение лимита может быть числом в unit для ресурса или одной из специальных значений hard, soft или unlimited, которые стоят на текущее hard ограничение, текущее soft ограничение, и на отсутствие ограничений соответственно. Если limit опускается, текущее значение soft ограничения ресурса печатается, если не задается опция -H. Если указано более одного ресурса, название limit и unit печатается перед значением. Другие опции интерпретируются следующим образом:

-a

Сообщаются все текущие лимиты.

-b

Максимальный размер буфера обмена соккета.

-c

Максимальный размер создаваемых core файлов.

-d

Максимальный размер сегмента данных процесса.

-e

Максимальный приоритет планирования («nice»)

-f

Максимальный размер файлов записанных shell и порождёнными ею.

-i

Максимальное число ожидающих сигналов.

-l

Максимальный размер, который может быть заблокирован в памяти.

-m

Максимальный размер резидентного набора(многие системы не соблюдают этот лимит).

-n

Максимальное число открытых файловых дескрипторов (большинство систем не позволяют установить это значение).

-p

Размер перенаправления в блоках по 512 байт (это не может быть установлено).

-q

Максимальное количество байт в очереди posix сообщений.

-r

Максимальный приоритет планирования реального времени.

-s

Максимальный размер стека.

-t

Максимальный объем процессорного времени в секундах.

-u

Максимальное количество процессов доступное для одного пользователя.

-v

Максимальный объём виртуальной памяти, доступной для shell, и в некоторых системах для порожденных shell процессов.

-x

Максимальное число блокировок файлов.

-T

Максимальное количество потоков.

Если задаётся limit, это является новым значением указанного ресурса (отображается толко опция -a). Если опции не заданы, то предполагается -f. Значение с шагом в 1024-байт, кроме -t, которое в секундах, -p, которое в единицах блоков по 512-байт и -T, -b, -n, и -u, которые являются немасштабированными значениями. Статус выхода равен 0, если опция неправильная или аргумент не указан, или произошла ошибка при установке нового лимита.

umask [-p] [-S] [mode]

Пользовательские маски для создания файлов установленных в mode. Если mode начинается с цифры, то он интерпретируется как восьмеричное число, в ином же случае он интерпретируется как маска в символьном режиме(mode), аналогичном тому что принят в chmod(1). Если режим(mode) не указан, то печатается текущее значение маски. Опция -S указывает маскам быть напечатанными в символической форме; выводом по умолчанию является восьмеричное число. Если подставляется опция -p, и режим(mode) не указан, вывод происходит в форме, которая может быть повторно использована в качестве входящих данных. Статус выхода равен 0, если режим(mode) был успешно изменен или если не был подставлен режим(mode) argument, в ином случае ложным.

unalias [-a] [name …]

Удаляет каждое имя из списка определенных псевдонимов(alias). Если подставляется -a, все определения псевдонимов удаляются. Возвращаемое значение верно, если предоставленное имя не определённый псевдоним.

unset [-fv] [name …]

Для каждого имени(name), удаляет соответствующую переменную или функцию. Если опции не указаны, или задана опция -v, каждое имя(name) относится к переменной shell. Переменная только для чтения, не может быть освобождённой. Если указано -f, каждое имя(name) относится к функции shell и удаляется определение функции. Каждая заданная переменная или функция удаляется из окружающей среды, передающейся на последующие команды. Если любой из COMP_WORDBREAKS, RANDOM, SECONDS, LINENO, HISTCMD, FUNCNAME, GROUPS, или DIRSTACKсбрасявается, они теряют свои специальные свойства, даже если они в последствии сбрасываются. Статус выхода верно, только если name для чтения.

wait [n …]

Ждет каждый указанный процесс и возвращает его код завершения. Каждый ‘n‘ может быть ID процесса или спецификацией задания; если спецификация задания задана, все процессы в перенаправлении ждут. Если ‘n‘ не задан, все текущие активные дочерние процессы ожидают и возвращают статус равный нулю. Если ‘n‘ указывает несуществующий процесс или работу, возвращается статус 127. В ином случае, возвращается статус выхода, статуса выхода последнего процесса или ожидающей работы.

Расширение истории в bash

Shell поддерживает функцию расширения истории, которая похожа на расширение истории в csh. В этом разделе описываются доступные функции синтаксиса. Эта функция включена по умолчанию для интерактивных оболочек и может быть отключена при помощи опции +H встроенной команды set (Встроенные команды я буду описывать в дальнейшем). Неинтерактивные оболочки не выполняют расширение истории по умолчанию.

Расширение истории выводит слова из списка истории в входной поток, что позволяет с лёгкостью повторять команды, вставку аргументов предыдущей команды в текущую строку ввода, или быстро исправлять ошибки в предыдущих командах.

Расширение истории выполняется сразу же после полного чтения строки, до того как shell разбивает его на слова. Это происходит в двух частях. Первая определяет какую строку из списка истории использовать при замене. Вторая заключается в выборе части этой строки для включения в текущую строку. Выбранная строка из истории является событием, и частью из этой строки, которая действовала на слова. Различные модификаторы доступны для манипулирования выбранными словами. Строка разбивается на слова тем же образом, что при чтении ввода, так что несколько слов метасимволов, заключённых в кавычки, являются одним словом. Расширение истории вводится появлением расширения истории символа, который является по умолчанию «!». Только обратная косая черта «\» и одинарные кавычки могут указывать символ расширения истории.

Несколько символов препятствуют расширению истории, если находятся сразу же после символа расширения истории, даже если он без кавычек: пробел, табуляция, символ новой строки, возврат каретки и «=». Если включена shell опция extglob, «(» так же будет препятствовать расширению.

Несколько shell опций устанавливаемые со встроенной командой shopt могут быть использованы для адаптации поведения расширения истории. Если включена shell опция histverify (описание Встроеной команды shopt я буду писать в дальнейшем) и используется readline, история замены не сразу переходит к анализатору командного интерпретатора. Вместо этого расширение строки перезагружается в readline буфера редактирования для дальнейшей модификации. Если используется библиотека readline, и включена shell опция histreedit, удачная замена истории будет перезагружена в буфер редактирования readline для коррекции. Опция -p встроенной команды history может быть использована чтобы увидеть что расширение истории сделает до его использования. Опция -s встроенной команды history может быть использована для добавления команд к концу списка истории без её фактического выполнения, так что они доступны для последующего вызова.

Shell позволяет управлять различными символами используемыми механизмом расширения истории (см. описание histchars ранее в разделе Переменных командного интерпретатора). Shell использует символ комментария истории, чтобы отметить временные метки при записи файла истории.

Отметки событий

 

Отметкой событий является ссылка на запись командной строки в списке истории. Если ссылка не является абсолютной, событие сравнивается с текущей позицией в списке истории.

! Начинает подстановку истории, за исключением, когда далее следует пустая строка, новая строка, возврат каретки, = или (

(при включенной shell опции extglob, включается с помощью встроенной команды shopt)

 

!n Сослаться на командную строку n.

!-n Сослаться к текущей команде минус n.

!! Сослаться к предыдущей команде. Это синоним для ‘!-1‘.

!string

Ссылается на самую последнюю команду, предшествующую текущей позиции в списке истории, начинающуюся со string.

!?string[?]

Ссылается на самую последнюю команду, предшествующую текущей позиции в списке журнала содержащего string. Завершающий символ «?» может быть опущен, если за string сразу следует новая строка.

^string1^string2^

Быстрая замена. Повторяет предыдущую команду, заменяя string1 на string2. Эквивалентно »!!:s/string1/string2/»(Модификаторы я буду описывать в дальнейшем).

!# Набирается вся набранная командная строка до данного момента.

Обозначения слова

Обозначения слова используются для выбора желаемых слов из события. Двоеточие «:» отделяет спецификацию событий от обозначения слова. Двоеточие может быть опущено, если слово начинается с ^, $, *, , или %. Слова нумеруются из начала строки, с первого слова обозначенного нулем (0). Слова вставляются в текущую строку разделённые одним пробелом.

 

0 (zero)

Нулевое слово. Для shell является командным словом.

n n-ое слово.

^ Первый аргумент. То есть, слово 1.

$ Последний аргумент.

% Слово сопоставляющееся при последнем поиске ‘?string?

x-y Диапазон слов; ‘-y‘ абревиатура ‘0-y‘.

* Все слова кроме нулевого. Это синоним для ‘1-$‘. Не является ошибкой использовать * если есть только одно слово, возвращается пустая строка.

x* Абревиатура x-$.

x- Абревиатура x-$ аналогична x*, но опускает последнее слово.

 

Если обозначение слова поставляется без спецификации события, предыдущая команда используется в качестве события.

 

Модификаторы

 

После необязательного обозначения слова, может появится последовательность одной или нескольких из следующих модификаторов, каждому из которых предшествует ‘:‘.

h Удалить завершающий компонент имени файла, оставив только начало.

t Удалить все начальные компоненты имени файла, оставляя только конец.

r Удалить завершающий суффикс вида .xxx. Оставляя базовое имя.

e Удалить все кроме завершающего суффикса.

p Распечатать новую команду, но не выполнять её.

q Заключает в кавычки подставляемые слова, для предотвращения дальнейших подстановок.

x Заключает в кавычки подставляемые слова, так же как модификатор q, но разбивает слова на пробелы и переводы строк.

s/old/new/

Подставляет new вместо первого вхождения old в строке события. Вместо / можно использовать любой разделитель. Завершающий разделитель необязателен, если он является последним символом в строке события. Разделитель в строках old и new может быть замаскирован обратной косой чертой. Если метасимвол & появляется в строке new он заменяется на old. Одна обратная косая черта маскирует &. Если строка old является пустой, вместо нее используется строка из последней подстановки по времени или если никаких предыдущих подстановок небыло, последней строки найденной с помощью конструкции !?string[?].

& Повторяет предыдущую подстановку.

g Вызывает изменения которые должны приниматься по всей строке события. Это используется в сочитании с ‘:s‘ (например ‘:gs/old/new/‘) или ‘:&‘. Если используется с ‘:s‘ любой разделитель может быть использован вместо /, и завершающий разделитель не является обязательным, если он является последним символом в строке события. Может быть использован в качестве синонима для g.

G Применить модификатор ‘s‘ один раз, только к каждому слову в строке состояния.

История в bash

Когда включена опция -o history со встроенной командой set, shell предоставляет доступ к истории команд, списку команд ранее набранных. Значение переменной HISTSIZE используется как число команд сохранённых в списке истории. Текст после HISTSIZE (default 500), говорит о том сколько команд сохраняется. История команд shell, содержит каждую команду в списке журнала до параметра и переменной расширения(Расширения я описывал ранее), но после расширения, история выполняется с учётом переменных shell HISTIGNORE и HISTCONTROL.

При запуске история инициализации из файла с именем переменной HISTFILE (по умолчанию ~/.bash_history). Файл с именем значений HISTFILE усекается, если это необходимо, чтобы содержать количество линий не больше чем указано значением HISTFILESIZE. Когда читается файл истории, строки начинающиеся в истории с символа комментария и цифры сразу за ним интерпретируются как временные метки для предыдущей строки истории. Эти метки необязательно отображаются в зависимости от значения переменной HISTTIMEFORMAT. Когда интерактивный командный интерпритатор выходит, прошлые строки $HISTSIZE копируются из списка истории в $HISTFILE. Если включена shell опция histappend (описание Встроенных команд shell я буду описывать в дальнейшем) строки добавляются к файлу истории, в ином случае файл истории переписывается. Если HISTFILE не установлен, или если файл истории недоступен для записи, история не сохраняется. Если переменная HISTTIMEFORMAT установлена, временные отметки записываются в файл истории, история помечается символом комментария, поэтому они могут быть сохранены между сеансами shell. При этом используется символ комментария в истории для отличия меток времени от других строк истории. После сохранения истории, файл истории обрезается, чтобы содержать количество строк не более чем указано HISTFILESIZE. Если HISTFILESIZE не установлен, обрезание не происходит.

Встроенная команда fc (Встроенные команды shell я буду описывать позднее) может быть использована для выдачи списка или редактирования, и повторно выполняет часть списка истории. Встроенная команда history может быть использована для отображения и изменения списка истории и манипулирования файлом истории. Когда используется команда редактирование командной строки, команды поиска доступны в каждом режиме редактирования, которые обеспечивают доступ к списку истории.

 

Shell предоставляет контроль над командами сохраненными в списке истории. Переменные HISTCONTROL и HISTIGNORE могут быть установленны для ограничения сохранённых введённых команд. Shell опция cmdhist, если включена, заставляет командный интерпретатор пытаться сохранять каждую строку многострочной команды в одной записи списка истории, добавив точки с запятой для обеспечения синтаксической корректности. Shell опция lithist заставляет сохранять команду со встроенным символом новой строки, вместо точки с запятой. Установка и сброс опций командного интерпритатора, описаны будут в дальнейшем при описании встроенной команды shopt в разделе Встроенных команд shell.

Библиотека READLINE в bash

Это библиотека которая обрабатывает чтение входящих данный когда используется интерактивная оболочка, когда при её вызове не была использована опция —noediting. Строка редактирования также используется когда используется опция -e со встроенной командой read. По умолчанию строка редактирования команды аналогична используемой в Emacs. Кроме того доступна также строка редактирования в стиле vi. Строка редактирования может быть включена в любое время с помошью -o emacs или -o vi опций встроенной команды set(Встроенные команды я буду описывать в одной из будущих статей). Чтобы отключить возможность редактирования после запуска командного интерпритатора используйте опции +o emacs или +o vi встроенной команды set.

Обозначения Readline

 

В этом разделе используется Emacs стиль обозначения клавиш. Клавиша Control с указанной клавишей, видом C-клавиша, например C-n значит Control-N. Кроме того мета клавиши обозначаются M-клавиша, так M-x значит Meta-X. (На клавиатурах без клавиши meta, M-x значит ESC x, тоесть нажимаете клавишу ESC затем клавишу X. Таким образом ESC реализует префикс meta. Комбинация M-C-x значит ESC-Control-x, или же нажмите Escape, затем удерживая клавишу Control нажмите клавишу x.)

Командам readline могут быть заданы числовые аргументы, которые обычно действуют в качестве счётчика повторов. Иногда они обозначают значимость аргумента. Передача отрицательного аргумента команды которая действует в прямом направлении(например kill-line) вызывают эту команду для действий в обратном направлении. Команды чьё поведение с аргументами отклоняется от этого, приведены ниже.

Когда команда уничтожает текст, удалённый текст сохраняется для возможного дальнейшего извлечения (вставки). Уничтоженный текст помешается в список уничтожений(буфер обмена). Последовательные уничтожения текста накапливает текст в один блок, которым можно вернуть все разом. Команды которые не уничтожают текст, отделяют куски текста для уничтожения.

Инициализации readline

 

Настройка библиотеки readline производится при помощи подстановки команд в файле инициализации (файл inputrc). Имя файла берётся из значения переменной INPUTRC. Если переменная не установлена, по умолчанию ~/.inputrc. Когда программа которая использует библиотеку readline запускается, читается файл инициализации, привязываются горячие клавиши и устанавливаются переменные. Существует только несколько основных конструкций, допускающихся в файле инициализации readline. Пустые строки игнорируются. Строки начинающиеся с # являются комментариями. Строки начинающиеся с $ обозначают условные конструкции. Иные строки обозначают горячие клавиши и настройки переменных.

 

По умолчанию, привязку горячих клавиш можно изменить при помощи файла inputrc. Другие программы которые используют эту библиотеку, могут добавлять свои собственные команды и привязки горячих клавиш.

 

Например поместив в файл inputrc :

 

M-Control-u: universal-argument

 

или

 

C-Meta-u: universal-argument

 

мы назначим комбинации M-C-u команду universal-argument библиотеки readline.

 

Следующие символьные имена распознаются: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE, и TAB.

 

Помимо того в названиях команд, readline позволяет использовать ключи которые будут привязывать строку к клавише, тоесть создавать макроподстановки.

 

Горячие клавиши readline

 

Синтаксис управлением горячими клавишами в файле inputrc прост. Все что для этого требуется это имя команды или макро текст и ключевая последовательность к которой он должен быть привязан. Имя может быть использовано одним из двух способов: как символическое имя ключа, возможно с использованием Meta- или Control- префиксов, или как последовательность клавиш.

 

Когда используется форма имя_клавиши:имя_функции или макроподстановка, имя_клавиши задается просто английским языком.

 

Для примера:

 

Control-u: universal-argument

Meta-Rubout: backward-kill-word

Control-o: «> output»

 

В приведённом примере, C-u связан с функцией universal-argument, M-DEL связана с функцией backward-kill-word и C-o связано с макроподстановкой указанной в правой части, тоесть C-o приведет к вставке > output.

 

Во второй форме, «комбинация-клавиш»: имя-функции или макроподстановка, комбинация клавиш отличается от использованного выше имя-клавиша тем, что может задаваться в двойных кавычках. Некоторые стили ключей GNU Emacs могут быть использованы, как в следующем примере, но преобразования символов не признаются.

 

«\C-u»: universal-argument

«\C-x\C-r»: re-read-init-file

«\e[11~»: «Function Key 1»

 

В этом примере C-u снова привязывает функцию universal-argument. C-x C-r связан с функцией re-read-init-file, и ESC [ 1 1 ~ должна вставить текст «Function Key 1».

 

Полный набор управляющих последовательностей в GNU Emacs стиле представлен ниже.

 

\C- префикс Control

\M- meta префикс

\e управляющий символ

\\ обратная косая черта

\» символ «

\’ символ ‘

 

В дополнение к последовательности стиля GNU Emacs, существует второй набор управляющих последовательностей начинающийся с обратной косой черты:

 

\a оповещения (звонок)

\b возврат на одну позицию

\d удалить

\f подача страницы

\n новая строка

\r возврат каретки

\t горизонтальная табуляция

\v вертикальная табуляция

\nnn восьмибитный символ, значение которого восьмеричное значение nnn(от одной до трех цифр)

\xHH восьмибитный символ, значение которого шестнадцатеричное значение HH(одна или две шестнадцатеричные цифры)

 

Когда вводится текст макроподстановки, одинарные или двойные кавычки должны быть использованы для обозначения макроопределения. Текст без кавычек предполагается как имя функции. В теле макроподстановки, обратный слеш, описанный выше, расширяется. Обратная косая черта, в тексте макроподстановки, маскирует любой иной символ, в том числе символы « и .

 

Bash позволяет отобразить или изменить текущие горячие клавиши readline, при помощи встроенной команды bind. Режим редактирования можно переключать во время интерактивного использования используя опцию -o встроенной команды set(встроенные команды я буду описывать в дальнейшем).

 

Переменные readline

 

Библиотека readline имеет переменные, которые могут быть использованы для дальнейшей настройки её поведения. Переменные могут быть установлены в файле inputrc с помощью формы:

 

set имя-переменной значение

 

Если не указано другое, переменные библиотеки readline могут принимать значения Вкл или Выкл(без учета регистра). Непризнанные имена переменных игнорируются. Когда читается значение переменной, пустые или нулевые значения «on» (caseinsensitive) и «1» эквивалентны On. Все иные значения эквивалентны Off.

 

Переменные и их значения по умолчанию:

 

bell-style (audible)

Контролирует что происходит когда readline должна подать звуковой сигнал терминала. Если установлено значение none, readline никогда не подает звуковой сигнал. Если установлено visible, readline использует визуальный сигнал, если таковой имеется. Если установлено audible, readline пытается выдавать звуковой сигнал терминала.

 

bind-tty-special-chars (On)

Если установлено On, readline пытается связать управляющие символы специальных драйверов ядра терминала с их эквивалентами в библиотеке readline.

 

comment-begin («#»)

Строка которая выставляется когда readline выполняет команду insert-comment. Эта команда связана с M-# в Emacs режиме и # в командном режиме vi.

 

completion-ignore-case (Off)

Если установлено значение On, readline выполняет соответствия имен файлов и завершение без учёта регистра.

 

completion-prefix-display-length (0)

Длина в символах общего префикса списка возможных дополнений, которые отображаются без изменений. Если значение установлено выше нуля, общие префиксы длиннее чем это значение, заменяются многоточием с отображением возможных завершений.

 

completion-query-items (100)

Определяет когда пользователь получает запрос о просмотре числа возможных завершений порождённых командой possible-completions. Он может быть установлен в любое целочисленное значение большее или равное нулю. Если количество возможных завершений больше или равно значению этой переменной, пользователя спрашивают, желает ли он посмотреть их, в ином случае они просто перечисляются в терминале.

 

convert-meta (On)

Если установлено значение On, readline будет преобразовывать символы с установленным восьмым битом в последовательность клавиш ASCII, лишив восьмой бит профикса и управляющего символа( в действительности используя управляющий символ как meta префикс).

 

disable-completion (Off)

Если установлено значение On, readline не станет выполнять завершения слов. Символы завершения будут вставлены в строку, как будто они были нанесены специально.

 

editing-mode (emacs)

Определяет будет ли readline запускаться с набором управляющих клавиш аналогичных Emacs или vi. В editing-mode может быть установлен либо Emacs либо vi.

 

echo-control-characters (On)

Если установлено значение On, операционные системы показывают что они поддерживают readline, эхо-символы, символы соответствующие сигналу генерируемому с клавиатуры.

 

enable-keypad (Off)

Когда установлено значение On, readline постарается включить поддержку цифровой клавиатуры, когда она вызывается. Некоторым системам это необходимо для включения клавиш со стрелками.

 

enable-meta-key (On)

Если установлено значение On, readline будет пытаться включить любую клавишу модификатора meta терминала когда она вызывается. В большинстве терминалов ключ meta используется для отправки восьмибитных символов.

 

expand-tilde (Off)

Если значение установлено On, тильды выполняются когда readline пытается завершить слово.

 

history-preserve-point (Off)

Если значение установлено On, код истории пытается поставить точку в том же месте каждой строки истории для полученной с помощью previous-history(предыдущей истории) или next-history(следующей истории).

 

history-size (0)

Устанавливает максимальное число записей журнала, сохраняющейся в списке истории. Если установлено значение ноль, количество записей в списке истории не лимитировано.

 

horizontal-scroll-mode (Off)

Когда значение установлено On, readline использует одну линию для показа, прокрутки входящего сигнала горизонтально в одной строке экрана, когда строка становится больше нежели ширина экрана, а не переходит на новую строку.

 

input-meta (Off)

Если установлено значение On, readline будет поддерживать восьмибитные символы на входе(тоесть он не будет сбрасывать старший бит из символов во время чтения), независимо от того, поддерживает ли терминал восьмибитные символы. Имя meta-flag является синонимом для этой переменной.

 

isearch-terminators («C-[C-J»)

Строка символов, которые должны прекращать инкрементный поиск без последующего выполнения символа как команды. Если этой переменной не было присвоено значение, символы ESC и CJ прекратят инкрементный поиск.

 

keymap (emacs)

Установка текущей раскладки горячих клавиш readline. Допускаются имена раскладок emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command и vi-insert. vi эквивалентно vi-command: emacs является эквивалентом emacs-standard. По умолчанию установлено значение Emacs, так же значение в режиме редактирования влияет на горячие клавиши.

 

mark-directories (On)

Если установлено значение On, к завершённым именам каталогов добавляется косая черта.

 

mark-modified-lines (Off)

Если установлено значение On, строки истории которые были изменены отображаются со звездочкой вначале (*).

 

mark-symlinked-directories (Off)

Если установлено значение On, завершённые имена символических ссылок на каталоги, которые должны быть сокращены прилагается(в зависимости от значения mark-directories знака-каталогов).

 

match-hidden-files (On)

Эта переменная, если она включена, указывает readline ограничить список файлов, чьи имена начинаются с ‘.‘(скрытые файлы) когда выполняется завершение имени файла. Если установлено Off, имена ведущие к ‘.‘ должны подаваться пользователем в имени файла для завершения.

 

menu-complete-display-prefix (Off)

Если функция включена, меню завершения отображает общий префикс списка возможных дополнений(который может быть пустым), перед циклами списка.

 

output-meta (Off)

Если установлено значение On, readline будет отображать символы с установленным восьмым битом непосредственно, а не как meta-prefixed(мета-префикс) управляющей последовательности.

 

page-completions (On)

Если установлено значение On, readline использует внутренний more-like pager(пейджер) для отображения на экран возможных завершений.

 

print-completions-horizontally (Off)

Если установлено значение On, readline будет отображать дополнения отсортированные горизонтально в алфавитном порядке, а не вниз по экрану.

 

revert-all-at-newline (Off)

Если установлено значение On, readline отменяет все изменения в линии истории, перед выполнением когда выполняется accept-line(принятие строки). По умолчанию строки истории могут быть изменены и через вызовы readline.

 

show-all-if-ambiguous (Off)

Изменяет поведения завершения функций по умолчанию. Если установлено On, слова которые имеют более одного возможного завершения выдают список возможных завершений, а не подают сигнал.

 

show-all-if-unmodified (Off)

Это изменяет поведение по умолчанию функции завершения способом подобным show-all-if-ambiguous. Если установлено значение On, слова которые имеют более чем одно возможное завершение, без какого-либо частичного завешения(возможных завершений не разделяющих общий префикс) вызывают список возможных завершений мгновенно, а не подают сигнал о этом.

 

skip-completed-text (Off)

Если установлено значение On, это изменяет поведение по умолчанию при вставке одного совпадения в строке. Это только активные завершения в середине слова. Если включено, readline не вставляет символы из завершения которые совпадают с символами после точки в слове завершения, таким образом перечисленные слова следующие за курсором, не дублируются.

 

visible-stats (Off)

Если установлено значение On, символы обозначающие тип файла, сообщают stat(2) добавляться к имени файла при перечислении возможных завершений.

 

Условные конструкции Readline

 

Библиотека readline реализует возможности сходные по духу с условной компиляцией из препроцессора языка C, который позволяет назначать горячие клавиши или присваивать значения переменным в зависимости от условий.

Существуют четыре парсер директивы:

 

$if Конструкция $if позволяет делать привязки клавиш в зависимости от режима редактирования который используется, типа терминала или приложения используещего библиотеку Readline. Текстовые условия продолжаются до конца строки, никакие символы для завершения не требуются.

 

mode

форма mode=, для директивы $if используется для проверки в каком режиме находится readline в Emacs или vi режим. Это можно использовать в сочетании с командой set keymap, для установки привязки горячих клавиш в emacs-standard и emacs-ctlx, только если readline запускается в режиме emacs.

 

term

Форма term=, может быть использована для включения в терминале специфических горячих клавиш, в частном случае для привязки последовательностей символов к функциональным клавишам терминала. Слово с правой стороны от символа = сравнивается с полным именем терминала, и частью имени терминала до первого вхождения символа «». Это позволяет сопоставлять sun как с sun так и с sun-cmd.

 

application(приложение)

Конструкция(application) используется для включения настройки отдельных приложений. Каждая программа использующая библиотеку readline, устанавливает имя приложения и в файле инициализации может проверить установку конкретного значения. Это может быть использовано для привязки клавиш к функциям, полезным для конкретной программы. Например следующая команда добавляет последовательность клавиш, которая берет в кавычки текущее или предыдущее слово в bash:

 

$if Bash

# Quote the current or previous word

«\C-xq»: «\eb\»\ef\»»

$endif

 

$endif

Эта команда, как показано в предыдущем примере, завершает команду $if.

 

$else

Команды этой ветви директивы $if выполняются если условие проверки не выполнено.

 

$include

Данная директива принимает в виде аргумента имя файла и читает команды и привязки клавиш в этом файле. Например следующая директива указывает читать файл /etc/inputrc:

 

$include /etc/inputrc

 

Поиск в Readline

 

Readline предоставляет команды для поиска строк в истории команд, (Историю команд я буду описывать в дальнейшем), содержащих заданную строку. Существует два режима поиска: инкрементный и не инкрементный.

 

Инкрементный поиск начинается до того как пользователь оканчивает ввод строки поиска. Как только набирается каждый символ строки, Readline отображает следующую запись в истории соответствующую набранной строке до этого момента. Инкрементный поиск требует ввода стольких символов, сколько необходимо для того чтобы найти необходимую запись истории. Символы значения переменной isearch-terminators используются для того чтобы прекратить инкрементный поиск. Если этой переменной значение не было присвоено, символы Escape и Control-J будут прекращать инкрементный поиск. Control-G прерывает инкрементный поиск и восстанавливает оригинальную строку. Когда поиск будет завершён, запись истории содержащая строку поиска, становится текущей.

 

Чтобы найти иные соответствующие записи в списке истории нажмите Control-S или Control-R по мере необходимости. Будет осуществляться поиск назад или вперед в истории в течении записи соответствующей уже набранному фрагменту строки. Любая иная последовательность клавиш связанных с командами библиотеки readline, завершит поиск и выполнит эту команду. К примеру, нажав клавишу Enter вы завершите поиск и выполните команду из списка истории.

 

Readline запоминает последнюю строку инкрементного поиска. Если дважды набирается Control-R то следующие символы набираются в конце найденной строки без определения новой строки поиска.

 

Неинкрементный поиск читает всю строку поиска, прежде чем начать искать соответствующие строки истории. Строка поиска может быть введена пользователем или быть частью содержимого текущей строки.

 

Имена команд Readline

 

Ниже приведён список команд и последовательность ключей (клавиш) по умолчанию связанных с ними. Названия команд для которых не установлена последовательность ключей(клавиш), по умолчанию ни к какой комбинации не привязаны. С последующих описаниях точка относится к текущей позиции курсора, а метка относится к позиции курсора сохраненной командой set-mark. Текст между точкой и меткой, называют регионом.

 

Команды для перемещения

 

beginning-of-line (C-a)

перемещение в начало текущей строки

 

end-of-line (C-e)

перемещение в конец строки

 

forward-char (C-f)

перемещение на символ вперед

 

backward-char (C-b)

перемещение на символ назад

 

forward-word (M-f)

передвижение до конца следующего слова. Слова состоят из алфавитно-цифровых символов(букв и цифр). В Linux системах свойства клавиши Meta может выполнять ESC единоразовым нажатием. Это значит что чтобы ввести комбинацию M-f, Вам необходимо нажать, но не зажимать, ESC, затем нажать клавишу f.

 

backward-word (M-b)

возвращение к началу текущего или предыдущего слова. Слова состоят из алфавитно-цифровых символов(букв и цифр). В Linux системах свойства клавиши Meta может выполнять ESC единоразовым нажатием.

 

shell-forward-word

двигаться до конца следующего слова. Слова разделяются метасимволами не заключенными в кавычки.

 

shell-backward-word

вернуться к началу текущего или предыдущего слова. Слова разделяются метасимволами не заключенными в кавычки.

 

clear-screen (C-l)

очистить экран оставив текущую строку в верхней части экрана. С аргументом обновляет текущую линию без очистки экрана.

 

redraw-current-line

обновление текущей строки.

 

Команды для управления историей

 

accept-line (Newline, Return)

принимает строку, вне зависимости от того где находится курсор. Если строка не пустая, добавляет её в список истории в соответствии с состоянием переменной HISTCONTROL. Если строка представляет собой модифицированную линию из списка истории, то строка восстанавливается в исходное состояние.

 

previous-history (C-p)

выбирает предыдущую команду из списка истории, возвращаясь к началу списка.

 

next-history (C-n)

выбирает следующую команду из списка истории, двигаясь к концу списка.

 

beginning-of-history (M-< )

Переходит к первой строке в истории.

 

end-of-history (M->)

переход к концу истории, то есть к линии которая в настоящее время введена.

 

reverse-search-history (C-r)

поиск назад по истории, начиная с текущей строки и двигаясь вверх по истории. Инкрементный поиск.

 

forward-search-history (C-s)

поиск вперед по истории начиная с текущей строки и продвигаясь вниз, по мере необходимости. Инкрементный поиск.

 

non-incremental-reverse-search-history (M-p)

поиск назад по истории, начиная с текущей строки, используя неинкрементный поиск строки предоставленной пользователем.

 

non-incremental-forward-search-history (M-n)

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

 

history-search-forward

поиск вперед по списку истории строки символов между началом текущей строки и точкой. Это неинкрементный поиск.

 

history-search-backward

поиск назад по списку истории строки символов между началом текущей строки и точкой. Это неинкрементный поиск.

 

yank-nth-arg (M-C-y)

вставляет первый аргумент предыдущей команды(обычно это второе слово предыдущей строки) в точку. С аргументом n, вставляет N-ое слово из предыдущей команды(слова в предыдущей команде нумеруются с 0). В случае если аргумент отрицательный, вставляется N-ое слово с конца предыдущей команды. Как только вычисляется аргумент n, аргумент извлекается, как если бы было задано расширение истории «!n«.

 

yank-last-arg (M-., M-_)

вставляет последний аргумент предыдущей команды(последнее слово предыдущей записи истории). С числовыми аргументами ведет себя так же как и yank-nth-arg. Последовательные вызовы yank-last-arg, двигают по списку истории вставляя последнее слово последнего аргумента очередной строки. Любой числовой аргумент, подставляемый на эти последовательные вызовы определяет направление для перемещения по истории. Отрицательный аргумент переключает направление по истории(вперед или назад). Средства для расширения истории используются для извлечения последнего аргумента, как если бы было задано расширение истории «!$«.

 

shell-expand-line (M-C-e)

расширение строки как это делает shell. Она выполняет псевдонимы(alias) и расширения истории, а так же подстановки слов. Описание расширения истории будет описано в дальнейшем.

 

history-expand-line (M-^)

выполняет расширение истории в текущей строке. Расширение истории будет описано в дальнейшем.

 

magic-space

выполняет расширение истории в текущей строке и вставляет пробел. Расширение истории будет описано в дальнейшем.

 

alias-expand-line

выполняет расширение псевдонимов(alias) в текущую строку. Расширения псевдонимов описывалось в статье ранее.

 

history-and-alias-expand-line

расширение истории и псевдонимов(alias) в текущей строке.

 

insert-last-argument (M-., M-_)

синоним для yank-last-arg.

 

operate-and-get-next (C-o)

принятие текущей линии для исполнения и перенос на следующую линию по отношению к текущей из истории для редактирования. Игнорируется любой аргумент.

 

edit-and-execute-command (C-xC-e)

вызвать редактор в текущую командную строку и выполнить результат команды оболочки. Bash пытается вызвать $VISUAL, $EDITOR и emacs в качестве редактора, в таком порядке.

 

Команды для изменения текста

 

delete-char (C-d)

удаляет символ в точке. Если точка находится в начале строки, а последний нажатый символ не привязан к команде delete-char, возвращается EOF.

 

backward-delete-char (Rubout)

удаляет символ перед курсором. Когда задаётся числовой аргумент, сохраняет удалённый текст в буфере kill ring.

 

forward-backward-delete-char

удаляет символ на месте курсора, если курсор не находится на конце линии, в случае же если курсор в конце линии то удаляется символ перед курсором.

 

quoted-insert (C-q, C-v)

добавить следующий символ на строку буквально. Так можно добавлять такие символы как C-q, например.

 

tab-insert (C-v TAB)

вставить символ табуляции

 

self-insert (a, b, A, 1, !, …)

вставить набранный символ

 

transpose-chars (C-t)

перетащить символ перед курсором за курсор, курсор так же в свою очередь передвигается на одну позицию. Если курсор находится в конце строки, то это переносит два символа перед точкой. Отрицательные аргументы не имеют никакого эффекта.

 

transpose-words (M-t)

перетаскивает слово за слово после которого стоит курсор. Курсор переносится в конец перенесенного слова. Если курсор находится в конце строки, перемещается два последние слова в строке.

 

upcase-word (M-u)

меняет в верхний регистр текущее или следующее слово. С отрицательным аргументом в верхний регистр переносится предыдущее слова, курсор не меняет текущей позиции.

 

downcase-word (M-l)

меняет в нижний регистр текущее или следующее слово. С отрицательным аргументом в нижний регистр переносится предыдущее слова, курсор не меняет текущей позиции.

 

capitalize-word (M-c)

с прописной буквы начинает текущее или следующее слово. С отрицательным аргументом с прописной буквы начинает предыдущее слово, курсор не меняет текущей позиции.

 

overwrite-mode

переключает режим перезаписи. С явным положительным аргументом, переключается в режим замены. С явным не положительным числовым аргументом, переключает в режим вставки. Данная команда влияет только на emacs режим, vi делает перезаписи иначе. Каждый вызов библиотеки readline() начинается в режиме вставки. В режиме замены символы заключённые в самостоятельную вставку меняют текст в месте курсора, а не нажатием текста в правом крае. Связано с backward-delete-char. По умолчанию команда не привязана.

 

Удаление и вставка

 

kill-line (C-k)

удаляет текст от курсора до конца строки.

 

backward-kill-line (C-x Rubout)

удаляет от курсора в начало строки.

 

unix-line-discard (C-u)

удаляет от курсора до начала строки. Текст помещается в буфер kill-ring.

 

kill-whole-line

удаляет все символы в строке независимо от того где находится курсор.

 

kill-word (M-d)

удаляет из точки в конец текущего слова или если курсор находится между словами, до конца следующего слова. Границы слов такие же как используются при forward-word.

 

backward-kill-word (M-Rubout)

Удаляет слово за курсором. Границы слов такие же что используются при backward-word.

 

shell-kill-word (M-d)

удаляет от курсора в конец текущего слова или если курсор находится между словами до конца следующего слова. Границы слов такие же что используются при shell-forward-word.

 

shell-backward-kill-word (M-Rubout)

удаляет слово перед курсором. Границы слов такие же что используются при shell-backward-word.

 

unix-word-rubout (C-w)

удаляет слово за курсором, используется пробел в качестве границы слова. Текст помещается в буфер kill-ring.

 

unix-filename-rubout

удаляет слово за курсором, в качестве границ слова используются пробелы и косая черта. Текст помещается в буфер kill-ring.

 

delete-horizontal-space (M-\)

удаляются все пробелы и табуляции вокруг курсора.

 

kill-region

удалить текст в текущей области.

 

copy-region-as-kill

копировать текст в области в буфер обмена.

 

copy-backward-word

копировать слово перед курсором в буфер обмена. Границы слова такие же что и при backward-word.

 

copy-forward-word

копирует слово следующее за курсором в буфер обмена. Границы слова такие же как при forward-word.

 

yank (C-y)

восстановить верхний элемент буфера kill ring в месте курсора.

 

yank-pop (M-y)

прокручивает буфер kill ring и вставляет новый верхний элемент. Работает только после команды yank или yank-pop.

 

Числовые аргументы

 

digit-argument (M-0, M-1, …, M—)

добавляет цифру к накопленному аргументу либо начинает новый аргумент. M— начинает отрицательный аргумент.

 

universal-argument

Это ещё один способ задать аргумент. Если за этой командой следует одна или несколько цифр, возможно со знаком минус, эти цифры определяют аргумент. Если после команды следуют цифры, выполнение universal-argument завершает числовой аргумент, в ином же случае игнорируется. Как частный случай, если за командой следует символ не являющийся цифрой или знаком минус, аргумент count для следующей команды умножается на четыре. Изначально аргумент count один, так выполнение этой функции в первый раз делает количество аргументов четыре, второй раз количество аргументов шестнадцать и тд

 

Завершение

 

complete (TAB)

пытается завершить текст, введённый до текущей позиции. Bash пытается выполнить завершение текста как переменную (если текст начитается с «$»), если текст начинается с «~» как имя пользователя, если же текст начинается с «@» имя хоста или как команду включая псевдонимы и функции. Если ни одним из способов завершить строку не удаётся, выполняется попытка завершения имени файла.

 

possible-completions (M-?)

выдаёт возможные завершения текста перед текущей позицией.

 

insert-completions (M-*)

вставляет все завершения текста преред позицией, порождаемые командой possible-completions.

 

menu-complete

похоже на команду complete, но заменяет слово на первое возможное завершение из списка возможных. Повторное выполнение menu-complete вставляет следующий элемент из списка возможных завершений. В конце списка завершений подаётся сигнал, (в зависимости от настроек) и восстанавливается исходный текст. Аргумент «n» вызывает переход к позиции в списке под номером «n», отрицательный аргумент может быть использован для перемещения по списку назад. Эта команда предназначена для привязки к TAB, но не привязана по умолчанию.

 

menu-complete-backward

идентично menu-complete но движение происходит назад по списку возможных завершений, как будто menu-complete был задан отрицательный аргумент. Данная команда не привязана по умолчанию.

 

delete-char-or-list

удаляет символ перед курсором, если курсор не находится в начале или конце строки (аналогично delete-char). В случае же нахождения курсора в конце строки ведёт себя аналогично команде possible-completions. Данная команда по умолчанию не привязана.

 

complete-filename (M-/)

пытается завершить введённый текст до текущей позиции как имя файла.

 

possible-filename-completions (C-x /)

выдаёт возможные завершения текста до текущей позиции курсора, интерпретируемого как имя файла.

 

complete-username (M-~)

пытается завершить введённый текст до текущей позиции как имя пользователя.

 

possible-username-completions (C-x ~)

выдаёт возможные завершения текста до текущей позиции как имя пользователя.

 

complete-variable (M-$)

пытается завершить введённый текст до текущей позиции, рассматривая его в качестве переменной shell.

 

possible-variable-completions (C-x $)

выдаёт возможные завершения текста до текущей позиции, рассматривая его в качестве переменной shell.

 

complete-hostname (M-@)

пытается завершить введённый текст до текущей позиции как имя хоста.

 

possible-hostname-completions (C-x @)

выдаёт возможные завершения текста до текущей позиции как имя хоста.

 

complete-command (M-!)

пытается завершить введённый текст до текущей позиции, интерпретируя как имя команды. Завершение команды пытается последовательно согласовать текст с псевдонимами, зарезервированными словами, функциями shell, встроенными командами shell, и именами исполняемых файлов.

 

possible-command-completions (C-x !)

выдаёт возможные завершения текста до текущей позиции, интерпретируя как имя команды.

 

dynamic-complete-history (M-TAB)

пытается завершить введённый текст до текущей позиции, сравнивая текст в строках списка истории команд в поисках возможных совпадений.

 

dabbrev-expand

пытается завершить меню, введённого текста до текущей позиции, сравнивая текст в строках из списка истории команд, в поисках возможных совпадений.

 

complete-into-braces (M-{)

выполняет завершение имени файла и вставляет список возможных дополнений заключённых в фигурные скобки, чтобы он мог быть выполнен командным интерпритатором (Подстановку значений в фигурных скобках я описывал ранее)

 

Клавиатурные макросы

 

start-kbd-macro (C-x ()

начинает сохранение набранных символов в текущий клавиатурный макрос.

 

end-kbd-macro (C-x ))

останавливает сохранение набранных символов в текущий клавиатурный макрос и сохраняет определение.

 

call-last-kbd-macro (C-x e)

повторно выполняет последний определённый клавиатурный макрос, выводя символы макроса как если бы они были введены с клавиатуры.

 

Иные команды

 

re-read-init-file (C-x C-r)

читает содержание в файле inputrc, и включает все привязки клавиш или присвоения переменных найденных там.

 

abort (C-g)

прерывает текущую команду редактирования и подаёт звуковой сигнал терминала (сигнал задается командой bell-style).

 

do-uppercase-version (M-a, M-b, M-x, …)

если символ «x» в нижнем регистре вводится вместе с клавишей Meta, выполняется команда которая связана с данным символом в верхнем регистре.

 

prefix-meta (ESC)

рассматривает следующий символ, как символ перед которым введен символ Meta. (ESC f) эквивалентно Meta-f.

 

undo (C-_, C-x C-u)

инкрементная отмена, отдельно запоминаемая для каждой строки.

 

revert-line (M-r)

отмена всех сделанных изменений в текущей строке. Это похоже на выполнение команды undo достаточное количество раз для возвращения строки в исходное состояние.

 

tilde-expand (M-&)

выполняет замену тильды для текущего слова.

 

set-mark (C-@, M-)

установить метку в текущую позицию. Если задан числовой аргумент, метка устанавливается в это положение.

 

exchange-point-and-mark (C-x C-x)

меняет местами метку с текущей позицией. Текущая позиция устанавливается в сохраненную позицию, а старое положение курсора запоминается как метка.

 

character-search (C-])

читается символ и курсор перемещается к следующему появлению этого символа. Отрицательный аргумент означает поиск предыдущего вхождения.
character-search-backward (M-C-])

Читается символ, и курсор перемещается к предыдущему появлению этого символа. Отрицательный аргумент означает поиск следующих вхождений.

 

skip-csi-sequence

читает достаточно символов, чтобы прочесть многоклавишные последовательности, такие как определены для ключей Home и End. Такие последовательности начинаются с управления индикатором последовательности (CSI), как правило, ESC-[. Если эта последовательность связана с «\[«, ключи получения такой последовательности не будут иметь никакого эффекта, если явно не связаны с командой readline вместо вставки посторонних символов в буфер редактирования. Ключи по умолчанию с этим не связаны, обычно связаны с ESC-[.

 

insert-comment (M-#)

бесчисловой аргумент, значение readline переменной comment-begin вставляется в начало текущей строки. Если аргумент является числовым, то эта команда действует как переключатель: если символы в начале строки не соответствуют значению comment-begin вставляется значение, в ином случае символы в comment-begin удаляются с самого начала строки. В любом случае строка воспринимается как символ новой строки, если была напечатана. Значение по умолчанию comment-begin вызывает эту команду сделав текущую строку комментарием shell. Если аргумент является числовым, символ комментария удаляется, строка будет выполнена.

 

glob-complete-word (M-g)

слово перед курсором рассматривается как шаблон для имён файлов, со звёздочкой «*» прилагается неявно. Этот шаблон используется для создания списка соответствующих имен файлов для возможных завершений.

 

glob-expand-word (C-x *)

слово перед курсором нассматривается как шаблон для имен файлов, и список совпадающих имен файлов вставляется, заменяя слово. Если аргумент является числовым к имени файлов добавляется звёздочка.

 

glob-list-expansions (C-x g)

отображается список расширений которые были порождены glob-expand-word, и строка перерисовывается. Если аргумент является числовым к имени файлов добавляется звёздочка.

 

dump-functions

выдаёт все функции и их привязки клавиш к readline. Если аргумент является числовым, вывод форматируется таким образом что он может быть сделан как часть файла inputrc.

 

dump-variables

печатает все установленные переменные в readline, и их значения в readline. Если аргумент является числовым, вывод форматируется таким образом что он может быть сделан частью файла inputrc.

 

dump-macros

печатает все readline ключевые последовательности привязанные к макросам и строки которыми они выходят. Если аргумент является числовым, вывод форматируется таким образом что он может быть сделан частью файла inputrc.

 

display-shell-version (C-x C-v)

показать информацию о текущей версии экземпляра bash.

 

Программируемое дополнение

 

Когда автозавершение слов пытается использоваться для команд, для которых завершение спецификации (compspec) было определено с использованием встроенной команды complete, вызываются программируемые объекты завершения.

 

Во первых имя команды определяется. Если слово команды является пустой строкой (попытка ввести завершение в начале пустой строки), любой comspec, определяется с использованием опции завершения -E. Если comspec были определены для этой команды, comspec, используется для генерации списка возможных вариантов для слова. Когда слово команды является полным путём, comspec для полного пути ищется в первую очередь. Если comspec для полного пути не найдено, comspec пытается найти для части после последней косой черты. Если эти поиски не приводят к comspec, любой comspec определяется с использованием опции -D для завершения по умолчанию.

 

После того как был обнаружен compspec, он используется для генерации списка подходящих слов. Если compspec не найден, bash завершается по умолчанию, как это было описано выше в разделе Завершение.

 

Используются первые действия определённые как comspec. Только совпадения которые имеют префикс слово во время завершения, возвращаются. Когда используется опция -f или -d для файла или каталога завершения имен, переменная FIGNORE используется для фильтрации совпадений. Любые дополнения указанные в расширении имен путей шаблонов для опции -G генерируются далее. Слова генерируемого шаблона, не обязательно совпадают с завершаемым словом. Переменная shell GLOBIGNORE не используется для фильтрации по поиску, используется переменная FIGNORE.

 

Рассматривается следующая строка указанная в качестве аргумента опции -W. Строка сначала разделяет используемые символы в специальной переменной IFS, в качестве разделителей. Цитирования shell заслуживаются. Затем каждое слово расширяется с помощью фигурных скобок, расширений тильды, параметров и расширений переменных, подстановки команд и арифметических выражений как описывалось ранее в разделе Расширения. Результаты разделяются используя правила описанные ранее в разделе Разбиение слов. Результат расшиения, является префикс соответствующий завершающемуся в настоящий момент слову, и подходящим словам становятся возможны завершения. После того как эти совпадения были сгенерированы любая функция shell или команда указанная с параметрами -F и -C вызывается. Когда вызывается команда или функция COMP_LINE, COMP_POINT, COMP_KEY, и COMP_TYPE переменным присваивается значение, как было описано ранее в разделе Переменные shell. Если функция shell была вызвана, переменные COMP_WORDS и COMP_CWORD также устанавливается. Когда вызывается функция или команда, первый аргумент это имя команды, аргумент который в настоящее время завершен, второй это слово заверщающееся, а третий аргумент представляет собой предшествующее слово заверщающейся текущей командной строки. Нет фильтрации генерируемых добавлений заверщающегося слова, функция или команда имеет полную свободу в создании совпадений.

 

Любая функция, заданная с -F вызывается в первую очередь. Функцию может использовать любой из объектов из shell оболочки, в том числе встроенная команда compgen, для создания совпадений. Она должна поставить возможные завершения в переменной массива COMPREPLY.

 

Далее любая команда определяемая при помощи опции -C вызывается в среде эквивалентной команде substitution. Она должна распечатать список завершений, по одному в строке, на стандартный вывод. Обратная косая черта может быть использована чтобы избежать новой строки при необходимости.

 

После всех возможных завершений генерируется любой фильтр, указанный с опцией -X применяемой к списку. Фильтр шаблона который используется для расширения имен файлов: & в шаблоне заменяется текстом завершенного слова. Буквальное &, может быть с обратной косой чертой: обратная косая черта удаляется перед попыткой совпадения. Любой завершение, соответствующее шаблону будет удалено из списка. Ведущий ! отрицательный шаблон: в этом случае любое завершение не соответствующее шаблону будет удалено.

 

Наконец, любой префикс и суффикс указывающийся с опциями -P и -S добавляется каждому члену списка завершения и результат возвращается в readline кода завершения, как список возможных завершений. Если ранее применяемые действия не генерируют никаких совпадений, и опция -o dirnames поставляется для завершения, когда compspec был определён, происходит попытка завершения имени каталога.

 

Если опция -o plusdirs поставляется для завершения, когда compspec был определён, происходит попытка завершения имени каталога и любые совпадения добавляются к результатам других действий.

 

По умолчанию, если compspec найден, все, что он генерирует возвращается к коду завершения как полный набор возможных завершений. По умолчанию bash не производит попытки завершений, и в readline по умолчанию отключено завершения имени файла. Если опция -o bashdefault поставляется для завершения, когда compspec был определён, попытки пополнений bash завершаются если compspec не генерирует совпадения. Если опция -o default была поставлена для завершения, когда compspec был определен, завершение readline’s по умолчанию будет выполняться если compspec не генерирует совпадений. Когда compspec указывает желательное имя каталога завершения, программируемые функции завершения заставляют readline добавить косую черту к именам, которые являются символическими ссылками на каталоги, с учётом значений переменной mark-directories библиотеки readline, независимо от установки переменной mark-symlinked-directories библиотеки readline. Существует некоторая поддержка для динамической модификации завершений. Это особенно полезно при использовании в комбинации с завершением по умолчанию указанного с complete -D. Это возможно для функций shell, выполненных в качестве обработчиков завершения, чтобы указать завершение, следует повторно вернуть код завершения 124. Если shell функция возвращает 124 и изменяет compspec связанный с командой на которой в настоящее время происходит попытка завершения(поставляется в качестве первого аргумента, когда выполняется функция), программируемое дополнение возобновляется с самого начала, с попыткой найти новый compspec для этой команды. Это даёт набор завершений, которые будут построены динамично, как попытка завершения, а не загружаются все сразу.

 

Например если предположить что существует compspecs, сохраненный в файле, соответствующем имени команды, следующая функция завершения по умолчанию будет загружаться динамически:

 

_completion_loader()

{

. «/etc/bash_completion.d/$1.sh» >/dev/null 2>&1 && return 124

}

complete -D -F _completion_loader 

Руководство bash

Какое-то время назад мне понадобилось что-то найти в мануале bash. Что мне понадобилось, уже сейчас точно и не вспомню там, но обратил внимание на то что в моей операционной системе, по крайней мере мануал bash еще не переведен. Вот я решил исправить этот недостаток. За точность не ручаюсь

Bash название, синтаксис, описание, параметры

 

Аргументы и вызов Bash

 

Определения, зарезервированные слова в shell

 

Грамматика команд shell

 

Комментарии и маскировка в Bash

 

Параметры в shell

 

Переменные shell

 

Массивы bash

 

Расширения в bash

 

Расширения фигурных скобок и расширения тильды

 

Расширения параметров в bash

 

Подстановка команд, Арифметические расширение и Процесс замены в bash

 

Разбиение на слова, Подстановка имен файлов, Соответствия шаблонов и Удаление кавычек в bash

 

Перенаправление в bash

 

Псевдонимы в bash

 

Функции shell

 

Арифметическая оценка в bash

 

Условные выражения в bash

 

Простое расширение команд в bash

 

Выполнение команд в bash

 

Среда выполнения команд в shell

 

Окружающая среда Bash

 

Статус выхода в bash

 

Сигналы bash

 

Управление заданиями в bash

 

Приглашения в bash

 

Библиотека READLINE в bash

 

История в bash

 

Расширение истории в bash

 

Встроенные команды в bash

 

Ограничения и файлы bash