Полезные команды интерпретатора shell
В этом приложении перечисляются и описываются некоторые полезные команды интерпретатора shell. Здесь не приводится исчерпывающий список параметров для каждой команды. Однако имеющихся параметров вполне достаточно для понимания работы команд.
Дополнительные примеры использования можно найти в других главах книги.
Формат:
basename путь
Команда basename выделяет путь из имеющегося имени пути и просто возвращает имя файла. Эта команда обычно применяется в конструкциях usage в сценариях. В этом случае подстановка используется при отображении на экране имен файлов.
$ basename /home/dave/myscript
myscript
echo "Usage: `basename $0` give me a file" exit 1
Если приведенный выше код именуется myscript, вывод может быть следующим:
myscript: give me a file
Здесь $0 является специальной переменной, которой присвоено текущее полное имя пути для сценария.
Формат:
cat параметры файлы
Параметры:
-v Задается отображение управляющих символов
Команда cat является одной из наиболее часто применяемых команд постраничной разбивки текстовых файлов.
$ cat myfile
Отображение содержимого файла myfile.
$ cat myfile myfile2 >> hold_file
Приведенная выше команда осуществляет объединение двух файлов (myfile и myfile2) в один файл, именуемый hold_file.
cat dtl | while read line do
echo $LINE done
Команда cat также используется для считывания файлов, осуществляемого с помощью сценариев.
Формат:
compress параметры файлы
Параметры:
-v Вывод на экран результатов сжатия
Команда compress используется для уменьшения размера файлов. После завершения сжатия файл получает расширение .Z Для возврата файла в исходное состояние используется команда uncompress.
$ compress myfile
$ ls myfile*
myfile. Z
Формат:
cp параметры файл1 файл2
Параметры:
-i Запрос на подтверждение перезаписи файлов
-p Сохранение набора прав доступа и времени изменения
-r Рекурсивное копирование каталога
Для копирования файла myfile в myfilel.bak применяется команда:
$ cp myfile1 myfile1.bak
Копирование файла get.prd из каталога /usr/local/sybin в каталог /usr/local/bin осуществляется командой
$ pwd
/usr/local/sybin
$ cp get.prd ../bin
Для рекурсивного копирования всех файлов и подкаталогов из каталога /logs (вниз) в каталог /hold/logs применяется команда:
$ cp -r /logs/ /hold/logs
Формат:
diff параметры файл1 файл2
Параметры:
-c Генерирует различный вывод на основе стандартного формата (см. ниже) — i Игнорирование регистров символов
При использовании файлов файлы файл2 из нашего примера comm команда diff будет выводить строки, которые не совпадают в заданных файлах.
$ diff файл1 файл2
2,3с2,3
>The games
>The boys in company С
Команда diff сообщает о том, что строки 2 и 3 различны, но второй столбец в строке 3 не совпадает.
Формат:
dircmp параметры каталог1 каталог2
Параметры:
-s Не отображать различные файлы
Действие команды dircmp напоминает действие команды diff: она также производит сравнение с последующим выводом на экран найденных различий.
Формат:
dirname имя_пути
В противоположность команде basename, команда dirname выводит на экран только имя пути:
$ dirname /home/dave/myfile/home/dave
Формат:
du параметры каталог
Параметры:
-a Отображается размер каждого файла, а не только размер каталогов -s Отображается только итоговая сумма
Команда du выводит информацию об использовании диска в виде блоков размером по 512 байтов. Эта команда применяется, главным образом, для вывода размеров каталогов.
$ pwd
/var
$ du -s
14929
Размер структуры каталога /var составляет 14929 блоков.
Формат:
file имя_файла
Благодаря этой команде интерпретатор shell определяет тип файла.
$ file core
core: ELF 32–bit LSB core file of 'awk' (signal 6), Intel 80386, version 1
$ file data.f
data.f: ASCII text
$ file month_end.sh
month_end.sh: Bourne shell script text
Формат:
fuser параметры файл
Параметры:
-k Уничтожает все процессы для файла или файловой системы -u Отображает все процессы для файла или файловой системы
Команда fuser применяется для отображения процессов, выполняющихся в файловой системе или для файлов, к которым осуществляется доступ. В некоторых системах возможен выбор при использовании параметров -u и — т. Совместно с командой fuser возможно применение конструкции if.
Для отображения списка активных процессов, соответствующих устройству /dev/hda5, применяется команда:
$ fuser -m /dev/hda5
/dev/hda5: 1 1r 1c 1e 37 37r 37c 37e 144 144r 144c 144e 158 158r 158c 158e 167r 167c 167e 178 17 8r 178c 178e 189 189r 189c
Уничтожение всех процессов, связанных с устройством /dev/hda5, можно осуществить посредством команды:
$ fuser -k /dev/hda5
Для проверки, что файл doc_part открыт, и для определения выполняющихся процессов используется следующая команда:
$ fuser -m /root/doc_part
/root/dt: 1 1r 1c le 37 37r 37c 37e 144 144r 144c 144e 158 158r 158c 158e 167r 167c 167e 178 178r 178c 178e 189 189r 189c*l89e 201 201r 201c 201e 212 212r 212c 212e 223 223r
Некоторые варианты команды fuser отображают идентификаторы регистрации в качестве части вывода. Если же в вашем случае этого не происходит, используйте номера, оканчивающиеся на 'е', а затем примените команду grep посредством ps ха
или ps -ef.
Формат:
head -number файлы
Команда head используется для отображения первых десяти строк файла. Для отображения меньшего или большего количества строк используется параметр -number. Например, команда
$ head -1 myfile
задает отображение первой строки файла, а команда
$ head -30 logfile | more
приводит к отображению первых 30 строк файла logfile.
logname
Формат:
logname
При этом отображается регистрационное имя текущего пользователя:
$ logname
dave
Формат:
mkdir параметры каталог
Параметры:
-m Устанавливает уровень доступа при создании каталога
Команда
$ mkdir HOLD_AREA
$ ls -1 HOLD*
-rw‑rw‑r-- 1 dave admin 3463 Dec 3 1998 HOLD_AREA
приведет к созданию каталога HOLD_AREA.
Формат:
more параметры файлы
Эта команда эквивалентна командам page и pg, т. е. поочередно отображает на экране содержимое страниц.
Параметры:
-c Не прокручивать текст, но отображать полностью страницу -d Отображение запроса на ввод при постраничной разбивке файла -n Отображение n строк вместо отображения полного экрана Команда
$ more /etc/passwd
отображает содержимое файла passwd. Команда
$ cat logfile |more
отображает файл logfile.
Формат:
nl параметры файл
Параметры:
-i Задает приращение каждой строки на n; по умолчанию задается 1 -р Не восстанавливать нумерацию при появлении новой страницы
Команда nl используется для добавления нумерации в файл. Она является полезной при печати исходного кода или листингов журнальных файлов. Команда
$ nl myscript
добавляет нумерацию в файл myscript. Команда
$ nl myscript >hold_file
направляет вывод команды nl в файл hold_file, а команда
$ nl myscript | lpr
направляет вывод команды nl на принтер.
Формат:
printf формат аргументы
Эта команда выводит форматированный текст в стандартный поток вывода, а ее действие подобно действию функции printf утилиты awk.
Параметр формат может включать три различных типа элементов; здесь будут рассмотрены элементы форматирования. Форматирующая последовательность выглядит следующим образом:
%[- +]m.nx
Знак дефиса задает выравнивание текста в поле по левому краю. Вообще говоря, параметр m используется для представления длины поля, а n задает максимальную длину поля.
Символ % предшествует любому из следующих символов форматирования:
S | строка |
с | символ |
d | десятичное число |
X | шестнадцатеричное число |
о | восьмеричное число |
Команда printf не может создавать новые строки; с этой целью применяются управляющие последовательности. Ниже приводится перечень наиболее часто применяемых управляющих последовательностей:
\а | звуковой сигнал |
\b | удаление предшествующего символа |
\r | возврат каретки |
\f | прокрутка страницы |
\n | создание новой строки |
\t | символ табуляции |
Команда
$ printf "Howzat!\n"
Howzat!
выводит строку в поток стандартного вывода; используйте символ \n' для создания новой строки. Команда
$ printf "\x2B\n"
+
преобразует шестнадцатеричное число 2В в соответствующее десятичное значение
ASCII,'+'.
Команда
$ printf "%-10sStand‑by\n"
Stand‑by
выводит на печать строку, выровненную по левому краю, начиная с 10–го символа от левого края.
Формат:
pwd
Эта команда применяется для отображения текущего рабочего каталога. Введите следующую команду:
$ pwd
/var/spool
$ WHERE_АМ_I=`pwd`
$ echo $WHERE_AM_I
/var/spool
Здесь используется подстановка для передачи сценарию сведений о текущем рабочем каталоге.
Формат:
rm параметры файлы
Параметры:
-i Запрос перед удалением каждого файла -r Удаление существующего каталога
Команда rm удаляет файлы и/или каталоги. Команда
$ rm myfile
$ rm -r /var/spool/tmp
удаляет все файлы, включая подкаталоги из каталога /var/spool/tmp и ниже.
Формат:
rmdir параметры каталоги
Параметры:
-p Удаление всех пустых каталогов, найденных в процессе удаления
Команда
$ rmdir /var/spool/tmp/lp_HP
удаляет каталог 1р_НР, находящийся в каталоге /var/spool/tmp.
Формат:
script параметр файл
Параметры:
-a Добавление вывода в файл
С помощью команды script можно создать полную хронологию сеанса. Для этого нужно просто вызвать эту команду из командной строки. Выполнение команды script завершается после выхода из сеанса. Эта команда копирует введенные пользователем команды и данные и добавляет их в файл. Команда
$ script mylogin
задает регистрацию информации о сеансе в файле mylogin.
Формат:
shutdown
Выполнение этой команды приводит к завершению работы системы. Многие поставщики программного обеспечения поддерживают свои специфические версии этой команды. Команда
$ shutdown now
вызовет немедленное завершение работы системы, а команда
$ shutdown -g60 -16 -у
приведет к завершению работы системы через 60 секунд, после чего последует перезагрузка системы.
Формат:
sleep число
Применение этой команды вызовет приостановку работы системы на указанное количество секунд. Например, команда
$ sleep 10
приостановит систему на 10 секунд.
Формат:
strings имя_файла
Команда strings может быть использована для просмотра текста, содержащегося в двоичных файлах.
Формат:
touch параметры имя_файла
Параметры:
-t ММДДччмм Создание файла, содержащего штамп даты (месяц, день, час, минута).
Эта команда создает файл с текущим или новым штампом даты.
$ touch myfile $ ls -l myfile
-rw‑r—-r--l dave admin 0 Jun 30 09:59 myfile
Данный код создает новый пустой файл myfile, содержащий текущую дату/время.
$ touch -t 06100930 myfile2 $ ls -l myfile2
-rw‑r-—r-- 1 dave admin 0 Jun 10 09:30 myfile2
Указанная выше команда touch создает новый пустой файл myfile2 со штампом
даты June 10,09:30am.
Формат:
tty
Используйте команду tty для получения сведений о том, на каком устройстве или терминале вы работаете.
$ tty
/dev/tty08
Команда tty -s определяет, является ли сценарий интерактивным. Коды возврата в этом случае будут следующими:
0 Для терминала
1 Для устройства, не являющегося терминалом
Формат:
uname параметры
Параметры:
-a Отображение всей информации
-s Системное имя
-v Отображение только номера версии либо даты выпуска версии
Команда используется для отображения имени текущей системы и другой связанной информации:
$ uname -a
Linux bumper.honeysuckle.com 2.0.36 #1 Tue Oct…
Формат:
uncompress файлы
Команда uncompress используется для разархивирования любых сжатых файлов.
$ uncompress myfile
Приведенная выше команда разархивирует файл myfile, который был ранее сжат. Обратите внимание, что после разархивирования файла для него не может использоваться расширение .Z.
Формат:
wait ID процесса
Эта команда устанавливает длительность ожидания для ID процесса перед возобновлением его выполнения либо устанавливает длительность ожидания всех фоновых процессов перед возобновлением их выполнения.
Для задания интервала ожидания ID процесса перед возобновлением его выполнения используется команда:
$ wait 1299
Следующая команда определяет ожидание до тех пор, пока не завершатся все фоновые процессы:
$ wait
Формат:
wc параметры файлы
Параметры:
-c Вывод количества символов
-l Вывод количества строк
-w Вывод количества слов
Эта команда осуществляет подсчет количества символов или слов.
$ who | wc
1 6 46
$ who | wc -l
1
В первом примере вывод команды who направляется команде wc; при этом отображаются следующие столбцы:
количество строк, количество слов, количество символов
Во втором примере команда wc просто выводит на экран количество строк.
$ VAR="tapedrive"
echo $VAR | wc -c
10
В результате применения этой команды выводится количество символов в строке VAR.
Формат:
whereis имя_команды
Команда whereis используется для поиска двоичных или текстовых страниц справки для команды.
$ whereis fuser
fuser: /usr/sbin/fuser /usr/man/man1/fuser.1
$ whereis sort
sort: /bin/sort /usr/man/manl/sort.1
Обратите внимание, что двоичные файлы не отображаются в следующих двух примерах, поскольку они встроены в интерпретатор shell, но в этом случае для команд имеются справочные страницы.
$ whereis times
times: /usr/man/man2/times.2
$ whereis set
set: /usr/man/mann/set.n
Формат:
who параметры
Параметры:
-a Отображение всего вывода
-r Отчет о текущем уровне выполнения (в Linux применяется команда runlevel) -s Отображение полей имен и дат Команда
whoami
Отображает имя пользователя, выполняющего команду. Эта команда не является параметром команды who и может быть вызвана отдельно.
Команда who выводит отчет о пользователях, зарегистрированных в системе. Для отображения информации об этих пользователях введите команду:
$ who
root console Apr 22 13:27
pgd pts/3 Jun 14 15:29
peter pts/4 Jun 14 12:08
dave pts/5 Jun 14 16:10
Сведения о самом себе можно получить с помощью следующей команды:
$ whoami
dave
LINUX and UNIX Shell Programming
David Tansley
An imprint of Pearson Education
Harlow, England • London • New York • Reading, Massachusetts • San Francisco • Toronto • Don Mills. Ontario • Sydney Tokyo • Singapore • Hong Kong • Seoul * Taipei • Cape Town • Madrid • Mexico City • Amsterdam • Munich • Pan's • Milan
Дэвид Тейнсли
Linux и UNIX: программирование в shell. Руководство разработчика.
BHV, "Ирина", Киев 2001
Перевод с английского
УДК «81.3.06
Д. Тейнсли
Unix i UNIX: программирование в shell. Руководство разработчика: Пер. с англ. — К.:
Издательская группа BHV, 2001. — 464 с.
ISBN 966-552-085-7
ISBN 5-7315-0114-9
Данная книга является практическим руководством по программированию интерпретатора Bourne shell -cтандартного командного интерпретатора в UNIX, полностью совместимого с интерпретатором BASH shell в Linux. Книга предназначена для начинающих и опытных программистов и содержит множество полезных примеров, советов и подсказок. С ее помощью читатель сможет быстро научиться создавать shell–сценарии для реальных задач и ситуаций, возникающих в большинстве систем UNIX и Linux.
Обложка А. А. Стеценко
ISBN 0-201-67472-6 © Pearson Education Limited, 2000
ISBN 966-552-085-7 © Издательская группа BHV, Киев, 2001
ISBN 5-7315-0114-9 © Издательство "Ирина", Киев, 2001
Учебное пособие
Дэвид Тейнсли
Linux и UNIX: программирование в shell.
Руководство разработчика
Редакторы Н. Е. Курбатова, Е. А. Курбатова, Технический редактор З. В. Лобач
Продукции соответствует требованиям
Министерство здравоохранения Российской Федерации.
Гигиеническое заключение 77.ФЦ.8.953М 197.3.99 от 12.03.1999
Лицензия на идательскую деятельность № 071405
от 28 февраля 1997 г.
ООО «Спаррк».
123364, г. Москва, ул. Свободы, д. 28, корп. 2.
ООО "Издательская группа BHV"
Свидетельство о занесении в Государственный реестр
серия ДК №175 от 13.09.2000
Подписано в печать 05.10.2001. Формат 70xl00l/16.
Печать офсетная. Усл. печ. л. 29. Тираж 5000 экз.
Заказ №1885.
Отпечатано с готовых диапозитивов в ОАО «Типография "Новости"» 107005, Москва, ул. Фр. Энгельса, 46.