Команды поиска содержимого в файле

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

еgrер

Команда egrep является расширенной версией команды grep. Данная команда ищет указанную подстроку в одном или нескольких файлах и отображают вывод в стандартный вывод. Искомая подстрока может быть регулярным выражением, в Котором можно указать специальные символы с особым значением, неКоторые из Которых приведены ниже:

Далее следует список флагов, Которые можно использовать с командой egrep:

Команда egrep позволяет определить дополнительные характеристики для искомых подстрок. Эти характеристики таковы:

Примеры

Предположим, что у нас есть файл под названием filel, чье содержимое показано ниже с помощью команды more:

more filel

***** This file is a dummy file *****
which has been created
to run a test for egrep
grep series of commands are used by the following types of people

programmers

end users
Believe it or not, grep series of commands are used by pros and novices alike

*.*r*** this FILE IS A DUMMY FILE *****

Если вы хотите найти все появления dummy, то используйте следующую команду:

еgrер dummy filel

***** This file is a dummy file *****

Если вы хотите найти все появления dummy, независимо от регистра, то используйте флаг -i, как в следующей команде:

egrep -i dummy filel

*р*** This file is a dummy file *****

**r*** this FILE IS A DUMMY FILE *****

Если вы хотите вывести относительный номер строки, Которая содержит указанную подстроку, используйте флаг -n, как в следующей команде:

egrep -i -n dummy filel

1';***** This file is a dummy file *****

8 ;***** this FILE IS A DUMMY FILE *****

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

egrер -i -с dummy filel
2

Если вы хотите получить список всех строк, Которые не содержат указанной подстроки, то используйте флаг -v, как в следующей команде:

egrep -i -v dummy filel
which has been created
to run a test for egrep
grep series of commands are used by the following types of people

programmers

end users
Believe it or not, grep series of commands are used by pros and novices alike

Если вас интересует поиск подстроки как слова, то используйте флаг -w, как в следующей команде:

egrep -w grep filel

grep series of commands are used by the following types of people

Believe it or noty grep series of commands are used by pros and novices alike

Обратите внимание на то, что поиск не находит подстроку egrep, поскольку та содержит с перед grep. Использование флага -w заставляет egrep искать подстроку grep, отделенную пробелами или символами новой строки.

Если вы хотите искать подстроку (string), Которая полностью соответствует строке (line), используйте
флаг -х, как в следующей команде:

egrep -х " end users" filel
end users

Теперь давайте исследуем неКоторые специальные механизмы egrep. Если вы хотите узнать, где появляется любая из двух указанных подстрок, используйте следующую команду, в Которой две подстроки разделяются | (вертикальной чертой):

egrep " (dummy | pro) " filel

р**** This file is a dummy file *****

programmers
Believe it or not, grep series of commands are used by pros and novices alike

В приведенном примере будут отображены строки, Которые содержат либо подстроку dummy, либо подстроку pro. В случае, если вы заинтересованы в поиске либо pros, либо programmers, используйте ? (знак вопроса) в конце подстроки, как в следующей команде:

egrep "pro(grammer)?s" filel

programmers
Believe it or not/ grep series of commands are used by pros and novices alike

В приведенном выше примере шаблон удовлетворяет и pros и programmers благодаря тому факту, что (grammer)? соответствует нулю, или одному появлению grammer. Нуль появлений дает pros, и одно появление дает programmers.

Для поиска строк, содержащих только заглавные буквы С, D, Е или F, используйте регулярные выражения следующим образом:

egrep [C-F] filel

р**** THIS FILE IS A DUMMY FILE *****

fgrep

Подобно egrep и grep, fgrep также осматривает один или несколько файлов в поисках указанной строки и отображает вывод в стандартный вывод. Предполагалось, что команда fgrep будет более быстрой версией команды grep, но в реальности так может и не быть. Пожалуйста, обратите внимание на то, что команда fgrep используется для поиска указанной строки, а не подстроки с символами шаблонов (регулярного выражения, в Котором могут задействоваться специальные символы, для указания специальных значений).

Ниже следует перечень флагов, Которые можно использовать с командой fgrep:

Примеры

Предположим, что у нас есть файл с именем filel, чье содержимое показано ниже с помощью команды more:

more filel

р**** This file is a dummy file *****
which has been created
to run a test for egrep
grep series of commands are used by the following types of people

programmers

end users
Believe it or not, grep series of commands are used by pros and novices alike

р**** this FILE IS A DUMMY FILE *****

Если вы хотите найти все появления dummy, используйте следующую команду:

fgrep dummy filel

р**** This file is a dummy file *****
Если вы хотите найти все появления dummy, независимо от регистра, используйте флаг -i, как в следующей команде:

fgrep - i dummy fi le 1

р**** This file is a dummy file *****

р**** this FILE IS A DUMMY FILE *****

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

fgrep -i -n dummy filel

1:***** This file is a dummy file *****

9;***** this FILE IS A DUMMY FILE *****

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

fgrep -i -с dummy filel
2

Если вы хотите получить список всех строк, Которые не содержат указанной подстроки, используйте флаг -v, как в следующей команде:

fgrep -i -v dummy filel
which has been created
to run a test for egrep
grep series of commands are used by the following types of people

programmers

end users
Believe it or not, grep series of commands are used by pros and novices alike

Если вас интересует поиск заданной подстроки как слова, используйте флаг -w, как в следующей команде:

fgrep -w grep filel

grep series of commands are used by the following types of people

Believe it or not, grep series of commands are used by pros and novices alike

Обратите внимание, что поиск не находит подстроку egrep, поскольку та содержит е перед grep. Использование флага -w заставляет fgrep искать подстроку grep, отделенную пробелами или символами новой строки.

Если вы хотите искать подстроку (string), Которая полностью соответствует строке (line), то используйте флаг -х, как в следующей команде:

fgrep -х " end users" filel
end users

grep

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

Ниже приведен перечень флагов, Которые можно использовать с командой grep:

Примеры

Предположим, что у нас есть файл с именем filel, чье содержимое показано ниже с помощью команды more:

more filel

***** This file is a dummy file *****
which has been created
to run a test for egrep

grep series of commands are used by the following types of people

programmers

end users
Believe it or not, grep series of commands are used by pros and novices alike

***** this FILE IS A DUMMY FILE *****

Если вы хотите найти все появления dummy, используйте следующую команду:

grep dummy filel

***** This file is a dummy file *****

Если вы хотите найти все появления dummy, независимо от регистра, используйте флаг -i, как в следующей команде:

grep -i dummy filel

***** This file is a dummy file *****

***** this FILE IS A DUMMY FILE *****

Если вы хотите вывести относительный номер строки, Которая содержит указанную подстроку, то используйте флаг -n, как в следующей команде:

grep -i -n dummy filel

1;***** This file is a dummy file *****

9:***** this FILE IS A DUMMY FILE *****

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

grep -i -с dummy fiiel
2

Если вы хотите получить список всех строк, Которые не содержат указанной подстроки, то используйте флаг -v, как в следующей команде:

grep -i -v dummy filel

which has been created

to run a test for egrep

grep series of commands are used by the following types of people

programmers

end users

Believe it or not, grep series of commands are used by pros and novices alike

Если вас интересует поиск подстроки как слова, то используйте флаг -w, как в следующей команде:

grep -w grep filel

grep series of commands are used by the following types of people

Believe it or not, grep series of commands are used by pros and novices alike

Обратите внимание, что поиск не находит шаблон egrep, поскольку тот содержит е перед grep. Использование флага -w заставляет grep искать подстроку grep, отделенную пробелами или символами новой строки.

Если вы хотите искать подстроку (string), Которая полностью соответствует строке (line), то используйте флаг -х, как в следующей команде:

grep -х " end users" filel
end users

Теперь давайте исследуем неКоторые специальные механизмы команды grep. Если вы хотите найти, какие строки начинаются с прописных букв от А до С, используйте следующую команду:

grep "^[А-С]" filel

Believe it or not, grep series of commands are used by pros and novices alike

В данном примере символ ^ указывает, что следующий символ ищется в начале каждой строки. В случае, если вас интересует поиск всех строк, Которые не начинаются с прописных букв от А до F, используйте следующую команду:

grep "^[^A-F]" filel

*** his fie is a dummy file *****
which has been created

to run a test for egrep

grep series of commands are used by the following types of people

programmers

end users

***** THIS FILE IS A DUMMY FILE *****

В данном примере символ А вне [ ] ищет следующий символ в начале строки, где символ ^ внутри [ ] указывает, что соответствие будет тогда, когда символ не является A-F, то есть поиску удовлетворяют все строки, Которые не имеют букв A-F в начале строки.

Для поиска строк, содержащих только прописные буквы С, D, Е или F, используйте регулярное выражение, подобное следующему:

grep [C-F] filel

***** this FILE IS A DUMMY FILE *****

strings

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

Примеры

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

strings strings

|@(#)56

1.17 com/cmd/scan/strings.c, cmdscan/ Ьоз320, 9227320Ь 5/7/92 10:21:20

Standard input

strings.cat

/usr/mbin/strings

Usage: strings [ -a ] [ -o ] [ -# ] [ file ... ]

%7o

%7o

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

strings strings
6017 |@(#)56

6027 1.17 com/cmd/scan/strings.c, cmdscan, bos320/ 9227320Ь 5/7/92 10:21:20
6140
Standard input
6164 strings.cat
6200 /usr/mbin/strings

6224 Usage: strings [ -a ] [ -o 1 Г -# I [ file ... ]
6314 %7o
6330 %7o

Если вы хотите ограничить поиск в исполняемом модуле программы strings, скажем, только 15 символами или больше, то выполните следующую команду:

strings -о -15 strings

6027 1.17 com/cmd/scan/strings.c, cmdscan, bos320, 9227320Ь 5/7/92 10:21:20

6200 /usr/mbin/strings

6224 Usage: strings [ -a ] [ -о ] [ -# ] [ file ... ]

Печать

У вас могут быть несколько документов, Которые желательно распечатать, и может быть несколько принтеров, подключенных к компьютеру, на Которых можно печатать. Здесь мы обсудим несколько команд, Которые направляют указанные документы на печать на указанные принтеры и определяют состояние принтеров. Мы также обсудим команды для отмены посланных в очередь на печать работ.

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

cancel

Если ранее, с помощью команды 1р, вы поставили в очередь на печать один или несколько документов, а теперь вы хотите снять свои запросы, используйте команду cancel. С помощью команды cancel можно снять либо указанное задание, либо все задания в указанной очереди на печать. Если вы являетесь обычным пользователем, снимайте только те задания, Которые помечены вашим идентификатором.

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

Примеры

Для снятия задания с ID 734 выполните следующую команду:

cancel 734

Для снятия всех заданий в очереди на принтере our_printer, используйте следующую команду:

cancel our_pprinter

lp

Для печати одного или нескольких файлов на указанном принтере используйте команду 1р. По умолчанию команда 1р принимает ввод из стандартного ввода. Если указан более чем один файл, то файлы печатаются в порядке их указания в командной строке. Выводимые на печать файлы нельзя удалять или переименовывать до конца печать, поскольку команда 1р не делает копии печатаемого файла (если не указан флаг -с).

Ниже приводится перечень флагов, Которые можно использовать с командой 1р:

Примеры

Для печати файла filel выполните следующую команду:

1р filel

В данном примере filel будет напечатан на принтере по умолчанию. Если вы хотите выполнить печать на принтере our_printer, Который находится рядом, используйте флаг -d, как в следующей команде:

lp -dour_printer filel

Если filel велик и вы хотите получить уведомление после того, как печать будет успешно выполнена, используйте флаг -m, как в следующей команде:

1р -m -dmain-printer filel

Если вы хотите отпечатать несколько копий filel для того, чтобы распространить их среди своих коллег, используйте флаг -n, как в следующей команде:

lp -nl5 -dour_printer filel

В примере выше будет печататься 15 копий filel на принтере под названием our_printer. Если вы хотите напечатать заголовок urgent memo на титульной странице, то используйте флаг -t как в следующей команде:

lp -nl5 "L"urgent memo" -dour_printer filel

В приведенном примере будет печататься 15 копий filel на принтере our_rinter с заголовком urgent memo, печатающимся на титульной странице.

рr

Команда рг по умолчанию принимает ввод из стандартного ввода и генерирует вывод в стандартный вывод. Команда форматирует вывод на страницы с именем файла, датой, временем и номерами страниц. Если длина строки больше, чем ширина страницы, то строка урезается. Поскольку команда рr форматирует и разбивает вывод на страницы, вы можете соединить вывод команды рr каналом с командой печати,
такой как
lp, для печати вывода.

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

Примеры

Предположим, что у нас есть файл под названием filel, содержимое Которого показано ниже с помощью команды more:

more filel

This is a test file for pr command

We will use it to show the usage of various flags of pr command

Самый простой вариант использования команды рг таков:

pr filel
Wed Dec 4 00:40:14 1996 filel Page I

This is a test file for pr command
We will use it to show the usage of various flags of pr command

Если вы хотите отобразить вывод с двойным интервалом, то используйте флаг -d, как в следующей команде:

pr -d filel
Wed Dec 4 00:40:14 1996 filel Page I

This is a test file for pr command
We will use it to show the usage of various flags of pr command

Если вы хотите печатать свой заголовок вместо имени файла, то используйте флаг -h, как в следующей команде:

pr -h "TEST FILE FOR pr COMMAND" filel
Wed Dec 4 00:40:14 1996 TEST FILE FOR pr COMMAND Page 1

This is a test file for pr command
We will use it to show the usage of various flags of pr command

Если вы не хотите печатать заголовки, то используйте флаг -t, как в следующей команде:

pr -t filel

This is a test file for pr command

We will use it to show the usag fvrious fags of pr command

Если вы хотите печатать номера строк перед каждой строкой и хотите, чтобы между номером строки и ее содержимым печатался - (перенос), то используйте флаг -n, как в следующей команде:

pr -n-5 filel
Wed Dec 4 00:40:14 1996 filel Page I

1-This is a teat file for pr command

2-We will use it to show the usage of various flags of pr command

lpstat

Команду lpstat можно использовать для отображения состояния всех принтеров линии (line printers). Если команда lpstat выполняется без каких-либо флагов, то она отображает состояние каждого принтера с очередями задания, созданными командами 1р.

Далее следует перечень флагов, Которые можно использовать с командой Ipstat:

Примеры

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

Ipstat I more

Queue Dev Status Job Files User PP % Elks Cp Rnk

m_J?rt IpO READY
prt_01 bshde READY
prt_02 lp0 READY

Если вы хотите получить информацию о принтере по умолчанию, используйте флаг -d, как в следующей команде:

lpstat -d

Queue Dev Status Job Files User PP % Biks Cp Rnk

m_Jprt IpO READY

Если вы печатаете file! на printerJH, то получить информацию о состоянии принтера и задания можно, указав флаг -а, как в следующей команде:

lpstat -aprinter_01
Queue Dev Status Job Files User PP % Biks Cp RnkTotal Size

systems ipprt ready

prt_01: prt_01 is ready and printing

prt_01: Rank Owner Job Files

prt_01: active testuser 735 filel

Планирование

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

at

Команда at предоставляет возможность:

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

р Отображать список запланированных к исполнению заданий.

р Удалять задания из списка запланированных.

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

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

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

Точное положение файлов at.allow и at.deny зависит от типа системы UNIX, с Которой вы работаете.
Команда
at принимает время, день и относительные изменения в нескольких форматах. НеКоторые
форматы таковы:

р 1830 December 4

р 6:30 pm December 4

р 6:30 P December 4

р now + 2 hours

р tomorrow 1830

р 830 next week

р 1830 Tuesday next week

Примеры

Если вы хотите запланировать задание my Job на 11 часов вечера текущего дня, предполагая, что время сейчас 9:30 PM, выполните любую из следующих команд:

at 2300 my_job
at 23:00 my_job
at 11:00 pm my_job

at 2300 today my_job

Если текущее время 11:30 PM, то задания будут запланированы на 11:00 PM следующего дня. Для планирования roy_Job на 6 часов позднее текущего времени выполните следующую команду:

at now + 6 hours my_j ob

Для планирования my_job на 6:30 следующей недели выполните следующую команду:

at 6:30 pm next week my_job

В предыдущем примере, если сегодня Thursday (четверг) и текущее время 5:30 PM, то myJob будет запланировано на 6:30 PM следующей Friday (пятницы).

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

at -1

testuser.850519800.a Fri Dec 13 18:30:00 1996

testuser.849858400.a Fri Dec 6 02:46:40 1996

Для удаления задания используйте флаг -r, как в следующей команде:

at -r testuser.850519800.а
at file: testuser.850519800.a deleted

atq

Команда atq используется для вывода списка заданий, запланированных к исполнению на более позднее время. Задания отображаются в порядке запланированного времени исполнения, с ранее запланированными заданиями.

Ниже представлен список флагов, Которые можно использовать с командой atq:

р -с для вывода списка заданий в порядке выполнения команды at для планирования каждого из заданий.

р -n для вывода числа запланированных заданий.

Примеры

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

atq

testuser.849915000.a Fri Dec 6 18:30:00 1996

testuser.850519800.a Fri Dec 13 18:30:00 1996

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

atq -с

testuser.850519800.a Fri Dec 13 18:30:00 1996

testuser.849915000.a Fri Dec 6 18:30:00 1996

Если вы хотите узнать количество запланированных в текущий момент заданий, то используйте флаг -n, как в следующей команде:

atq -n

2 files in the queue

crontab

Система UNIX оснащена демоном, Который выполняется все время и Который будет запускать задания в регулярно запланированные интервалы. В файле вы можете указать задания, Которые будет выполнять команда crontab, и демон Сгоn будет проверять его при инициализации или в том случае, когда файл пополняется или модифицируется.

Записи, Которые вы создаете в файле crontab, состоят из следующих полей (разделенных пробелами или символом табуляции):

Каждое из полей может иметь несколько дискретных значений, отделенных запятыми, или диапазон значений, или * (звездочка), означающую, что подходят все значения.

Далее следует список флагов, Которые можно использовать с командой crontab:

Примеры

Если вы хотите отображать строку Time to go for lunch (Время идти обедать) в 12:30 РМ каждого дня, создайте следующую запись:

30 12 * * * * echo "Time to go for lunch"
Если вы хотите выполнять my_job в пятницу в 4:00 каждую неделю, создайте следующую запись:

О 16 * * 5 my_job

Резервное копирование и восстановление

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

compress

Команду compress можно использовать для сокращения размера файла. У файла, созданного командой compress, к имени добавляется буква Z. Сжатые файлы сохраняют атрибуты времени и права доступа исходного файла.

Далее идет список флагов, Которые можно использовать с командой compress:

Примеры

Для сжатия filel выполните следующую команду:

compress filel

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

compress -v filel
filel: Compression: 50.85% - replaced with filel.2

cpio

Команда cpio используется для копирования файлов на архивный носитель с диска или для восстановления файла с архивного носителя на диск. Существует три главных формы команды cpio:

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

р cpio -i для чтения из стандартного ввода архивных файлов и создания дисковых файлов.

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

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

р В для указания, что cpio должна осуществлять блок-ориентированный ввод/вывод.

р d для создания каталога, если указанный каталог не существует-

р f для копирования файлов, Которые не подходят под заданный шаблон.

р r для интерактивного копирования файлов с возможностью модифицировать имя файла.

р t для создания списка файлов без действительного копирования файлов.

р u для перезаписи файла, если он уже существует.

р v для вывода списка скопированных файлов.

Примеры

Если у вас есть список файлов, Которые вы хотите скопировать на гибкий диск, то выполните следующую команду:

ls *. txt | cpio -ov > /dev/fd0

filel.txt
file2.txt
55 blocks

Теперь, если вы хотите распечатать файлы на гибком диске, используйте флаги t и v, как в следующей команде:

cpio -itv < /dev/fd0

100644 testuser 13771 Dec 07 00:13:38 1996 filel.txt
100644 testuser 13947 Dec 07 00:13:30 1996 file2.txt
55 blocks

Приведенный выше пример будет копировать все файлы с расширением .txt и отображать имена скопированных файлов.

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

cpio -ir "*.txt" < у
Rename <filel.txt>
file3.txt
Rename <file2 * txt>

file4.txt

55 blocks

В приведенном примере filel.txt будет переименован в file3.txt и file2.txt будет переименован в file4.txt. Если вы хотите скопировать все файлы из текущего каталога, а также все файлы из подкаталогов, то используйте флаг -р. Дополнительно можно задействовать флаг d, чтобы были созданы все нужные каталоги. Команду можно выполнить следующим образом:

find . -print | cpio -pd /u/testuser/cpiodir

dd

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

Далее следует список флагов, Которые можно использовать с командой dd:

Примеры

Если у вас есть файл, записанный в системе, Которая хранит данные в коде EBCDIC, и данные необходимо преобразовать в ASCII, выполните следующую команду:

dd if=filel ofрfile2 conv=ascii

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

Если вы хотите скопировать filel с диска на ленту с размером блока 1024, используйте следующую команду:

dd if=filel of=/dev/rmt0 bs=1024 conv=sybc

Если вы хотите скопировать третий файл на ленте в файл под названием filel, используйте следующую команду:

dd if=/dev/rmt0 fskip=2 of=filel

Если вы хотите напечатать памятную записку (мемо) прописными буквами, используйте следующую команду, преобразующую filel в file2 и печатающую file2:

dd if-filel of=file2 conv=ucase
lp -dmain_J3rinter fiie2

pack

Если вы хотите сэкономить пространство, используйте команду pack, Которая сжимает файл подобно тому, как это делает команда compress. Команда pack сжимает файл и генерирует новый файл с расширением ,z. Исходный файл удаляется. Количество сэкономленного пространства зависит от содержимого файла. Обычно, для текстовых файлов получается от 30 до 50 процентов сжатия. По умолчанию команда pack
не выполняет сжатие, если не может уменьшить размер файла.

Далее следует список флагов, Которые можно использовать с командой pack:

Примеры

Если у вас есть файл под названием filel и его необходимо сжать, используйте следующую команду:

pack filel
pack: filel: 41.7%

Compression

Если нужна более подробная информация о процессе сжатия, используйте знак - (перенос), как в следующей команде:

pack - filel

pack: filel: 41.7% Compression

from 28160 to 16404 bytes

Huffman tree has 15 levels below root

102 distinct bytes in input

dictionary overhead ss 124 bytes

effective entropy ss 4,66 bits/byte

asymptotic entropy = 4. 62 bits/byte

В неКоторых случаях pack не может сжать файл, и вы получите сообщение об ошибке, как в следующей команде:

pack filel
pack: filel: no savint

- file unchanged

В таком случае для форсированного сжатия используйте флаг -f, как в следующей команде:

pack -f filel
pack: filel: 40.8% Compression

pcat

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

Примеры

Если вы хотите распаковать файл под названием filel.z, Который ранее был создан командой pack, то используйте следующую команду:

pcat filel

Можно также и

pcat filel.z

tar

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

Примеры

Если вы хотите извлечь все файлы в каталоге /u/testuser из архивного файла на лентопротяжном устройстве /dev/rmt1, используйте следующую команду:

tar -xvf /dev/rmtl /u/testuser

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

tar filel

uncompress

Команда uncompress используется для распаковки файла, Который ранее бьш сжат командой compress. По умолчанию команда uncompress распаковывает файл на месте, то есть, сжатый файл удаляется и на его месте создается распакованный файл без расширения .z. Распакованный файл сохраняет атрибуты прав доступа и времени модификации сжатого файла, но владелец и группа файла меняются на пользователя и группу несжатого файла.

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

Примеры

Если вы хотите распаковать filel.Z, используйте одну из двух следующих команд:

uncompress filel

ИЛИ
uncompress filel.Z

Если вы хотите распаковать filel.Z в стандартный вывод, сохраняя исходный сжатый файл, используйте флаг -с, как в следующей команде:

uncompress -с filel

unpack

Команда unpack используется для распаковки файлов, Которые были сжаты командой pack и Которые имеют расширение .z. Несжатый файл создается на том же самом месте, что и сжатый файл, а сжатый файл удаляется. Распакованный файл сохраняет такие атрибуты, как владелец, группа, код доступа, время доступа и модификации сжатого файла. Команда unpack не распаковывает файл, если файл с заданным именем уже существует.

Если вы хотите распаковать filel.z, используйте любую из следующих команд:

unpack filel

ИЛИ

unpack filel.z

zcat

Команда zcat используется для распаковки файла (Который был упакован командой compress) в стандартный вывод, с сохранением сжатого файла. Вы можете перенаправить стандартный вывод в другой файл для получения распакованной версии сжатого файла. Данная команда работает точно так же, как команда uncompress с флагом -с.

Примеры

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

zcat filel.Z > file2

Приведенная команда создаст file2, являющийся распакованной версией filel.Z, и при этом будет сохранен filel.Z.

Команды состояния

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

date

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

Для отображения даты и времени следует указать знак + (плюс) с последующим форматом. Формат может быть одним из следующего:

Примеры

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

date
Sat Dec 7 11:50:59 EST 1996

Если необходимо отобразить только дату в формате mm/dd/yy, то используйте следующие команды:

date +%m/%d/%y
12/07/96

Если необходимо отобразить дату в формате yy/mm/dd и время в формате hh:mm:ss, используйте следующую команду:

date +%y/W%d/ %H:%M:%S"
96/12/07 11:57:27

Ниже приведен еще один способ форматирования даты:

date +%A","%B","%d", "%У
Sunday, December 15/ 1996

Если необходима юлианская дата, используйте следующую команду:

date +%j
350

Если вы хотите узнать номер недели для текущей недели, то есть две возможности, W и U, как показано в следующих командах:

date +%W

49

date +%U

50

env

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

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

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

Примеры

Если необходимо отобразить текущую среду, используйте следующую команду:

env

Предположим, что есть сценарий под названием my_job, Который отображает текущую установку переменной под названием LANG.

Если выполнить сценарий myjob как часть команды env без модификации переменной LANG, то вы получите следующий результат:

env PATH=/u/testuser/jobs:$PATH my_job

LANG = С

Если модифицировать переменную LANG как часть команды env, то получится следующий результат:

env LANG=C++ PATH=/u/testuser/jobs:$PATH my_job
LANG - C++

Если использовать флаг -i и не модифицировать LANG как часть команды env, то переменная не будет доступна my_Job и вы получите следующий результат:

env -i PATN=/u/testuser/job3:$PATH my_job
LANG =

iostat

Команда iostat используется для получения статистики о процессоре, дисках и TTY в системе. Первый раз, когда вы выполните iostat после самой последней загрузки системы, iostat выведет статистику с момента загрузки. Затем iostat обеспечивает статистику с момента последнего выполнения iostat.

Команда iostat отображает следующие детали:

р Заголовок ЦПУ и TTY

р Детали статистики ЦПУ и TTY

р Заголовок физического тома

р Одну строку для каждого физического тома

Ниже следует перечень элементов данных, отображаемых для TTY и ЦПУ:

р tin отображает число символов, считанных системой для всех TTY.

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

р %user отображает процент использования ЦПУ на уровне приложения.

р %system отображает процент использования ЦПУ на уровне системы.

р %и11е отображает процент использования ЦПУ в момент простоя (число представляет неиспользованное время ЦПУ).

р %iowatt отображает процент простоя ЦПУ при ожидании выполнения запросов на ввод/вывод.

Далее приведен список элементов данных, отображаемых как часть информации по использованию физического тома:

- -d для отображения только отчета об использовании физического тома. Флаг нельзя использовать с флагом -t.

р -t для отображения только отчета об использовании ЦПУ и TTY. Нельзя использовать вместе с флагом -d.

Примеры

Если необходимо отобразить данные только об использовании TTY и ЦПУ, используйте флаг -t, как в следующей команде:

iostat -t

tty: tin tout cpu: % user % sys % idle % iowait
0.5 78.7 32.6 25.2 35.7 6.4

Если нужно знать данные только о физическом томе diski, используйте флаг -d, как в следующей команде:

iostat -d diski

Disks: % tm_act Kbps tps Kb_read Kb_wrtn
diaki 6.7 4.3 5.0 2339721 4048758

sar

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

Ниже приведен список нескольких флагов, Которые применимы с командой sar:

uname

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

Ниже приведен перечень флагов, Которые применяются с командой uname:

Примеры

Если нужно отобразить детали об аппаратном обеспечении и операционной системе, можно использовать флаг -а, как в следующей команде:

uname -а
AIX main_system 2 3 000010000526

В приведенном примере отображена следующая информация:

- Имя операционной системы aix

- Наименование машины main_system

- Номер релиза операционной системы 2

- Номер версии операционной системы 3

- Машина ооооюооо52б

uptime

Команда uptime отображает следующую информацию:

vmstat

Команда vmstat может использоваться для получения информации о процессах, виртуальной памяти, физических томах и активности ЦПУ. Информация включает сведения об использовании ЦПУ, виртуальной памяти и физических томов и применяется для отслеживания загрузки системы.

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

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

Сведения по процессам таковы:

- avm отображает число использованных страниц (страниц из страничного пространства).

р fre отображает число страниц в списке свободных.

Сведения по страницам памяти таковы:

Можно указать до четырех имен физических томов для получения количества перемещения данных, Которые осуществляются на данных дисках в определенный интервал времени.
Ниже приведен флаг, Который можно использовать с командой
vmstat:

р -s для отображения статистики с момента инициализации системы.

Примеры

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

vmstat 5 5
procs memory page faults cpu

r b avm fre re pi ро fr sr cy in sy cs us sy id wa
1 0 44036 120 О О О 125 275 0 366 1458 391 33 25 36 6
1 0 44036 120 0 0 0 542 938 0 446 4932 246 65 24 0 12
1 0 44036 121 0 0 0 624 1116 0 453 5848 259 64 2
5 0 11
1 0 44037 124 0 0 0 512 1010 0 434 4812 266 59 25 0 16
0 0 44037 121 0 0 0 564 1109 0 426 4838 265 64 24 0 11

Обработка текста

UNIX предлагает несколько команд для обработки содержимого текстового файла.

cut

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

Далее приведен список флагов, Которые работают с командой cut:

р -ccharacterlist для указания списка символов, отрезаемых от каждой строки.

р -ffieldlist для указания списка полей, отрезаемых от каждой строки. Дополнительно можно указать флаг -dcharacter для переопределения символа, интерпретируемого как разделитель полей. Можно также указать флаг -s для подавления строк, в Которых нет указанного символа-разделителя.

Примеры

Предположим, что у нас есть файл под названием filel со следующим содержимым:

more filel
Misty Ghosh
Saptarsi Guha
Sanjiv Guha

В данном файле поля разделяются символом табуляции.
Если вы хотите извлечь первое поле, используйте следующую команду:

cut -fl filel
Misty

Saptarsi
Sanjiv

Если вы хотите вырезать символы со 2 по 6, используйте следующую команду:

cut -c2-5 filel

isty

apta

anji

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

ut -d"s" -fl filel
Mi

Saptar
Sanjiv Guha

Вы заметите, что первая строка вырезается полностью. Для подавления строк, Которые не содержат символа s используйте флаг -s, как в следующей команде:

cut -d"s" -s -fl filel

Mi

Saptar

ex

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

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

Редактор ех работает в следующих режимах:

fmt

Команда fmt применяется для форматирования файлов в 72-х символьные строки по умолчанию. Команда fmt сохраняет пустые строки во вводном файле и сохраняет пространство между словами. Вы можете модифицировать длину строк, используя флаг -Width.

Примеры

Предположим, что у нас есть filel со следующим содержимым:

more filel
This is a test file for fmt

The fmt, command formats a file
for mail command

Обратите внимание на пустую строку и пробелы между command и format в третьей строке. Отформатируем filel, используя команду fint для создания file2, как в следующей команде:

fmt filel > file2

Теперь посмотрим на содержимое file2 с помощью команды more:

more file2
This is a test file for fmt

The fmt command formats a file for mail command

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

fold

Команда fold используется для генерации нескольких строк из одной строки разделением строки в указанной позиции. По умолчанию длина строки составляет 80 байтов. Символ перехода к новой строке вставляется в конец строки.

Далее следует список флагов, Которые используются с командой fold:

Примеры

Предположим, что у нас есть filel содержащий одну строку из 129 символов, Которая показана ниже:

more filel

The fold command can be used on files which have line lengths more than 80 bytes

, it breaks the line into multiple 80 byte lines

Если вы хотите разделить строку на байте в позиции 40, то используйте следующую команду:

fold -w 40 filel > file2; more file2
The fold command can be used on files wh
ich have line lengths more than 80 bytes
, it breaks the line into multiple 80 by
te lines

В приведенном примере разделение произошло по средине слов. Если вы не хотите рассекать слова, то укажите флаг -s, как в следующей команде:

fold -w 40 -з filel > file2; more file2
The fold command can be used on files
which have line lengths more than 80
bytes, it breaks the line into multiple
80 byte lines

join

Команда join применяется для слияния двух файлов (один может быть стандартным вводом) с целью создания третьего файла (может быть стандартным выводом). При создании выходного файла каждая строка, Которая имеет одинаковое значение в обоих вводных файлах сливается со строкой в базовом файле. Поля в каждом файле разделяются либо пробелом, либо символом табуляции.

Ниже приведен список флагов, Которые можно использовать с командой join:

Примеры

Предположим, что есть два файла, П1е1 и П1е2, чье содержимое показано ниже:

more filel

computeri 16MB 1.2GB 17inch CDROM
computer2 8MB 840MB 14inch
computer3 12MB 1.6GB 17inch
computer4 4MB 270MB 14inch
more file2

computeri Istfloor office5
computer3 2ndfloor office9A
computer4 Istfloor office2
computer5 3rdfloor officel

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

join filel file2

computeri 16MB 1.2GB 17inch CDROM Istfloor office5
computers 12MB 1.6GB 17inch 2ndfloor office9A
computer4 4MB 270MB 14inch CDROM Istfloor office2

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

join -al filel file2

computeri 16MB 1.2GB 17inch CDROM Istfloor office5

computer2 8MB 840МВ 14inch

computer3 12MB 1.6GB 17inch 2ndfloor office9A

computer4 4MB 270MB 14inch CDROM Istfioor office2

Приведенный выше пример отображает строку с computer2 из filel поскольку она не имеет соответствующей строки в НХе2. Если вы хотите отобразить только строки, Которые не совпадают со строками из указанного файла, используйте флаг -y, как в следующей команде:

join -v2 filel file2

computers 3rdfloor officel

Приведенный выше пример отображает строку с computer5 из file2, поскольку у нее нет совпадающей строки в file1.

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

join -о 1.1 2.2 2.3 1.5 filel file2
computeri Istfloor office5 CDROM
cemput^r-^ 2ridfl oor office9A
computer4 Istfloor office2 CDROM

В приведенном выше примере строка с computer3 отображается на одно поле короче, поскольку данное поле не присутствует во вводном файле. В пустое поле в выводном файле, используя флаг -е, можно вставить фиксированную легенду, как в следующей команде:

join -о 1.1 2.2 2.3 1.5 -e"NO CDROM" filel file2
computeri Istfloor office5 CDROM
computer3 2ndfloor office9A NO CDROM
computer4 Istfloor office2 NO CDROM

paste

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

Ниже приведен список флагов, Которые используются с командой paste:

Примеры

Предположим, что есть два файла, filel и file2, содержимое Которых показано ниже:

more filel

computeri 16MB 1.2GB 17inch CDROM
computer2 8MB 840MB 14inch
computer3 12MB 1.6GB 17inch
computer4 4MB 270MB 14inch

more file2

computeri Istfloor offices
computers 2ndfloor off ice9A
computer4 Istfloor office2
computers 3rdfioor officel

Если вы хотите слить filel и file2, то используйте следующую команду:

paste filel file2

computeri 16MB 1.2GB 17inch CDROM computeri Istfloor offices

computer2 8MB 840MB 14inch computer3 2ndfloor off ice9A

computer3 12MB 1.6GB 17inch computer4 Istfloor office2

computer4 4MB 270MB 14inch computers 3rdfioor officel

Строки из filel и file2 разделяются символами табуляции. Если разделитель по умолчанию, символ табуляции, вы хотите заменить скажем на слэш (/), то используйте флаг -d, как в следующей команде:

paste -d"/" filel file2

computeri 16MB 1.2GB 17inch CDROM/computeri Istfloor offices
computer2 8MB 840MB 14inch/computer3 2ndfloor office9A
computer3 12MB 1.6GB 17inch/computer4 Istfloor office2
computer4 4MB 270MB 14inch /computers 3rdfioor officel

Если вы хотите слить строки из каждого вводного файла, используйте флаг -s, как в следующей команде:

paste -d"/" -s filel file2

computeri 16MB 1.2GB 17inch CDROM/computer2 8MB 840MB 14inch/computer3 12MB 1. 6G

В 17inch/computer4 4MB 270MB 14inch

computeri Istfloor officeS/computer3 2ndfloor office9A/computer4 Istfloor office

2/computers 3rdfioor officel

sort

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

Далее приведен перечень неКоторых флагов, с Которыми работает команда sort:

Примеры

Предположим, что у нас есть файл под названием filel, содержимое Которого показано ниже:

more filel
disk drive

memory

video memory
monitor
[tape drive]
CD-ROM

3.5inch diskette
modem
monitor
sound blaster

Если вы хотите отсортировать filel, то используйте следующую команду:

sort filel
3.5inch diskette
CD-ROM

[tape drive]
disk drive
memory
modem
monitor
monitor

sound blaster
video memory

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

sort -r filel
video memory
sound blaster
monitor
monitor
modem
memory
disk drive
[tape drive]
CD-ROM
3.5inch diskette

Если вы хотите отсортировать в соответствии с алфавитом, используйте флаг -d, как в следующей команде:

sort -d fiiel
3.5inch diskette
CD-ROM
disk drive
memory
modem
monitor
monitor

sound blaster
[tape drive]
video memory

В примере выше строка [tape drive] сортируется как tape drive поскольку [ и ] игнорируются из-за флага -d. Если вы хотите, чтобы повторялась только одна строка, когда одинаково отсортировались несколькострок, используйте флаг -u, как в следующей команде:

sort -u filel

3.5inch diskette

CD-ROM

[tape drive]

disk drive

memory

modem

monitor

sound blaster

video memory

В примере выше строка monitor появляется только один раз, хотя в файле таких записей две. Причиной является указание флага -d.

Если вы хотите отсортировать в соответствии с прописными символами, используйте флаг -f, как в следующей команде:

sort -f filel
3.5inch diskette
CD-ROM

disk drive
memory
modem
monitor
monitor

sound blaster
video memory
[tape drive]

tr

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

Далее приведен список нескольких флагов, Которые можно использовать с командой tr:

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

р -d для удаления указанных символов.

р -s для удаления всех, кроме первого появления указанных символов.

Вы можете указывать вводную и выводную последовательность символов определенным способом:

Примеры

Предположим, что у нас есть файл filе1, содержимое Которого показано ниже:

more filel

"this is a test file

fur tr command-

"it has 4 lines

but should be 1 line"

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

tr 'У * ' < filel

this is a test file
for tr command

it has 4 lines
but should be 1 line

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

tr [ilowers] [: upper:] < filel

"THIS IS A TEST FILE
FOR TR COMMAND"
"IT HAS 4 LINES
BUT SHOULD BE 1 LINE"

Если необходимо удалить из файла все символы новой строки, используйте флаг -d, как в следующей
команде:

tr -d 'Vn' < filel
"this is a test file for tr command""!! has 4 lines but should be 1 line"

Если вы хотите удалить все появления пробела, за исключением первого и заменить пробел знаком переноса (-), используйте флаг -s, как в следующей команде:

tr -s * ' >-1 < filel

"this-is-a-test-file-

for-tr-command"

"it-has-4-lines-

but-should-be-1-line"

uniq

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

Ниже следует список флагов, Которые работают с командой uniq:

Примеры

Предположим, что у нас есть filel, содержимое Которого представлено ниже:

more filel
This is line 1
This is line 1
This is line 2
This is line 3
THIS IS line 3
This is line 4

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

uniq filel
This is line 1
This is line 2
This is line 3
THIS IS line 3
This is line 4

В примере выше первая строка пропущена, поскольку она идентична второй строке. Если вы хотите отображать только дублирующиеся строки, используйте флаг -d, как в следующей команде:

uniq -d filel
This is line 1

Если вы хотите отобразить строки, Которые появляются в файле filel только один раз, используйте флаг -u, как в следующей команде:

uniq -и filel
This is line 2
This is line 3
THIS IS line 3
This is line 4

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

uniq -f 2 filel
This is line 1
This is line 2
This is line 3
This is 1ine 4

sed

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

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

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

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

Приведенные выше подкоманды влияют на область шаблона (pattern area), используемого командой sed. Давайте рассмотрим несколько команд, Которые влияют на область временного хранения (hold area):

- [address I][,address2]g для копирования содержимого hold area в pattern area. После этого содержимое hold area становится новым содержимым pattern area.

Примеры

Предположим, что у нас есть filel, содержимое Которого отображено ниже:

more filel
This file is a test file for sed command

The sed command is used for stream editing files

The sed command a number of sub-commands which may be used to do the editing in specified line

Если вы хотите печатать номера строк, в Которых найден указанный шаблон, используйте следующую команду:

sed -е "/sed/-" filel

1

This file is a test file for sed command

3
The sed command is used for stream editing files

5

The sed command a number of sub-commands which may be used to do the

editing in specified line

В примере выше номера отображаются для строк, содержащих шаблон sed. Если хотите добавить задан-
ный текст после каждой указанной строки, используйте следующую команду:

sed -f sfile filel
This file is a test file for sed command

+++++++++++++++++++++++++++++++++

The sed command is used for stream editing files
+++++++++++++++++++++++++++++++++

The sed command a number of sub-commands which may be used to do the

+++++++++++++++++++++++++++++++++

editing in specified line

где файл sfile содержит строку:

/sed/a\

+++++++++++++++++++++++++++

В примере строка +s (знаки плюс) печатается после каждой строки, содержащей sed. Если вы хотите удалить строки, содержащие указанный шаблон, выполните

sed -f sfile filel

This file is a test file for sed command

The sed command is used for stream editing files

The sed command a number of sub-commands which may be used to do the

editing in specified line

где sfile содержит:

/-/d

В приведенном выше примере все строки, Которые содержат -, будут удалены. Если вы хотите заменить вес появления конкретной строки на другую строку, выполните:

sed -f sfile filel

This file is a test file for sed command

++++++++++++++++++++++++++++++++++++++++

The sed command is used for stream editing files

The sed command a number of sub-commands which may be used to do the
editing in specified line

где sfile содержит следующее:

1,3a/--/+++++/g

В примере выше все появления -- заменяются на +++++ для строк с 1 по 3. Если вы хотите вставить указанную строку перед каждой строкой, содержащей заданный шаблон, выполните

aed -f afile filel

++++

This file ia a test file for sed commdnd

++++
The sed command is used for stream editing files

++++

The sed command a nuznber of sub-commands which may be used to do the

editing in specified line
где sfile содержит следующее:

/sed/i\

++++

В примере выше строка +4-+++ печатается перед каждой строкой, в Которой есть шаблон sed. Если вы хотите заменить каждое появление одного символа на другой, используйте

sed -f sfile filel

This file is A test file for sed commAnd

++++++++++++++++++++++++++++++++++++++++

The sed commAnd is used for streAm editing files

The sed command a number of sub-commands which may be used to do the
editing in specified line

где sfile содержит следующее:

1,3s/-/+/g

В примере каждое появление - (переноса) модифицируется на + (плюс) и каждое появление а модифицируется на А. Замена выполняется для строк с 1 по 3 включительно. Если вы хотите удалить все строки, за исключением тех, в Которых встречается указанный шаблон, выполните:

sed -f sfile filel

This file is a test file for sed command

The sed command is used for stream editing files

The sed command a number of sub-commands which may be used to do the

где sfile содержит следующее:

/sed/!d

В приведенном выше примере ! (восклицательный знак) используется для обозначения того, что будут обрабатываться все строки, за исключением тех, Которые содержат sed.

Различные команды

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

banner

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

Пример

Если вы хотите вывести слово banner в стандартный вывод большими буквами, выполните следующую команду:

banner banner

be

Если вы хотите выполнить в UNIX простые арифметические действия, воспользуйтесь командой be. По умолчанию все числа воспринимаются как десятичные, но можно выполнять и восьмеричные и шестнадцатеричные операции. Десятичные числа можно масштабировать. Команда be принимает ввод из указанно-
го файла, за Которым следует стандартный ввод. Однако можно выполнить операцию перенаправления так,
чтобы принимать ввод только из файла.

Аргументы, Которые можно использовать с командой be таковы:

р Имя переменной (один символ)

р Имя массива переменных (символ[выражение])

р Литерал, например, scale
НеКоторые допустимые операнды таковы:

С командой be можно также использовать операторы, подобные тем, что применяются в операторах, выражениях и функциях С. Вот несколько специальных функций, Которые можно использовать с командой be:

Примеры

Предположим, что есть файл filel, содержащий следующие параметры:

more filel

b=5

с=10

a-b+c

а

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

be -с < filel
5
sb

10sc
lblc+sа
laps.
q

Если вы хотите выполнить содержимое filel, выдайте следующую команду:

be < filel
15

Предположим, что есть filel со следующим содержанием:

а=0

J=50

for (i=l; i<=j; i++) aрi+a;

a

Если выполнить команду be с таким файлом на входе, программа сложит числа от 1 до 50 и отобразит сумму:

be < filel
1275

cal

Команда cal отображает календарь одного или нескольких месяцев в стандартный вывод. Если вы не указываете каких-либо аргументов, то команда выводит календарь текущего месяца. Можно указать месяц и год, календарь Которого следует отобразить. Если указать только один аргумент, то команда отобразит календарь всех 12 месяцев указанного года.

Примеры

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

саl

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

саl 1 1995

Если вы хотите получить календари на все 12 месяцев 1997 года, выполните команду:

са1 1997

calendar

Команда calendar используется для получения подсказок из специального файла под названием calendar в текущем каталоге. Сообщения хранятся в виде

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

clear

Команда clear применяется для очистки экрана вашей рабочей станции. Данная команда проверяет тип терминала, для того чтобы определить, как чистить экран.

Примеры

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

clear

time

Команда time используется для получения времени выполнения сценария, команды или программы. Время выполнения отображается в следующих видах:

Примеры

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

time sample
real Om6.49s
user OmO.OSs
sys Om0.03s

xargs

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

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

Примеры

Предположим, что есть файл xfile, содержимое Которого показано ниже:

more xfile
filel file2 file3
file4 file5 file6
file7 fileB file9

Если вы хотите передать команде Is только два аргумента, используйте флаг -п, как в следующей команде:

xargs -n2 ls < xfile
filel file2
file3 file4
file5 file6
file7 file8
file9

Если вы хотите передать команде ls одновременно две строки, используйте флаг -l, как в следующей команде:

xargs -12 ls < xfile

filel file2 file3 file4 file5 file6

file7 file8 file9

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

xargs -12 -p ls < xfile
sfileirile2 file3 file4 files file6 ?...y
filel fiie2 file3 file4 file5 fiie6
Is file7 fileB file9 ?...y
file7 file8 file9

В приведенном выше примере необходимо использовать букву у для подтверждения необходимости выполнения команды. Если вы хотите переименовать все фяйльт, начинающиеся с file (от filel до file9), используйте флаг -i, как в следующей команде:

1s file* ! xargs -t -i cp {} O.old
ср filel filel.old
cp file2 file2.old
cp file3 file3.old
cp file4 file4.old
cp file5 file5.old
cp file6 file6.old
cp file7 file7.old
cp file8 file8.old
cp file9 file9.old

В приведенном примере флаг -t заставляет отображаться сконструированную команду в стандартный вывод ошибок.

Регулярные выражения

Регулярные выражения в UNIX представляют собой строки из одного или нескольких символов и метасимволов. Команды, Которые принимают регулярные выражения, прежде всего должны раскрыть их так, чтобы получить определенную подстроку, и лишь затем сравнивать со вводом. Сравнение выполняется посимвольно.

ПРЕДОСТЕРЕЖЕНИЕ

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

Регулярное выражение содержит следующее:

Набор символов

Набор символов представляет собой список из одного или нескольких символов. Набор символов можно задать следующим образом:

Указатель позиции

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

Мета-символы

Мета-символ представляет собой символ, Который при использовании в регулярном выражении имеет специальное значение. Ниже приведен список мета-символов:

Примеры

Предположим, что есть файл под названием filel, содержимое Которого показано ниже:

more filel

This is a test

THIS IS A TEST

This is really a test

Believe it, this is really a test

This is a test, better believe it

В простейшей форме в качестве регулярного выражения вы можете указать строку символов. Если хотите найти в filel строку really, используйте следующую команду:

grep really filel
This is really a test

Believe it, this is really a test

Если хотите найти строку THIS в начале строки, используйте символ ^ в начале регулярного выражения, как в следующей команде:

grep ^HIS filel
THIS IS A TEST

Если хотите найти слово it в конце строки, используйте символ $ (знак доллара) в конце регулярного выражения, как в следующей команде:

grep it$ fiiel
Thos is a test, better believe it

Если хотите найти и believe, и Believe, воспользуйтесь командой:

grep [Bb]elieve it, this is really a test
This is a test, better believe it

В приведенном примере [Bb] соответствует один символ, В или Ь. Если хотите найти символы, отличающиеся от указанных, используйте команду:

grep [T] [^h] filel
THIS IS A TEST

В примере выше [^h] соответствует все, отличное от h, a [ТЦ^п] соответствует все что угодно, что начинается с Т и сопровождается символом, отличным от h. Если необходимо найти любое шестисимвольное поле с предшествующим или последующим пробелом, выполните следующую команду:

grep " ...... " filel

This is really a test

Believe it, this is really a test

This is a test, better believe it

В приведенном примере выражение " ...... " будет совпадать со строкой, например really или better, с предшествующим и замыкающим пробелом. Если вы хотите модифицировать все строки, Которые начинаются с t и имеют t в конце и содержат два символа посредине, используйте следующую команду:

sed "s/\(t\р..\l/--/g" filel

This is a --

THIS IS A TEST

This is really a --

Believe i---his is really a --

This is a --, better believe it

В примере выше \(t\) сохраняет символ t и \1 использует t в указанной позиции. Если хотите найти один или несколько экземпляров регулярного выражения, используйте следующую команду:

egrep it+ filel

Believe it, this is really a test

This i5 a test, better believe it

В примере выше it+ приказывает egrep найти один или несколько экземпляров слова it. Если вы хотите ипрсдслигь, пившрясш! ли регулярное выражение указанное число раз, выполните такую команду:

egrep tt\{l,4\) filel
This is a test, tetter believe it

В примере выше подходящими считаются как минимум одно и как максимум четыре повторения букв tt. Если хотите модифицировать все символы, отличные от букв, используйте следующую команду:

sed "s/^a-zA-Z ]/;/g" filel

This is a test

this is A test

This is really a test

Believe it: this is really a test

This is a tost: bettor believe it

В приведенном выше примере все символы, отличные от a-z, A-Z и пробела, будут заменены двоеточием (:).

Выполнение команд

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

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

Команду можно выполнять в фоновом режиме или в режиме переднего плана. Выполнить команду в фоновом режиме можно, указав знак & (амперсанд). Команду можно запустить в режиме переднего плана, а затем перевести ее в фон. Для этого приостановите выполнение нажатием Ctri-Z и переведите в фоновый режим командой bg.

Поскольку все команды UNIX принимают ввод из стандартного ввода и генерируют вывод в стандартный вывод, существует удобный способ передачи вывода одной команды к следующей с помощью символа канала | (pipe). Несколько команд можно связать каналами в конвейер.

Резюме

В данной главе вы изучили самые разные команды UNIX. Большинство из команд должно работать на разных системах UNIX в соответствии с приведенным описанием. Однако иногда данные команды или флаги могут вести себя чуть иначе. Ниже приведен перечень неКоторых работ, Которые вы можете выполнять с помощью команд UNIX:

Back