ПРИЛОЖЕНИЕ Б

Полезные команды интерпретатора shell

В этом приложении перечисляются и описываются некоторые полезные команды интерпретатора shell. Здесь не приводится исчерпывающий список параметров для каждой команды. Однако имеющихся параметров вполне достаточно для понимания работы команд.

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

basename

Формат:

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

Формат:

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

Формат:

compress параметры файлы

Параметры:

-v Вывод на экран результатов сжатия

Команда compress используется для уменьшения размера файлов. После завершения сжатия файл получает расширение .Z Для возврата файла в исходное состояние используется команда uncompress.

$ compress myfile

$ ls myfile*

myfile. Z

cp

Формат:

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

Формат:

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

Формат:

dircmp параметры каталог1 каталог2

Параметры:

-s Не отображать различные файлы

Действие команды dircmp напоминает действие команды diff: она также производит сравнение с последующим выводом на экран найденных различий.

dirname

Формат:

dirname имя_пути

В противоположность команде basename, команда dirname выводит на экран только имя пути:

$ dirname /home/dave/myfile/home/dave

du

Формат:

du параметры каталог

Параметры:

-a Отображается размер каждого файла, а не только размер каталогов -s Отображается только итоговая сумма

Команда du выводит информацию об использовании диска в виде блоков размером по 512 байтов. Эта команда применяется, главным образом, для вывода размеров каталогов.

$ pwd

/var

$ du -s

14929

Размер структуры каталога /var составляет 14929 блоков.

file

Формат:

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

Формат:

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

Формат:

head -number файлы

Команда head используется для отображения первых десяти строк файла. Для отображения меньшего или большего количества строк используется параметр -number. Например, команда

$ head -1 myfile

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

$ head -30 logfile | more

приводит к отображению первых 30 строк файла logfile.

logname

Формат:

logname

При этом отображается регистрационное имя текущего пользователя:

$ logname

dave

mkdir

Формат:

mkdir параметры каталог

Параметры:

-m Устанавливает уровень доступа при создании каталога

Команда

$ mkdir HOLD_AREA

$ ls -1 HOLD*

-rw‑rw‑r-- 1 dave admin 3463 Dec 3 1998 HOLD_AREA

приведет к созданию каталога HOLD_AREA.

more

Формат:

more параметры файлы

Эта команда эквивалентна командам page и pg, т. е. поочередно отображает на экране содержимое страниц.

Параметры:

-c Не прокручивать текст, но отображать полностью страницу -d Отображение запроса на ввод при постраничной разбивке файла -n Отображение n строк вместо отображения полного экрана Команда

$ more /etc/passwd

отображает содержимое файла passwd. Команда

$ cat logfile |more

отображает файл logfile.

nl

Формат:

nl параметры файл

Параметры:

-i Задает приращение каждой строки на n; по умолчанию задается 1 -р Не восстанавливать нумерацию при появлении новой страницы

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

$ nl myscript

добавляет нумерацию в файл myscript. Команда

$ nl myscript >hold_file

направляет вывод команды nl в файл hold_file, а команда

$ nl myscript | lpr

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

printf

Формат:

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

Эта команда применяется для отображения текущего рабочего каталога. Введите следующую команду:

$ pwd

/var/spool

$ WHERE_АМ_I=`pwd`

$ echo $WHERE_AM_I

/var/spool

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

rm

Формат:

rm параметры файлы

Параметры:

-i Запрос перед удалением каждого файла -r Удаление существующего каталога

Команда rm удаляет файлы и/или каталоги. Команда

$ rm myfile

$ rm -r /var/spool/tmp

удаляет все файлы, включая подкаталоги из каталога /var/spool/tmp и ниже.

rmdir

Формат:

rmdir параметры каталоги

Параметры:

-p Удаление всех пустых каталогов, найденных в процессе удаления

Команда

$ rmdir /var/spool/tmp/lp_HP

удаляет каталог 1р_НР, находящийся в каталоге /var/spool/tmp.

script

Формат:

script параметр файл

Параметры:

-a Добавление вывода в файл

С помощью команды script можно создать полную хронологию сеанса. Для этого нужно просто вызвать эту команду из командной строки. Выполнение команды script завершается после выхода из сеанса. Эта команда копирует введенные пользователем команды и данные и добавляет их в файл. Команда

$ script mylogin

задает регистрацию информации о сеансе в файле mylogin.

shutdown

Формат:

shutdown

Выполнение этой команды приводит к завершению работы системы. Многие поставщики программного обеспечения поддерживают свои специфические версии этой команды. Команда

$ shutdown now

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

$ shutdown -g60 -16 -у

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

sleep

Формат:

sleep число

Применение этой команды вызовет приостановку работы системы на указанное количество секунд. Например, команда

$ sleep 10

приостановит систему на 10 секунд.

strings

Формат:

strings имя_файла

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

touch

Формат:

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 для получения сведений о том, на каком устройстве или терминале вы работаете.

$ tty

/dev/tty08

Команда tty -s определяет, является ли сценарий интерактивным. Коды возврата в этом случае будут следующими:

0 Для терминала

1 Для устройства, не являющегося терминалом

uname

Формат:

uname параметры

Параметры:

-a Отображение всей информации

-s Системное имя

-v Отображение только номера версии либо даты выпуска версии

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

$ uname -a

Linux bumper.honeysuckle.com 2.0.36 #1 Tue Oct…

uncompress

Формат:

uncompress файлы

Команда uncompress используется для разархивирования любых сжатых файлов.

$ uncompress myfile

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

wait

Формат:

wait ID процесса

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

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

$ wait 1299

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

$ wait

wc

Формат:

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 используется для поиска двоичных или текстовых страниц справки для команды.

$ 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

Формат:

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.

Загрузка...