Краткое имя |
Полное имя |
Описание |
-C |
noclobber |
Предотвращает перезапись файла в операциях перенаправления вывода (не распространяется на конвейеры (каналы) -- >|) |
-D |
(нет) |
Выводит список строк в двойных кавычках, которым предшествует символ $, сам сценарий не исполняется |
-a |
allexport |
Экспорт всех, определенных в сценарии, переменных |
-b |
notify |
Выводит уведомление по завершении фоновой задачи (job) (довольно редко используется в сценариях) |
-c ... |
(нет) |
Читает команды из ... |
-f |
noglob |
Подстановка имен файлов (globbing) запрещена |
-i |
interactive |
Сценарий запускается в интерактивном режиме |
-p |
privileged |
Сценарий запускается как "suid" (осторожно!) |
-r |
restricted |
Сценарий запускается в ограниченном режиме (см. Глава 20). |
-u |
nounset |
При попытке обращения к неопределенным переменным, выдает сообщение об ошибке и прерывает работу сценария |
-v |
verbose |
Выводит на stdout каждую команду прежде, чем она будет исполнена |
-x |
xtrace |
Подобна -v, но выполняет подстановку команд |
-e |
errexit |
Прерывает работу сценария при появлении первой же ошибки (когда команда возвращает ненулевой код завершения) |
-n |
noexec |
Читает команды из сценария, но не исполняет их (проверка синтаксиса) |
-s |
stdin |
Читает команды с устройства stdin |
-t |
(нет) |
Выход после исполнения первой команды |
- |
(нет) |
Конец списка ключей (опций), последующие аргументы будут восприниматься как позиционные параметры. |
-- |
(нет) |
Эквивалент предыдущей опции (-). |
Операция |
Название |
Описание |
[диапазон строк]/p |
print |
Печать [указанного диапазона строк] |
[диапазон строк]/d |
delete |
Удалить [указанный диапазон строк] |
s/pattern1/pattern2/ |
substitute |
Заменить первое встреченное соответствие шаблону pattern1, в строке, на pattern2 |
[диапазон строк]/s/pattern1/pattern2/ |
substitute |
Заменить первое встреченное соответствие шаблону pattern1, на pattern2, в указанном диапазоне строк |
[диапазон строк]/y/pattern1/pattern2/ |
transform |
заменить любые символы из шаблона pattern1 на соответствующие символы из pattern2, в указанном диапазоне строк (эквивалент команды tr) |
g |
global |
Операция выполняется над всеми найденными соответствиями внутри каждой из заданных строк |
Операция |
Описание |
8d |
Удалить 8-ю строку. |
/^$/d |
Удалить все пустые строки. |
1,/^$/d |
Удалить все строки до первой пустой строки, включительно. |
/Jones/p |
Вывести строки, содержащие "Jones" (с ключом -n). |
s/Windows/Linux/ |
В каждой строке, заменить первое встретившееся слово "Windows" на слово "Linux". |
s/BSOD/stability/g |
В каждой строке, заменить все встретившиеся слова "BSOD" на "stability". |
s/ *$// |
Удалить все пробелы в конце каждой строки. |
s/00*/0/g |
Заменить все последовательности ведущих нулей одним символом "0". |
/GUI/d |
Удалить все строки, содержащие "GUI". |
s/GUI//g |
Удалить все найденные "GUI", оставляя остальную часть строки без изменений. |
Замена строки пустой строкой, эквивалентна удалению части строки, совпадающей с шаблоном. Остальная часть строки остается без изменений. Например,
Код завершения |
Смысл |
Пример |
Примечание |
1 |
разнообразные ошибки |
let "var1 = 1/0" |
различные ошибки, такие как "деление на ноль" и пр. |
2 |
согласно документации к Bash -- неверное использование встроенных команд |
|
Встречаются довольно редко, обычно код завершения возвращается равным 1 |
126 |
вызываемая команда не может быть выполнена |
|
возникает из-за проблем с правами доступа или когда вызван на исполнение неисполняемый файл |
127 |
"команда не найдена" |
|
Проблема связана либо с переменной окружения $PATH, либо с неверным написанием имени команды |
128 |
неверный аргумент команды exit |
exit 3.14159 |
команда exit может принимать только целочисленные значения, в диапазоне 0 - 255 |
128+n |
фатальная ошибка по сигналу "n" |
kill -9 $PPID сценария |
$? вернет 137 (128 + 9) |
130 |
завершение по Control-C |
|
Control-C -- это выход по сигналу 2, (130 = 128 + 2, см. выше) |
255* |
код завершения вне допустимого диапазона |
exit -1 |
exit может принимать только целочисленные значения, в диапазоне 0 - 255 |
Согласно этой таблице, коды завершения 1 - 2, 126 - 165 и 255
Операторы пакетных файлов |
Эквивалентные команды в UNIX |
Описание |
% |
$ |
префикс аргументов командной строки |
/ |
- |
признак ключа (опции) |
\ |
/ |
разделитель имен каталогов в пути |
== |
= |
(равно) сравнение строк |
!==! |
!= |
(не равно) сравнение строк |
| |
| |
конвейер (канал) |
@ |
set +v |
не выводить текущую команду |
* |
* |
"шаблонный символ" в имени файла |
> |
> |
перенаправление (с удалением существующего файла) |
>> |
>> |
перенаправление (с добавлением в конец существующего файла) |
< |
< |
перенаправление ввода stdin |
%VAR% |
$VAR |
переменная окружения |
REM |
# |
комментарий |
NOT |
! |
отрицание последующего условия |
NUL |
/dev/null |
"черная дыра" для того, чтобы "спрятать" вывод команды |
ECHO |
echo |
вывод (в Bash имеет большое число опций) |
ECHO. |
echo |
вывод пустой строки |
ECHO OFF |
set +v |
не выводить последующие команды |
FOR %%VAR IN (LIST) DO |
for var in [list]; do |
цикл "for" |
:LABEL |
эквивалент отсутствует (нет необходимости) |
метка |
GOTO |
эквивалент отсутствует (используйте функции) |
переход по заданной метке |
PAUSE |
sleep |
пауза, или ожидание, в течение заданного времени |
CHOICE |
case или select |
выбор из меню |
IF |
if |
условный оператор if |
IF EXIST FILENAME |
if [ -e filename ] |
проверка существования файла |
IF !%N==! |
if [ -z "$N" ] |
Проверка: параметр "N" отсутствует |
CALL |
source или . (оператор "точка") |
"подключение" другого сценария |
COMMAND /C |
source или . (оператор "точка") |
"подключение" другого сценария (то же, что и CALL) |
SET |
export |
установить переменную окружения |
SHIFT |
shift |
сдвиг списка аргументов уомандной строки влево |
SGN |
-lt или -gt |
знак (целого числа) |
ERRORLEVEL |
$? |
код завершения |
CON |
stdin |
"консоль" (stdin) |
PRN |
/dev/lp0 |
устройство принтера |
LPT1 |
/dev/lp0 |
устройство принтера |
COM1 |
/dev/ttyS0 |
первый последовательный порт |
Пакетные файлы обычно содержат вызовы команд DOS. Они должны быть заменены эквивалентными командами UNIX.
Команды DOS |
Эквивалент в UNIX |
Описание |
ASSIGN |
ln |
ссылка на файл или каталог |
ATTRIB |
chmod |
изменить атрибуты файла (права доступа) |
CD |
cd |
сменить каталог |
CHDIR |
cd |
сменить каталог |
CLS |
clear |
очистить экран |
COMP |
diff, comm, cmp |
сравнить файлы |
COPY |
cp |
скопировать файл |
Ctl-C |
Ctl-C |
прервать исполнение сценария |
Ctl-Z |
Ctl-D |
EOF (конец-файла) |
DEL |
rm |
удалить файл(ы) |
DELTREE |
rm -rf |
удалить каталог с подкаталогами |
DIR |
ls -l |
вывести содержимое каталога |
ERASE |
rm |
удалить файл(ы) |
EXIT |
exit |
завершить текущий процесс |
FC |
comm, cmp |
сравнить файлы |
FIND |
grep |
найти строку в файлах |
MD |
mkdir |
создать каталог |
MKDIR |
mkdir |
создать каталог |
MORE |
more |
постраничный вывод |
MOVE |
mv |
переместить |
PATH |
$PATH |
путь поиска исполняемых файлов |
REN |
mv |
переименовать (переместить) |
RENAME |
mv |
переименовать (переместить) |
RD |
rmdir |
удалить каталог |
RMDIR |
rmdir |
удалить каталог |
SORT |
sort |
отсортировать файл |
TIME |
date |
вывести системное время |
TYPE |
cat |
вывести содержимое файла на stdout |
XCOPY |
cp |
(расширенная команда) скопировать файл |