Главная » 2017 » Ноябрь » 12 » man bash на русском
23:30
man bash на русском

SEO sprint - Всё для максимальной раскрутки!

НАЗВАНИЕ

bash - командный интерпретатор GNU Bourne-Again SHell


СИНТАКСИС

bash [опции] [файл]


АВТОРСКИЕ ПРАВА

Командный интерпретатор bash создан Фондом свободно

распространяемого программного обеспечения.

Copyright (C) 1989-1999 by the Free Software Foundation, Inc.


ОПИСАНИЕ

bash - это sh-совместимый интерпретатор командного языка,

выполняющий команды, прочитанные со стандартного входного потока

или из файла. Командный интерпретатор bash также включает

полезные средства командных интерпретаторов Korn и C (ksh и csh).

Командный интерпретатор bash создавался как соответствующий

спецификации командного интерпретатора и инструментальных средств

IEEE POSIX (IEEE

POSIX Shell and Tools specification)

(IEEE Working Group 1003.2).


ОПЦИИ

Помимо однобуквенных опций командного интерпретатора, представленных

в описании встроенной команды set, bash

интерпретирует при вызове следующие опции:

-c строка

Если указана опция -c, команды читаются из строки. Если после строки

есть аргументы, их значения присваиваются позиционным параметрам,

начиная с $0.

-r

Если указана опция -r, командный интерпретатор становится ограниченным

(см. "ОГРАНИЧЕННЫЙ КОМАНДНЫЙ ИНТЕРПРЕТАТОР" ниже).

-i

Если указана опция -i, командный интерпретатор работает как

интерактивный.

-s

Если указана опция -s или если после обработки опций аргументов

не остается, команды читаются из стандартного входного потока.

Эта опция позволяет устанавливать позиционные параметры

при вызове интерактивного командного интерпретатора.

-D

Список всех строк в двойных кавычках с префиксом $

выдается в стандартный выходной поток. Это строки,

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

текущая локаль отличается от C или POSIX. При этом неявно

предполагается опция -n; никакие команды выполняться не будут.

--

Пара дефисов (--) обозначает конец опций и отключает их дальнейшую

обработку. Любые аргументы после -- рассматриваются как имена файлов

и аргументы. Аргумент - эквивалентен --.

Командный интерпретатор bash также интерпретирует несколько

многосимвольных опций. Эти опции, чтобы они были распознаны, должны

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

--dump-po-strings

Аналогична опции -D, но результат выдается в формате файла GNU

gettext po (portable object - переносимый объект).

--dump-strings

Аналогична опции -D.

--help

Выдает в стандартный выходной поток сообщение об использовании и

успешно завершает работу.

--login

Заставляет bash работать так, как если бы он был вызван в качестве

начального командного интерпретатора

(см. "ВЫЗОВ" ниже).

--noediting

Не использует библиотеку GNU readline для чтения командных строк в

интерактивном режиме.

--noprofile

Не читает ни общесистемный файл начального запуска

/etc/profile, ни любой из персональных файлов инициализации

пользователя ~/.bash_profile, ~/.bash_login или ~/.profile.

По умолчанию, bash читает эти файлы при вызове в качестве

начального командного интерпретатора (см. "ВЫЗОВ" ниже).

--norc

Не читает и не выполняет персональный файл инициализации

~/.bashrc, если командный интерпретатор работает интерактивно. Эта опция

по умолчанию включена, если интерпретатор вызван как sh.

--posix

Изменяет на стандартное поведение bash в тех случаях, когда оно

отличается от предполагаемого стандартом POSIX 1003.2.

--rcfile файл

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

файла инициализации ~/.bashrc, если командный интерпретатор работает

интерактивно (см. "ВЫЗОВ" ниже).

--restricted

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

(см. "ОГРАНИЧЕННЫЙ КОМАНДНЫЙ ИНТЕРПРЕТАТОР" ниже).

--verbose

Аналогична опции -v.

--rpm-requires

Создаёт список файлов, необходимых для выполнения сценария оболочки. Это подразумевает наличие '-n' и имеет те же ограничения, как и проверка ошибок во время компиляции; обратные кавычки, []-проверки и тождества не подлежат анализу, таким образом некоторые зависимости могут оказаться пропущены.

--version

Выдает информацию о версии данного экземпляра bash в стандартный выходной поток

и успешно завершает работу.


АРГУМЕНТЫ

Если после обработки опций остались аргументы и не указаны опции

-c или -s,

первый аргумент считается именем файла, содержащего

команды интерпретатора. Если bash вызван таким образом, параметр $0

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

становятся другие аргументы. Командный интерпретатор bash читает и

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

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

Если ни одна команда не выполнена, статус выхода - 0.


ВЫЗОВ

Начальный командный интерпретатор (login shell) - это интерпретатор,

первый символ нулевого аргумента которого является дефисом (-) или

который запущен с опцией --login.

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

выходной потоки которого подключены к терминалам (что определяется

с помощью функции isatty(3)), или запущенный

с опцией -i. Переменная

среды PS1 устанавливается и флаги ($-) включают i, только если bash является

интерактивным интерпретатором, что позволяет проверить это в файле

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

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

запуска. Если любой из этих файлов существует, но не может быть

прочитан, bash выдает сообщение об ошибке. Символы тильды (~)

в именах файлов заменяются так, как описано в подразделе

"Замена тильды" раздела

"ЗАМЕНЫ".

При вызове bash как интерактивного начального командного интерпретатора,

или как неинтерактивного интерпретатора с опцией

--login, он сначала

читает и выполняет команды из файла /etc/profile, если этот файл существует.

После прочтения этого файла, он последовательно ищет файлы ~/.bash_profile,

~/.bash_login и ~/.profile, читает и выполняет команды из первого же из

них, который существует и доступен на чтение. Опция --noprofile может

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

это действие.

При завершении работы в качестве начального командного интерпретатора

bash читает и выполняет команды в файле ~/.bash_logout, если он существует.

При запуске интерактивного командного интерпретатора, не являющегося

начальным, bash читает и выполняет команды из файла ~/.bashrc, если

он существует. Это действие можно отменить с помощью

опции --norc.

Опция --rcfile файл заставляет bash

читать и выполнять команды из указанного файла вместо ~/.bashrc.

При неинтерактивном запуске bash, например, для выполнения сценария,

командный интерпретатор ищет в среде переменную BASH_ENV,

получает ее значение и использует его в качестве имени файла, который

необходимо прочитать и выполнить. bash ведет себя так, как

если бы была выполнена следующая команда:


if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

но при поиске имени файла не используется значение переменной PATH.

Если bash вызван с именем sh, он пытается, наколько это возможно,

имитировать поведение при запуске старых версий интерпретатора sh,

соответствуя при этом стандарту POSIX. При вызове в качестве

интерактивного начального командного интерпретатора или

неинтерактивного, но с опцией --login, он сначала пытается читать и

выполнять команды последовательно из файлов /etc/profile и ~/.profile.

Для отмены этого действия можно использовать

опцию --noprofile. При вызове

в качестве интерактивного командного интерпретатора с именем

sh, bash ищет переменную среды ENV, получает ее значение, если оно задано,

и использует это значение в качестве имени файла, который необходимо

прочитать и выполнить. Поскольку интерпретатор, вызванный как sh, не

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

опция --rcfile не действует. Неинтерактивный командый интерпретатор,

вызванный с именем sh, не пытается читать и выполнять никакие файлы начального

запуска. При вызове по имени sh, командный интерпретатор bash входит в режим

posix после прочтения файлов начального запуска.

При запуске bash в режиме posix, например, с помощью опции командной строки

--posix, он следует стандарту POSIX при работе с файлами начального запуска.

В этом режиме интерактивные командные интерпретаторы

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

соответствующего файла. Никакие другие файлы начального

запуска не читаются.

Командный интерпретатор bash пытается определить, не запущен ли он

демоном удаленного командного интерпретатора, обычно, rshd. Если

оказывается, что bash запущен демоном rshd, он читает и выполняет

команды из файла ~/.bashrc, если этот файл существует и доступен

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

как sh. Для отмены этого действия можно использовать опцию

--norc, а с помощью опции

--rcfile можно заставить читать другой файл,

но обычно демон rshd не задает эти опции командному интерпретатору и не

позволяет их указать.

Если командный интерпретатор запущен с эффективным идентификатором

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

пользователя (группы), и не указана опция -p, файлы

начального запуска не читаются, функции командного интерпретатора не

наследуются из среды, переменная SHELLOPTS, если она задана в среде,

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

равным реальному. Если при вызове задана опция -p,

файлы начального запуска

тоже не читаются, но эффективный идентификатор пользователя не сбрасывается.


ОПРЕДЕЛЕНИЯ

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

пробел

Символ пробела или символ табуляции.

слово

Последовательность символов, рассматриваемая командным интерпретатором

как единое целое. Также называется лексемой (token).

имя

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

и начинающееся с буквы или символа подчеркивания. Также

называется идентификатором.

метасимвол

Символ, разделяющий слова, если он не замаскирован. Один из следующих

символов:


| & ; ( ) < > пробел табуляция

управляющий оператор

Лексема, выполняющая функцию управления. Это один из следующих символов:


|| & && ; ;; ( ) | <перевод строки>


ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА

Зарезервированными являются слова, имеющие специальное значение для

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

зарезервированные, если не замаскированы и являются либо первым словом

простой команды (см. "СИНТАКСИС КОМАНД" ниже),

либо третьим словом команды case или

for:

! case do done elif else

esac fi for function if in

select then until while { }

time [[ ]]


СИНТАКСИС КОМАНД

Простые команды

Простая команда - это завершающаяся управляющим оператором

последовательность необязательных присваиваний значений переменным,

после которых идут слова, разделенные пробелами, и

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

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

команде.

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

статус выхода, или 128+n, если команда завершена сигналом n.


Конвейеры

Конвейер - это последовательность одной или более команд,

разделенных символом |. Конвейер имеет следующий формат:


[time [-p]] [ ! ] команда [ | команда2 ... ]

Стандартный выходной поток команды связывается со стандартным входным

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

задаваемые командой (см. "ПЕРЕНАПРАВЛЕНИЕ" ниже).

Если перед конвейером указано зарезервированное слово !,

статус выхода такого конвейера является логическим отрицанием

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

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

Прежде, чем возвращать значение, командный интерпретатор ждет завершения

всех команд в конвейере.

Если перед конвейером идет зарезервированное слово time,

после завершения конвейера выдается общее, пользовательское и

системное время, потраченное на его выполнение.

Опция -p изменяет

формат вывода на задаваемый стандартом POSIX. Переменная

TIMEFORMAT может задавать строку формата выдачи информации о времени;

см. описание переменной TIMEFORMAT в разделе

"Переменные командного интерпретатора" ниже.

Каждая команда в конвейере выполняется как отдельный процесс

(т.е. в порожденном интерпретаторе).


Списки

Список - это последовательность одного или более конвейеров,

разделенных одним из операторов ;, &, &&

или ||, и не обязательно завершающаяся одним из операторов

;, & или <перевод строки>.

Из этих операторов списка && и || имеют равный приоритет, причем

больший, чем ; и &, тоже имеющие равный приоритет.

Если команда завершается управляющим оператором &, интерпретатор

выполняет команду в фоновом режиме в порожденном интерпретаторе.

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

выхода в этом случае - 0. Команды, разделенные ; выполняются

последовательно; командный интерпретатор ждет поочередно завершения каждой

из команд. Статус возврата списка в этом случае совпадает со

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

Управляющие операторы && и || обозначают, соответственно, И-списки

и ИЛИ-списки. И-список имеет вид


команда && команда2

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

выхода ноль.

ИЛИ-список имеет вид

команда || команда2

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

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

выполненной в списке.


Составные команды

Составными называют следующие команды:

(список)

Список выполняется в порожденном командном интерпретаторе.

Присваивания переменным и встроенные команды, влияющие на

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

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

{ список; }

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

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

Эту команду называют командой группировки. Статусом возврата

является статус выхода списка.

((выражение))

Выражение вычисляется в соответствии с правилами, описанными ниже

в разделе

"ВЫЧИСЛЕНИЕ АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙ". Если выражение

имеет ненулевое значение, статус возврата равен 0; в противном

случае - 1. Эта конструкция эквивалентна конструкции let "выражение".

[[ выражение ]]

Возвращает статус 0 или 1 в зависимости от значения указанного

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

ниже в разделе "УСЛОВНЫЕ ВЫРАЖЕНИЯ".

Деление слов и подстановка

имен файлов в словах между [[ и ]] не выполняется;

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

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

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

При использовании операторов == и != строка справа оператора

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

подразделе "Сопоставление с образцом". Возвращается значение

0 если строка, соответственно, сопоставляется и не сопоставляется

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

взята в кавычки, чтобы сопоставление с ней шло буквально.

Выражения можно комбинировать с помощью следующих операторов,

перечисленных в порядке снижения приоритета:

( выражение )

Возвращает значение выражения. Круглые скобки можно использовать

для изменения обычного приоритета операторов.

! выражение

Истинно, если выражение ложно.

выражение1 && выражение2

Истинно, если истинны оба выражения, выражение1 и

выражение2.

выражение1 || выражение2

Истинно, если истинно выражение1 или выражение2.

Операторы && и || не вычисляют выражение2, если

значения выражения1 достаточно для определения возвращаемого

значения всего условного выражения.

for имя [ in список_слов ] ; do список ; done

Выполняются подстановки в списке_слов после in, в результате чего

получается список элементов. Переменная с соответствующим

именем последовательно получает значение каждого элемента этого

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

команда for выполняет список для каждого установленного позиционного

параметра (см. раздел "ПАРАМЕТРЫ" ниже). Сатусом возврата

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

результате подстановок элементов списка_слов после in получается

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

select имя [ in список_слов ] ; do список ; done

Выполняются подстановки в списке_слов после in, в результате чего

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

слов выдается в стандартный поток ошибок, причем перед каждым

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

выдаются установленные позиционные параметры

(см. раздел "ПАРАМЕТРЫ" ниже). Затем выдается приглашение PS3

и читается строка со стандартного входного потока. Если эта строка

содержит число, соответствующее одному из выданных слов, то переменная

имя получает его значение. Если строка пустая, слова и приглашение

выдаются снова. Если прочитан символ конца файла (EOF), команда

заврешается. При вводе любого другого значения переменная имя

получает пустое значение. Прочитанная строка сохраняется в

переменной REPLY. Список выполняется после каждого выбора, пока не

будет выполнена команда break или return. Статусом выхода

команды select является статус выхода последней команды в списке,

или 0, если ни одна команда не была выполнена.

case слово in [ ( образец [ | образец ] ... ) список ;; ] ... esac

Команда case сначала подставляет значение слова и пытается

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

правила сопоставления, что и для имен файлов (см. подраздел "Подстановка

имен файлов"). Если найден сопоставляющийся образец,

выполняется соответствующий список. После нахождения первого

сопоставления дальнейшее сопоставление не выполняется и команда

завершается. Статус выхода равен 0, если ни один образец не сопоставился.

В противном случае, он равен статусу выхода последней выполненной

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

if список; then список; [ elif список; then список; ] ... [ else список; ] fi

Выполняется список после if. Если его статус выхода - 0,

выполняется список после then. В противном случае, выполняется

последовательно список в очередной конструкции elif, и если его

статус выхода - 0, выполняется соответствующий список после then

и команда завершается. Если все конструкции elif проверены

и ни один из списков не вернул статус 0, выполняется список после else,

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

статус выхода последней выполненной команды или 0, если ни одно из условий

не оказалось истинным.

while список; do список; done

until список; do список; done

Команда while циклически выполняет список после do, пока

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

Команда until идентична команде while, но условие завершения -

противоположно; список после do выполняется, пока последняя команда

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

while и until является статус выхода последней выполненной

команды списка или 0, если ни одна команда не выполнена.

[ function ] имя () { список; }

Эта команда определяет функцию с указанным именем. Тело

функции образует список команд между фигурными скобками

{ и }. Этот список выполняется каждый раз, когда

имя функции указывается как имя простой команлы. Статусом выхода функции

является статус выхода последней команды, выполненной в теле

функции. (См. раздел "ФУНКЦИИ" ниже.)


КОММЕНТАРИИ

В неинтерактивном командном интерпретаторе или в интерактивном с

включенной опцией interactive_comments встроенной команды

shopt (см. раздел

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже), слово,

начинающиеся символом #, влечет игнорирование этого слова и последующих

символов в строке. Интерактивный командный интерпретатор с не включенной

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

Опция interactive_comments по умолчанию включается в интерактивных командных

интерпретаторах.


МАСКИРОВКА

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

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

Маскировку можно использовать для отмены специфической обработки специальных

символов, для предотвращения распознавания зарезервированных слов, а также

для предотвращения подстановки параметров.

Каждый из метасимволов, перечисленных выше в разделе "ОПРЕДЕЛЕНИЯ",

имеет специальное значение для командного интерпретатора и должен

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

символ маскировки (escape character), одиночные кавычки и двойные кавычки.

Незамаскированная обратная косая черта является символом маскировки. Он

требует использовать следующий за ним символ (за исключением перевода строки)

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

\

<перевод строки> и сама обратная

косая не замаскирована, эта пара обрабатывается как признак продолжения строки

(т.е. она удаляется из входного потока и, по сути, игнорируется).

Все символы в одиночных кавычках используются буквально. Символ одиночной

кавычки (апостроф) не должен указываться между одиночными кавычками, даже если

он предваряется обратной косой.

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

$, ` и

\

Обратная косая имеет специальное значение только если после нее идет один

из следующих символов: $, `, ",

\


или <перевод строки>. Двойную кавычку можно

указывать в двойных кавычках, замаскировав обратной косой.

Специальные параметры * и @ имеют специальное значение при указании в двойных

кавычках (см. раздел "ПАРАМЕТРЫ" ниже).

Слова вида $'строка' обрабатываются особым образомy. Слово заменяется

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

со стандартом ANSI C. Управляющие последовательности, начинающиеся с обратной

косой, декодируются следующим образом:

\a

тревога (звонок)

\b

забой

\e

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

\f

прогон страницы (form feed)

\n

перевод строки (new line)

\r

carriage return (возврат каретки)

\t

табуляция

\v

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

\\

обратная косая

\'

одиночные кавычки

\nnn

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

\xHH

символ, ASCII-код которого совпадает с шестнадцатеричным значением nnn

(от одной до трех цифр)

\cx

символа control-x

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

символа доллара просто не было.

Строка в двойных кавычках, перед которой идет символ доллара ($), будет

преобразована в соответствии с текущей локалью. Если текущая локаль -

C или POSIX, символ доллара игнорируется. Если строка преобразована

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


ПАРАМЕТРЫ

Параметр - это сущность, хранящая значение. Это может быть

имя, число или один из специальных символов, перечисленных ниже в

разделе "Специальные параметры". В контексте

интерпретатора, переменная - это параметр, обозначаемый именем.

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

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

удалена только с помощью встроенной команды unset

(см. раздел "ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже).

Значение переменной может быть присвоено с помощью оператора вида


имя=[значение]

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

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

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

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

раздел "ОБРАБОТКА" ниже). Если для переменной

установлен атрибут целочисленная (integer)

(см. declare в разделе

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА"

ниже), ее значение арифметически вычисляется, даже если арифметическое

вычисление $((...)) не указано явно (см. подраздел

"Арифметическое вычисление" ниже). Разбиение на слова не выполняется, за исключением

значения "$@", как объяснено ниже в подразделе

"Специальные параметры".

Подстановка имен файлов не выполняется.


Позиционные параметры

Позиционный параметр - это параметр, обозначаемый одной или несколькими

цифрами, кроме цифры 0. Позиционным параметрам значения присваиваются на

основе аргументов, переданных при вызове командного интерпретатора, и могут

быть переприсвоены с помощью встроенной команды set. Позиционным

параметрам нельзя присваивать значения с помощью операторов присваивания.

Позиционные параметры временно заменяются при выполнении функции командного

интерпретатора (см. раздел "ФУНКЦИИ" ниже).

Когда позиционный параметр состоит из нескольких цифр, его надо брать

в скобки (см. раздел "ОБРАБОТКА" ниже).


Специальные параметры




Командный интерпретатор обрабатывает ряд параметров специальным образом.

Можно только ссылаться на значения этих параметров - присваивания им не

разрешены.

*

Заменяется позиционными параметрами, начиная с первого.

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

одним словом, в котором значения параметров разделены первым символом

значения специальной переменной IFS. То есть, "$*" эквивалентно

"$1c$2c...", где c - первый символ значения переменной IFS. Если переменная

IFS не установлена, значения параметров разделяются пробелами. Если переменная

IFS имеет пустое значение, значения параметров просто конкатенируются, без

разделителей.

@

Заменяется позиционными параметрами, начиная с первого.

Когда такая замена выполняется в двойных кавычках, каждый параметр

заменяется отдельным словом. То есть, "$@" эквивалентно

"$1" "$2" ... Когда позиционных параметров нет, "$@"

и $@ заменяются пустой строкой (т.е. они просто удаляются).

#

Заменяется десятичным значением количества позиционных параметров.

?

Заменяется статусом последнего выполненного в приоритетном режиме конвейера.

-

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

встроенной команды set или установленных самим командным

интерпретатором (как, например, опция -i).

$

Заменяется идентификатором процесса командного интерпретатора.

В порожденном командном интерпретаторе, запущенном с помощью (), заменяется

идентификатором процесса основного интерпретатора, а не порожденного.

!

Заменяется идентификатором последнего процесса, запущенного в фоновом

(асинхронном) режиме.

0

Заменяется именем командного интерпретатора или сценария. Это значение

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

bash вызван с командным файлом, $0 будет установлен равным имени

этого файла. Если bash запущен с опцией -c,

$0 получает значение

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

В противном случае, этот специальный параметр получает значение имени

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

аргументом.

_

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

имени файла (absolute file name) командного интерпретатора или выполняемого

сценария, переданного в списке аргументов. В последствии,

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

Также устанавливается равным полному имени файла каждой выполняемой внешней

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

почты этот параметр содержит имя проверяемого файла почты.


Переменные командного интерпретатора

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

PPID

Идентификатор родительского процесса для командного интерпретатора.

Эта переменная доступна только для чтения.

PWD

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

OLDPWD

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

cd.

REPLY

Устанавливается равной значению, прочитанному встроенной командой

read, при вызове ее без аргументов.

UID

Идентификатор текущего пользователя - устанавливается при запуске командного

интерпретатора. Эта переменная доступна только для чтения.

EUID

Эффективный идентификатор текущего пользователя - устанавливается

при запуске командного интерпретатора. Эта переменная доступна

только для чтения.

GROUPS

Переменная-массив, содержащая список групп, в которые входит текущий

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

BASH

Полное имя файла, использованное для вызова данного экземпляра bash.

BASH_VERSION

Строка, описывающая версию данного экземпляра bash.

BASH_VERSINFO

Доступный только для чтения массив, элементы которого содержат информацию

о версии для данного экземпляра bash. Элементы массива имеют следующие

значения:

BASH_VERSINFO[0]

Главный номер версии (релиз).

BASH_VERSINFO[1]

Второстепенный номер версии (версия).

BASH_VERSINFO[2]

Уровень исправлений.

BASH_VERSINFO[3]

Версия сборки.

BASH_VERSINFO[4]

Статус релиза (например, beta1).

BASH_VERSINFO[5]

Значение переменной MACHTYPE.

SHLVL

Увеличивается на 1 при каждом запуске порожденного интерпретатора bash.

RANDOM

При каждом обращении к этому параметру генерируется случайное число

от 0 до 32767. Конкретная последовательность случайных чисел

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

RANDOM. Если переменная RANDOM удаляется с помощью

unset, она

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

SECONDS

При каждом обращении к этому параметру возвращается количество секунд,

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

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

количество секунд, прошедшее с момента присваивания, плюс присвоенное

значение. Если переменная SECONDS удаляется

с помощью unset, она

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

LINENO

При каждом обращении к этому параметру командный интерпретатор

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

строки (начиная с 1) в сценарии или функции. При вызове не из

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

Если переменная LINENO удаляется

с помощью unset, она

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

HISTCMD

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

команд. Если переменная HISTCMD удаляется

с помощью unset, она

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

DIRSTACK

Переменная-массив (см. раздел "Массивы" далее),

в которой хранится текущее содержимое

стека каталогов. Каталоги находятся в стеке в том же порядке, в котором

выдаются встроенной командой dirs.

Путем присваивания элементам этого

массива можно изменять каталоги, уже находящиеся в стеке, но для

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

pushd и popd.

Присваивание значения этой переменной не меняет текущий каталог.

Если переменная DIRSTACK удаляется

с помощью unset, она

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

PIPESTATUS

Переменная-массив (см. раздел "Массивы" далее), содержащая список значений

статусов выхода процессов в последнем выполненном в приоритетном режиме

конвейере (который может состоять и всего из одной команды).

OPTARG

Значение последнего аргумента-опции, обработанного встроенной командной

getopts (см. раздел

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже).

OPTIND

Индекс следующего аргумента, который должен быть обработан встроенной

командой getopts (см. раздел

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже).

HOSTNAME

Автоматически устанавливается равной имени текущего хоста.

HOSTTYPE

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

машины, на которой выполняется bash. Стандартное значение зависит от системы.

OSTYPE

Автоматически устанавливается равной строке, описывающей операционную систему,

на которой выполняется командный интерпретатор bash. Стандартное значение

зависит от системы.

MACHTYPE

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

на которой выполняется bash, в стандартном для GNU формате

процессор-компания-система. Стандартное значение зависит от системы.

SHELLOPTS

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

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

команды set (см. раздел

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже).

Опции, упоминающиеся в списке SHELLOPTS, совпадают с выдаваемыми

как установленные командой set -o.

Если эта переменная экспортирована в среду

при запуске командного интерпретатора bash, все упомянутые в списке

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

Эта перменная доступна только для чтения.

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

случаях bash присваивает переменным стандартные значения; эти случаи указаны

ниже.

IFS

Внутренний разделитель полей (Internal Field Separator), используемый

для выделения слов после всех подстановок и для разбиения на слова строк,

прочитанных с помощью встроенной команды read.

Стандартное значение - "<пробел><табуляция><перевод строки>".

PATH

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

командный интерпретатор ищет команды

(см. раздел "ВЫПОЛНЕНИЕ КОМАНД"

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

устанавливающим bash. Типичное значение:

"/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.".

HOME

Начальный каталог текущего пользователя; стандартный аргумент для встроенной

команды cd. Значение этой переменной также используется

при замене тильды.

CDPATH

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

двоеточие, в которых командный интерпретатор ищет целевые каталоги, указанные

по имени в команде cd. Пример возможного

значения - ".:~:/usr".

BASH_ENV

Если этот параметр установлен при выполнении командным интерпретатором

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

инициализации интерпретатора, аналогично ~/.bashrc.

В значении BASH_ENV перед интерпретацией выполняется подстановка значений

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

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

файла.

MAIL

Если этот параметр установлен равным имени файла

и не установлена переменная MAILPATH, bash информирует пользователя

о получении электронной почты в указанный файл.

MAILCHECK

Задает частоту проверки (в секундах) электронной почты командным

интерпретатором bash. Стандартное значение - 60 секунд.

Когда приходит время проверять наличие новой почты, командный

интерпретатор делает это перед выдачей первичного приглашения.

Если эта переменная не установлена, проверка почты командным

интерпретатором отключается.

MAILPATH

Список имен файлов через двоеточие, в которых нужно проверять наличие

новых почтовых сообщений. Можно задавать сообщение, которое должно

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

имени файла вопросительным знаком (?). В тексте этого

сообщения метасимвол $_ заменяется именем текущего файла почты. Например:




MAILPATH='/usr/spool/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'

Командный интерпретатор bash поддерживает стандартное значение

для этой переменной, но используемое при этом местонахождение файлов почты

пользователя зависит от системы (например, /usr/spool/mail/$USER).

PS1

Значение этого параметра обрабатывается (см.

раздел "ПРИГЛАШЕНИЯ" ниже) и

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

значение - "\s-\v\$ ".

PS2

Значение этого параметра обрабатывается, как и PS1, и

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

Стандартное значение - "> ".

PS3

Значение этого параметра используется в качестве

приглашения для команды select

(см. раздел "СИНТАКСИС КОМАНД" выше).

PS4

Значение этого параметра обрабатывается, как и PS1, и

выдается перед каждой командой, показываемой интерпретатором

bash в ходе трассировки выполнения. Первый символ PS4

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

вложенности. Стандартное значение - "+".

TIMEFORMAT

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

выдачи информации о времени выполнения для конвейеров, перед которыми

задано зарезервированное слово time. Символ % начинает управляющую

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

Управляющие последовательности имеют следующие значения (в квадратных

скобках представлены необязательные части):

%%

Символ %.

%[p][l]R

Время выполнения, в секундах.

%[p][l]U

Количество секунд работы процессора в пользовательском режиме.

%[p][l]S

Количество секунд работы процессора в системном режиме.

%P

Процент использования процессора, вычисляемый как (%U + %S) / %R.

Необязательный параметр p - это цифра, задающая точность,

количество знаков (долей секунды) после запятой. Значение 0

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

значения p больше 3 заменяются на 3. Если p не задано, используется значение 3.

Необязательный параметр l задает длинный формат, включая минуты, в виде

MMmSS.FFs. Значение праметра p определяет, включаются доли секунды или нет.

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

она имела значение $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'. Если установлено

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

При выводе строки по формату добавляется перевод строки.

HISTSIZE

Количество команд, которые необходимо запоминать в списке истории (см.

раздел "ИСТОРИЯ КОМАНД" ниже). Стандартное значение - 500.

HISTFILE

Имя файла, в котором сохраняется история команд (см. раздел

"ИСТОРИЯ КОМАНД" ниже).

Стандартное значение - ~/.bash_history.

Если эта переменная не установлена, история команд не сохраняется при

завершении работы интерактивного командного интерпретатора.

HISTFILESIZE

Максимальное количество строк, содержащееся в файле истории.

Если этой переменной присвоено значение, файл истории, при необходимости,

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

Стандартное значение - 500. Файл истории также усекается до этого размера после

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

OPTERR

Если имеет значение 1, bash показывает сообщения об ошибках, выдаваемые

встроенной командой getopts (см. раздел

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА"

ниже). Переменная OPTERR инициализируется значением 1 при каждом вызове

командного интерпретатора или выполнении сценария.

LANG

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

помощью переменной, имя которой начинается с LC_.

LC_ALL

Эта переменная переопределяет значение переменной LANG и всех остальных

переменных LC_, задающих категорию локали.

LC_COLLATE

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

полученных по шаблону имен файлов, и определяет интерпретацию диапазонов,

классов эквивалентостей и правила сравнения символов для подстановки имен

файлов и сопоставления с образцом.

LC_CTYPE

Эта переменная определяет интерпретацию символов и принадлежность символов

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

LC_MESSAGES

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

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

PROMPT_COMMAND

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

первичного приглашения.

IGNOREEOF

Управляет действием командного интерпретатора при получении символа

конца файла (EOF) как единственного символа в строке. Если

эта переменная установлена, ее значение интерпретируется как количество

подряд идущих символов EOF, с которых должна начинаться строка, чтобы в

результате работа командного интерпретатора bash завершилась. Если

переменная существует, но не имеет числового значения или не имеет значения вообще,

по умолчанию используется значение 10. Если эта переменная не существует,

EOF означает конец входных данных для командного интерпретатора.

TMOUT

Если установлено значение больше нуля, оно интерпретируется как количество

секунд ожидания ввода после выдачи первичного приглашения. Командный

интерпретатор bash завершает работу по истечении этого времени, если не

введена команда.

FCEDIT

Задает стандартный редактор для встроенной команды fc.

FIGNORE

Список суффиксов через двоеточие, которые необходимо игнорировать при

завершении имен файлов (см. раздел

"БИБЛИОТЕКА READLINE" ниже). Имя файла,

суффикс которого совпадает с одним из указанных в FIGNORE

значений, исключается из списка соответствующих имен файлов.

Пример значения - ".o:~".

GLOBIGNORE

Список шаблонов через двоеточие, задающих набор имен файлов, которые

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

также соответствует одному из шаблонов в GLOBIGNORE, оно удаляется

из списка соответствующих.

INPUTRC

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

установки в файле ~/.inputrc (см. раздел

"БИБЛИОТЕКА READLINE" ниже).

HISTCONTROL

Если имеет значение ignorespace, строки, начинающиеся символом

пробела, не попадают в список выполненных команд. Если имеет значение

ignoredups, строки, совпадающие с последней выполненной командой, в список

выполненных команд не попадают. Значение ignoreboth сочетает действие

обеих представленных опций. Если переменной нет или она имеет какое-то другое

значение, кроме перечисленных выше, все строки, прочитанные синтаксическим

анализатором, сохраняются в списке истории, с учетом значения переменной

HISTIGNORE. Действие этой переменной переопределяется переменной

HISTIGNORE. Вторая и следующие строки многострочной составной команды не

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

HISTCONTROL.

HISTIGNORE

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

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

строки и должен задавать всю строку ('*' неявно не добавляется). Каждый

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

переменной HISTCONTROL. Кроме обычных символов сопоставления с образцом

в командном интерпретаторе, символ '&' сопоставляется с предыдущей строкой

в списке истории. Символ '&' можно экранировать с помощью обратной косой. Перед

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

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

значения переменной HISTIGNORE.

histchars

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

уже выполненных команд (см. раздел

"ПОДСТАНОВКА КОМАНД ИЗ СПИСКА ВЫПОЛНЕННЫХ"

ниже). Первый символ - это символ подстановки из списка, который

означает начало работы со списком истории. Обычно это символ '!'.

Второй символ - это символ быстрой подстановки, используемый для быстрого

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

другой, заданной в этой команде. По умолчанию используется символ '^'.

Необязательный третий символ - это символ, указывающий, если является

первым символом слова, что остаток строки - это комментарий. Обычно в этом

качестве используется символ '#'. Символ комментария для списка истории

приводит к отказу от подстановки из истории для оставшихся слов в командной

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

оставшейся части строки как комментария.

HOSTFILE

Содержит имя файла того же формата, что и файл /etc/hosts, который

будет читаться при необходимости подстановки имени хоста. Этот файл

можно менять интерактивно; при следующей попытке подстановки имени

хоста bash добавит содержимое нового файла к уже существующей базе данных.

auto_resume

Эта переменная управляет взаимодействием командного интерпретатора с

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

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

как указатели возможного возобновления существующих остановленных заданий.

Неоднозначность не допускается; если с введенной строки начинается

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

Имя остановленного задания, в этом контексте, - это командная строка,

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

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

Если же задано значение substring, введенная строка должна быть

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

идентификатору задания %?

(см. раздел "УПРАВЛЕНИЕ ЗАДАНИЯМИ" ниже).

Если установлено любое другое

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

задания; это аналогично по возможностям идентификатору задания %.


Массивы

Командный интерпретатор bash поддерживает одномерные массивы.

Любая переменная может использоваться как массив; встроенная

процедура declare позволяет объявить массив явно.

Нет ограничения на рамер массива или требования непрерывности индексов. Массивы

индексируются целыми числами, начиная с нуля.

Массив создается автоматически при присваивании любой переменной значения

с помощью конструкции имя[индекс]=значение. Индекс обрабатывается как

арифметическое выражение, которое должно иметь неотрицательное значение.

Для явного объявления массива используется команда declare -a имя

(см. раздел "ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА"

ниже). Конструкция declare -a имя[индекс] также поддерживается;

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

с помощью встроенных команд declare и

readonly. Атрибут применяется ко всем элементам массива.

Присваивания массивам выполняются с помощью конструкций вида

имя=(значение1 ... значениеn), где каждое значение имеет вид

[индекс]=строка. Обязательно задавать только строку. Если необязательные

квадратные скобки и индекс указаны, присваивание выполняется элементу с

соответствующим индексом; в противном случае, в качестве индекса элемента

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

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

использовать и во встроенной команде declare.

Значения отдельным элементам массива присваиваются с помощью представленной

выше конструкции имя[индекс]=значение.

На любой элемент массива можно сослаться с помощью конструкции

${имя[индекс]}. Фигурные скобки необходимы, чтобы избежать конфликтов при

подстановке имен файлов. Если в качестве индекса указан символ @ или *,

слово заменяется всеми элементами массива с указанным именем. Эти индексы

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

Если слово указано в двойных кавычках, конструкция ${имя[*]} заменяется

одним словом, значение которого строится как значения каждого элемента

массива, разделенные первым символом из значения переменной среды IFS, а

конструкция ${имя[@]} заменяет каждый элемент массива имя отдельным словом.

Когда массив пустой, ${имя[@]} заменяется пустой строкой. Это аналогично замене

специальных параметров * и @ (см.

подраздел "Специальные параметры" выше).

Конструкция ${#имя[индекс]} заменяется длиной элемента ${имя[индекс]}.

Если в качестве индекса указан символ * или @, подставляется количество элементов

массива. Ссылка на переменную-массив без индекса эквивалентна ссылке на

элемент с индексом ноль.

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

unset.

Команда unset имя[индекс] уничтожает элемент массива с указанным индексом.

Команда unset name, где name - имя массива, или unset имя[индекс],

где индекс - * или @, удаляет весь массив.

Встроенные команды declare,

local и readonly

воспринимают опцию -a для указания массива.

Встроенная команда read воспринимает опцию -a

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

входного потока. Встроенные команды set и

declare выдают значения массивов

так, что их можно повторно использовать в присваиваниях.


ЗАМЕНЫ

Замена выполняется в командной строке после разбиения ее на слова.

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

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

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

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

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

замена тильды, подстановка значений переменных, параметров, арифметических

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

и подстановка имен файлов.

В системах, где это может поддерживаться, выполняется дополнительная замена -

подстановка процессов.

Только замена выражений в фигурных скобках, разбиение слов

и подстановка имен файлов может изменить количество слов в командной

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

исключение - подстановка "$@" и "${имя[@]}", как объяснялось выше

(см. раздел "ПАРАМЕТРЫ").


Замена выражений в фигурных скобках

Замена выражений в фигурных скобках - это механизм генерации произвольных

строк. Он аналогичен подстановке имен файлов, но генерируемые имена

не обязательно должны существовать. Шаблоны в фигурных скобках имеют вид

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

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

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

так (слева направо) строке добавляется суффикс.

Выражения в фигурных скобках могут быть вложенными. Результаты каждой замены не

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

a{d,c,b}e заменяется на 'ade ace abe'.

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

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

замен. Эта замена - строго текстуальная. Командный интерпретатор bash никак

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

Корректное выражение в фигурных скобках должно содержать незамаскированные

открывающую и закрывающую фигурную скобку и, по крайней мере, одну незамаскированную

запятую. Любое некорректное выражение в фигурных скобках остается неизменным.

Символ { или , может маскироваться обратной косой для предотвращения его

интерпретации на этапе замены выражений в фигурных скобках.

Эта конструкция обычно используется для сокращенной записи группы строк с

общим префиксом, более длинным чем в представленном выше примере:


mkdir /usr/local/src/bash/{old,new,dist,bugs}

или


chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Замена выражений в фигурных скобках вносит небольшое рассогласование

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

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

и просто сохраняет их. Командный интерпретатор bash удаляет фигурные скобки

из слова при замене. Например, слово, введенное в sh как file{1,2},

остается без изменений. Это же слово заменяется парой слов

file1 file2 после замены выражения в фигурных скобках в bash.

Если требуется полная совместимость с sh, командный интерпретатор bash

надо запускать с опцией +B или отключать с помощью опции

+B команды set (см. раздел

"ВСТРОЕННЫЕ КОМАНДЫ ИНТЕРПРЕТАТОРА" ниже).


Замена тильды

Если слово начинается незамаскированным символом тильда (~),

все символы до первой незамаскированной косой черты (или все символы,

если незамаскированной косой черты в слове нет) считаются тильда-префиксом.

Если н
Категория: (1) Прикладные программы и команды оболочки | Просмотров: 1318 | Добавил: Администратор | Теги: man bash, BASH | Рейтинг: 0.0/0
Всего комментариев: 0
avatar