/etc/profile |
выполняется автоматически во время процедуры login, если эта оболочка (bash) указана в файле /etc/passwd. |
$HOME/.bash_profile |
выполняется автоматически во время процедуры login. |
$HOME/.bashrc |
выполняется автоматически во время запуска оболочки. |
$HOME/.bash_logout |
выполняется автоматически во время процедуры logout. |
$HOME/.bash_history |
в этом файле содержатся команды, которые были выданы с терминала во время последней сессии. |
/etc/passwd |
из этого файла берутся имена домашних каталогов для аббревиатур типа Ename. |
[*] |
любая строка нулевой или ненулевой длины; |
[?] |
любой символ; |
[abc...] |
любой из символов, заключенных в скобки; между символами может быть знак "-" (минус), чтобы обозначить символьный интервал, например, [a-g] символы начиная с "a" до "g"; |
[!abc...] |
любые символы, которые не эквивалентны тем, что стоят в скобках; |
каталог пользователя с именем name; |
текущий рабочий каталог; |
предыдущий рабочий каталог. |
Возможности редактирования в командной строке, которые предоставляет оболочка bash ,довольно разнообразны и могут удовлетворить различные вкусы и предпочтения пользователей. Автор не═уверен, что перечислил все возможные средства редактирования командной строки, которые реализует bash, а лишь те что являются, по мнению автора, наиболее используемыми. Кроме того, свойства редактирования могут зависеть также от версии оболочки. Автор пользовался оболочкой GNU bash, version 1.14.7(1).
CTRL-a |
переместить курсор на самый левый символ строки; |
CTRL-b |
переместить курсор на один символ влево; |
ESCc | символ, на который указывает курсор, заменить на═тот же, но заглавный, а курсор переместить на первый пробел справа от текущего слова; |
DEL |
удалить символ, слева от курсора; |
CTRL-d |
удалить символ, на которй показывает курсор; |
CTRL-e |
переместить курсор на самый правый символ строки; |
CTRL-f |
переместить курсор на один символ вправо; |
CTRL-k |
удалить правую часть строки начиная с символа, на который указывает курсор; |
CTRL-l |
очистить экран и поместить текущую команду в верхней строке экрана; |
ESCl | превратить символы начиная с символа, на который указывает курсор, до самого правого символа в данном слове в прописные буквы, а курсор установить на пробел справа от слова; |
CTRL-m |
то же что RETURN; |
CTRL-o |
то же что RETURN, затем отображается очередная команда из файла история; |
CTRL-t |
поменять местами два символа: символ, на который показывает курсор, и символ слева от курсора, затем, курсор переместить на один символ вправо; |
ESCt | поменять местами два слова: слово, на которое указывает курсор и слово слева от первого; |
CTRL-u | удалить левую часть строки включая символ, который находится слева от курсора; |
А вот некоторые дополнительные команды редактирования командной строки.
ESCu | сделать символы данного слова заглавными, начиная с символа, на который указывает курсор, до самого правого символа в слове, а курсор установить на пробел справа от слова; |
CTRL-y |
вернуть часть строки удал©нную ранее с помощью CTRL/u: эта часть строки вставляется в текущую строку справа от курсора; |
ESC. | вставить последнее слово из предыдущей команды перед символом, на который указывает курсор; |
CTRL -[ | то же, что ESC; |
ESC _ | то же, что ESC. |
В оболочке bash имеются специальные комбинации управляющих символов, которые помогают сократить как время на печатание полных им©н команд, файлов, переменных окружения, так и время на поиск нужных им©н, которые могут оказаться совсем не короткими. Эти средства позволяют bash "догадаться" какое имя файла или какую команду вы имеете в виду и подставляет соответствующие имена в ответ на ввод описываемых ниже кодовых комбинаций.
TAB | оболочка пытается выполнить общий алгоритм подстановки текста в командной строке. Если вы попробуете ввести в пустой командной строке этот символ ( TAB), то после первого ввода вы получите звуковой сигнал, а после второго получите примерно следующее сообщение: "There are 2179 possibilities. Do you really wish to see them all? (y or n)". Если вы ввели несколько символов команды, а после этого была нажата клавиша TAB, то вы получите значительно менее длинный список возможных команд. Если команда введена, то вы получите список им©н файлов. |
ESC? | напечатать список возможных завершений текста; |
ESC/ | попытаться завершить имя файла; |
CTRL-x/ | напечатать список возможных завершений имени файла; |
попытаться завершить имя пользователя; |
напечатать список возможных завершений имени пользователя; |
ESC$ | попытаться завершить имя переменной окружения; |
CTRL-X$ | список возможных завершений для имени переменной окружения. |
ESC@ | попытка возможного завершения для сетевого имени машины; |
CTRL-X@ | напечатать список возможных сетевых имен машин; |
ESC! | попытка завершения имени команды; |
CTRL-x! | список возможных завершений имени команды; |
ESC TAB |
попытка завершения имени команды из прежних команд, выданных в сессии.
|
cmd &
cmd; cmd1
( cmd; cmd1 )
cmd C cmd1
cmd cmd1
cmd $cmd1
cmd && cmd1
cmd CC cmd1
{ cmd; cmd1 }
#
#!
:
.
alias
bg
bind
break
built-in
case
cd [dir]
command
continue
declare
dirs
echo
enable
eval
exec
exit
fc [options][first][last] |
---|
fc -s [old=new][command] |
---|
отобразить или отредактировать команды в сохран©нном списке команд, выданных в данной сессии. Параметры:
Примеры: fc -l -5 - показать пять последних команд; fc -l 520 530 - показать команды, начиная с номера 520 до номера 530; fc -s k9q=orion telnet - заменить k9q на orion в ранее выданной команде telnet; fc -e pico -15 - с помощью редактора pico отредактировать 15-ую команду от конца списка команд и выполнить е© по завершении редактирования;
|
=2cm
fg [jobIDs]
перевести текущее задание или задание с номером jobID из режима
фоновой задачи в режим задачи переднего плана. Полезно смотреть раздел
"Управление заданиями".
=2cm
for x [in list]
do
commands
done
присвоить последовательно каждое слово в списке list переменной x и выполнить команды commands для каждого значения x. Если
список list опущен, то предполагается использование списка
позиционных параметров
$@.
Примеры:
for user in w -h | awk '{print($1)}' | sort | uniq
do
finger $user
done
Привед©нный выше скрипт показывает информацию о логированных пользователях в системе.
Обратите внимание, что do стоит во второй строке. Если do будет в той строке что и for то надо ставить точку с запятой перед do.
=2cm
function name(){list}
определяет функцию с именем name. Последовательность команд
оболочки list, которая составляет тело функции, может использовать
значения
позиционных параметров функции также как и в обычном скрипте ($1, $2,
etc.). Тело функции
ограничивается: в начале - фигурной открывающей скобкой "{" и закрывающей
фигурной скобкой "}" в конце.
=2cm
getopts optstring name [args]
используется процедурами оболочки, чтобы разделить позиционные параметры и
аргументы. Обычно применение - внутри скрипта для анализа параметров
скрипта.
Строка optstring содержит распознаваемые параметры,
обозначаемые одним символом. Если
за символом следует двоеточие, то данный параметр требует
аргумент, который должен
быть
отделен от параметра одним пробелом. Например, если optstring='ax:b', то возможно использование тр©х параметров: a,
x и b,
прич©м параметр x требует аргумент.
При каждом вызове getopts
помещает значение параметра в переменную окружения с именем name,
инициализируя переменную, если е© нет, а═ индекс следующего аргумента
будет помещен в переменную окружения OPTIND.
OPTIND устанавливается в 1 каждый раз, когда вызывается оболочка или
скрипт. Когда параметр требует аргумент, getopts помещает этот аргумент
в переменную OPTARG. Оболочка не переустанавливает OPTIND автоматически.
Иными словами, если имеет место многократный вызов getopts в одном
скрипте, то необходимо побеспокоиться об установке OPTIND в начальное
значение.
В качестве примера рассмотрим простой скрипт.
#!/bin/bash echo 0=$0 1=$1 2=$2 3=$3 4=$4 while getopts ax:b NAME;do echo OPT=$NAME OPTIND=$OPTIND OPTARG=$OPTARG CC=$? doneВ ответ на вызов этого скрипта ./G -a -b -x будет напечатано следующее.
16:49:20>bash>pcfarm>./G -a -b -x 0=./G 1=-a 2=-b 3=-x 4= OPT=a OPTIND=2 OPTARG= CC=0 OPT=b OPTIND=3 OPTARG= CC=0 ./G: option requires an argument -- x OPT=? OPTIND=4 OPTARG= CC=0А в ответ на другую строку ./G -a -b -x FileName получим:
16:51:33>bash>pcfarm>./G -a -b -x FileName 0=./G 1=-a 2=-b 3=-x 4=FileName OPT=a OPTIND=2 OPTARG= CC=0 OPT=b OPTIND=3 OPTARG= CC=0 OPT=x OPTIND=5 OPTARG=FileName CC=0
=2cmhash [-r][commands]
произвести
поиск команд, указанных в аргументе и запомнить оглавление, в котором
находится каждая команда. Хеширование приводит к тому, что оболочка
запоминает связь между именем команды, указанной в аргументе, и абсолютным
именем каталога, в котором содержится данное имя. Таким образом, будущее
использование команды уже не будет требовать никакого поиска по каталогам.
Без аргументов, команда hash печатает на экране список команд, уже
содержащихся во внутренней таблице оболочки. При печати указывается,
сколько раз использовалась каждая команда из списка.
Если указан параметр -r, то удаляется соответствующая запись из
таблицы или все записи (если опущен параметр commands).
<
help | [string] печатает информацию о встроенных командах оболочки, имя которых начинается на string. Например, команда help h выдаст на экран следующее: |
hash: hash [-r] [name ...] For each NAME, the full pathname of the command is determined and remembered. The -r option causes the shell to forget all remembered locations. If no arguments are given, information about remembered commands is presented. help: help [pattern ...] Display helpful information about builtin commands. If PATTERN is specified, gives detailed help on all commands matching PATTERN, otherwise a list of the builtins is printed. history: history [n] [ [-awrn] [filename]] Display the history list with line numbers. Lines listed with with a `*' have been modified. Argument of N says to list only the last N lines. Argument `-w' means to write out the current history file; `-r' means to read it instead. Argument `-a' means to append history lines from this session to the history file. Argument `-n' means to read all history lines not already read from the history file. If FILENAME is given, then use that file, else if $HISTFILE has a value, use that, else use ~/.bash_history. |
<
history | [options]
печатает нумерованный список команд, выданных в текущей и/или прошлой
сессий.
Если указан параметр lines, то отображаются последние lines строк. Параметры:
|
=2cmif test-cmd
начинает условный оператор. Команда имеет следующие форматы:
<
jobs [options][jobIDs] |
jobs -x command [args] |
|
<
kill [options] IDs |
|
=2cm=1letexpressions
выполнить арифметические операции над целыми выражениями. expressions состоит из целых чисел, операторов и имен переменных
окружения, которые не нуждаются в предшествующем знаке $). Выражения
должны быть заключены в кавычки, если они содержат пробелы или другие
специальные символы.
Примеры:
let k=k+1
let "k = k + 1"
В обоих примерах переменная k увеличивается на 1.
=2cm=1logout
Выход из оболочки. Может быть использована, если планируется выход из
оболочки для логирования. В противном случае следует использовать команду
exit.
=2cm=1popd[options]
управление стеком каталогов оболочки. По умолчанию, удаляется самый
верхний
каталог и производится переход в него.
Options:
=2cm=1
+n - удалить n-ый каталог из стека, начиная счет с вершины стека с 0.
=2cm=1
-n - удалить n-ый каталог из стека, начиная счет снизу стека с 0.
=2cm=2pushddirectory
pushd[options]
в первом варианте добавляет
каталог в вершину стека каталогов и делает его текущим каталогом.
Во
втором варианте, если параметры опущены, то меняются местами два верхних
каталога стека каталогов. Если задано +n, то n-ый каталог от вершины
из стека каталогов становится самым верхним. Если задано -n, то
верхним каталогом становится n-ый каталог от дна стека каталогов.
=2cm=1pwd
напечатать абсолютное имя текущего каталога.
Если командой set установлен параметр -p, то команда pwd не будет печатать имя символической ссылки.
=2cm=1read[options] var1
[var2 ...]
читается одна строка из стандартного ввода. Каждое слово из введенной
строки присваивается переменной var1, var2, ... Если
переменные исчерпаны, то остаток строки
присваивается последней переменной.
Если переменная одна, то ей присваивается вся строка. Если переменных нет,
то строка присваивается переменной окружения REPLY.
Options:
-r игнорировать обратный слеш как символ продолжения строки.
=2cm=1readonly[options] var1
[var2 ...]
предотвратить изменение значений специфицированных переменных
(присвоить атрибут "только чтение").
Options:
=2cm=1return[n]
используется внутри определения функции. Выйти из функции с кодом
завершения n. Если n опущено, то код завершения равен коду
завершения команды, выполненной перед return.
=2cm=1selectname [in
wordlist;]
do
commands
done
выбрать значение
для имени name среди значений в wordlist. При выполнении
команды на экране печатаются нумерованный список значений из wordlist. Когда оператор вводит номер значения, то выполняется
последовательность команд commands, затем снова производится выбор
нового значения, если только последовательность commands не содержит
команд break или return или exit.
set [options][arg1 arg2 ...] |
---|
без параметров команда set печатает значения всех переменных окружения, известных в текущей оболочке. Параметры могут быть разрешены (-options) или запрещены (+options). Параметры могут быть установлены при вызове оболочки, т.е. при вызове программы bash. Аргументы присваиваются в естественном порядке: первый аргумент присваивается $1, второй - $2 и т.д. |
Параметры:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
=2cm=1shift [n]
без параметорв -- сдвинуть позиционные параметры (параметр $2 становится
$1 и так далее).
Если дан параметр n, то производится сдвиг на n позиций.
=2cm=1source file
[arguments]
читать и выполнить строки из файла file. При этом файл file не
обязан быть исполняемым, но должен находиться в группе каталогов,
где производится поиск исполняемых модулей (переменная PATH).
=2cm=1suspend [-f]
то же самое, что CTRL-Z. Часто используется, чтобы приостановить
команду su. Параметр -f заставляет приостановить работу
оболочку, даже если это оболочка, которая начала работать сразу после
процесса login.
=2cm=1test condition
вычислить условие и, если условие верно, вернуть нулевой код завершения. В
противном случае, вернуть ненулевой код завершения. Альтернативная форма
определения условия заключается в использовании квадратных скобок вместо
слова test. Выражения, которые могут использоваться для вычисления
условий, перечислены ниже.
[-b file] -- file существует и является специальным блоковым файлом. |
[-c file] -- file существует и является специальным символьным файлом. |
[-d file] -- file существует и является каталогом. |
[-f file] -- file существует и является обычным регулярным файлом. |
[-g file] -- file существует и имеет установленный бит mboxset-group-id. |
[-k file] -- file существует и имеет установленным бит sticky. |
[-p file] -- file существует и является именованным программным каналом (named pipe) с доступом FIFO. |
[-r file] -- file существует и разрешен для чтения. |
[-s file] -- file существует и имеет размер в байтах больше нуля. |
[-t n] -- открытый описатель файла n связан с терминальным устройством; по умолчанию, n=1. |
[-u file] -- file существует и имеет установленный бит set-user-id. |
[-w file] -- file существует и разрешена запись в файл. |
[-x file] -- file существует и является исполняемым файлом. |
[-G file] -- file существует и его группа является эффективной группой процесса. |
[-L file] -- file существует и является символической ссылкой. |
[-O file] -- file существует и его владелец ? |
[-S file] -- file существует и является сокетом. |
[fA -ef fB] -- файлы fA и fB существуют и связаны между собой (иначе, это один и тот же файл). |
[fA -nt fB] -- файл fA новее, чем fB. |
[fA -ot fB] -- файл fA старее, чем fB. |
[-n sA] -- строка sA имеет НЕнулевую длину. |
[-z sA] -- строка sA имеет нулевую длину. |
[sA = SB] -- строка sA равна строке sB. |
[sA != SB] -- строка sA НЕ равна строке sB. |
[string] -- строка string не пуста. |
[n1 -eq n2] -- n1 равно n2. |
[n1 -qe n2] -- n1 больше или равно n2. |
[n1 -gt n2] -- n1 больше n2. |
[n1 -le n2] -- n1 меньше или равно n2. |
[n1 -lt n2] -- n1 меньше n2. |
[n1 -ne n2] -- n1 НЕ равно n2. |
[!condition] -- верно, если условие condition ложно. |
[C1 -a C2] -- верно, если условия C1 и C2 верны одновременно (логический "И"). |
[C1 -a C2] -- верно, если хотя бы одно условий C1 или C2 верно (логический "ИЛИ"). |
Замечание: при построении логических выражений могут использоваться более, чем два условия.
=2cm=1times
напечатать время процессора, потребленное пользователем и системой в
данной сессии.
=2cm=1trap [-l] [[commands]
signals]
выполнить команды commands, если получены любые сигналы signals. Общие сигналы включают сигналы с номерами 0, 1, 2 и 15.
Несколько команд на месте commands должны быть объединены в группу и
разделены точкой с запятой. Если commands представляет собой пустую
строку, например, (trap "" signals), тогда сигналы signals будут игнорироваться данной оболочкой. Если команды commands полностью опущены, то обработка сигналов signals будет
возвращена к стандартному значению.
Если все параметры commands и signals опущены, то будут
выведены текущие установки. Если указан параметр -l, то будет
отпечатан полный список сигналов.
=2cm=1type [options] commands
напечатать тип ключевых слов: является ли ключевое слово именем
программы (скрипта), или ключевым словом, используемым оболочкой, или
встроенной командой оболочки, или это неопознанная комбинация символов.
|
Здесь мы хотим узнать какой тип имеют команды trap, while,
LoadFarm и htpl.
Мы сделаем это командой:
type trap while LoadFarm htpl В ответ, оболочка bash напечатала:
trap is a shell builtin
Как видим, оболочка сообщила, что trap есть встроенная команда оболочки, while есть ключевое слово оболочки, а LoadFarm -- это программа или скрипт, а htpl -- не найдено.
|
=2cm=1typeset
смотрите declare.
=2cm=1ulimit [options] [n]
если опущено n, тo напечатать одно или более ограничений
на используемые ресурсы (если
ресурс не имеет явных ограничений, то это не значит, что он может быть
любым). Если определен параметр n, то присвоить соответствующему
ограничению на ресурс значение n. Ресурсы могут быть жесткими (-H) и мягкими (-S). По умолчанию, ulimit устанавливает оба
лимита, а печатает мягкий лимит.
Параметры определяют какие лимиты используются:
Значения параметров:
|
=2cm=1unset [-f] [-v] [name
...]
Для каждого имени name удалить соответствующую переменную или
функцию. Если задан параметр -v, то команда unset будет влиять
только на переменные (а не функции). Если указан параметр -f, то unset будет действовать лишь на функции (а не переменные). Если параметры
(флаги) не указаны, то unset сначала пытается воздействовать на
переменные, а уже потом на функции. Некоторые переменные, например, PATH или
IFS не могут быть удалены (см. атрибут readonly).
=2cm=1wait [ID]
пауза в выполнении до тех пор, пока определ©нный процесс с номером ID
или задание с номером ID будут завершены. Если параметр
опущен, то ожидается завершение выполнения всех фоновых заданий.
Переменная окружения $! содержит номер фонового процесса, который был запущен последним. Если
не включена возможность управления заданиями, то параметр ID может
обозначать только номер процесса. Смотрите раздел "Управление заданиями".
Пример:
StartPar &
wait $!
ожидать завершения фонового процесса, который выполняет скрипт
StartPar.
=2cm=1while CONDITION; do
COMMANDS; done
Сделать все подстановки в последовательности команд COMMANDS и
повторять выполнение этой последовательности до тех пор, пока условие
CONDITION не примет значение false (неверно).