Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

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

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

еgrер

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

  • . соответствует любому единичному символу.

  • * соответствует одному или нескольким единичным символам, Которые предшествуют звездочке.

  • ^ соответствует регулярному выражению в начале строки.

  • $ соответствует регулярному выражению в конце строки.

  • + соответствует одному или нескольким появлениям предьщущего регулярного выражения.

  • ? соответствует нулю или большему количеству появлений предыдущего регулярного выражения.

  • [ ] соответствует любому из символов, указанных в скобках.

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

  • -b для отображения номера блока в начале каждой найденной строки.

  • -с для отображения счетчика строк, в Которых был найден шаблон без отображения строк.

  • -f filename для указания filename, Который содержит совпавшие шаблоны.

  • -h для подавления имен файлов в выводе, если просматривался более чем один файл.

  • -i для поиска, игнорирующего регистр символа.

  • -1 для поиска только имен файлов, в Которых был найден указанный шаблон.

  • -n для отображения относительного номера строки перед каждой строкой в выводе.

  • -q для подавления всего вывода.

  • -s для отображения сообщения об ошибке, если ошибка произойдет.

  • -v для поиска строк, не соответствующих указанному шаблону.

  • -w для поиска указанньис шаблонов как слов.

  • -х для точного соответствия шаблона и строки.

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

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

  • Вы можете указать знак ? (вопросительный знак) в конце подстроки, что соответствует нулю или одному появлению подстроки.

  • Вы можете указать | (вертикальная черта или канал) между двумя подстроками для проверки соответствия только одной из подстрок или обеим подстрокам (операция or).

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

Примеры

Предположим, что у нас есть файл под названием 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:

  • -b для отображения номера блока в начале каждой найденной строки.

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

  • -f filename для указания filename, Который содержит искомые подстроки.

  • -h для подавления имени файла как части вывода, если просматривался более чем один файл.

  • -i для поиска без учета регистра символов.

  • -l для вывода только имен файлов, в Которых найдена указанная подстрока.

  • -n для отображения относительного номера строки перед каждой строкой вывода.

  • -q для подавления всего вывода.

  • -s для отображения сообщения об ошибке, если ошибка произойдет.

  • -v для поиска строк, не содержащих искомой подстроки.

  • -w для поиска искомых подстрок как слов.

  • -х для поиска точного совпадения искомой строки со строкой в файле.

Примеры

Предположим, что у нас есть файл с именем 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:

  • -b для отображения номера блока в начале каждой найденной строки.

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

  • -Е для указания, что команда grep будет вести себя как команда egrep.

  • -F для указания, что команда grep будет вести себя как команда fgrep.

  • -f filename для указания filename, Который содержит образцы искомых подстрок.

  • -h для подавления имени файла как части вывода, если просматривалось более одного файла.

  • -i для поиска без учета регистра символов.

  • -1 для распечатки только имен файлов, в Которых найдена указанная подстрока.

  • -n для отображения относительного номера строки перед каждой строкой вывода.

  • -q для подавления всего вывода.

  • -s для отображения сообщения об ошибке, если ошибка произойдет.

  • -v для поиска строк, не содержащих указанной подстроки.

  • -w для поиска указанной подстроки как слова.

  • -х для поиска точного совпадения искомой подстроки со строкой в файл.

Примеры

Предположим, что у нас есть файл с именем 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:

  • -а или - для поиска во всем файле, а не только в разделе данньк.

  • -о для распечатки каждой строки с предшествующим смещением в файле (в восьмеричной системе).

  • -Number для указания минимальной длины строки, отличной от 4 по умолчанию.

Примеры

Если вы хотите найти строки, Которые существуют в исполняемом файле программы 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р:

  • -с для создания копии файла, чтобы данный файл можно было удалять или модифицировать после постановки в очередь на печать.

  • -dprintqueue для указания очереди на печать, в Которую направляется задание.

  • -m для уведомления по почте заинтересованного пользователя об успешном выполнении запроса на печать.

  • -ncopies для указания количества печатаемых копий.

  • -ititle для печати указанного заголовка на титульной странице.

Примеры

Для печати файла 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, для печати вывода.

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

  • -d генерирует вывод с двойным интервалом.

  • -f или -F использует прогон страницы для обозначения новой страницы вместо последовательности символов прогона строки.

  • -h "heading" для печати строки heading вместо имени файла, как заголовка каждой страницы.

  • l pagelength для установки числа строк для печати на каждой странице в pagelength, вместо 66 по умолчанию.

  • -n для указания ширины номера строки для печати перед каждой строкой. По выбору можно указать символ, Который будет печататься между номером строки и содержимым строки.

  • -oindent для указания отступа каждой строки на indent колонок.

  • -р для паузы после каждой страницы, если вывод направляется в стандартный вывод. Для продол жения работы нажмите клавишу Enter.

  • -r для подавления диагностических сообщений.

  • -t для подавления печати заголовков и нижних колонтитулов страницы.

  • -wwidth для установки ширины каждой страницы в width вместо 72-х по умолчанию.

  • +pagenumber для указания на то, что вывод должен начинаться номером страницы pagenumber, вме сто 1.

Примеры

Предположим, что у нас есть файл под названием 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:

  • -aqиеие, или -cqueue, или pqueue для отображения состояния и информации о заданиях в указанном списке очередей.

  • -d для отображения информации о принтерах линии по умолчанию.

  • -oqueue или ojobnumber для отображения состояния указанной queue или отображения состояния указанного jobnumber.

  • -r для отображения состояния и информации о заданиях всех очередей.

  • -s для отображения суммарной информации обо всех очередях.

  • -t для отображения детализированного состояния всех очередей.

  • -uusername для отображения состояния запросов на печать, поданных указанным пользователем username.

  • -vprintername для отображения списка указанного printername.

Примеры

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

  • -1 для отображения списка запланированных вами заданий.

  • -m для отправления почтой отчета об успешном выполнении задания.

  • -t date для планирования задания для выполнения в указанный день и час.

  • -r joblist для удаления заданий, указанных в списке, из очереди.

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

  • В системе есть at.allow и ваше пользовательское имя присутствует в файле at.allow.

  • В системе есть atdeny и ваше пользовательское имя не присутствует в at.deny.

Точное положение файлов 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, состоят из следующих полей (разделенных пробелами или символом табуляции):

  • minute (минута)

  • hour (час)

  • day (день месяца)

  • year (год)

  • day (день недели)

  • command (команда)

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

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

  • -1 для вывода на экран файла crontab

  • -е для редактирования или создания файла crontab

  • -е для удаления файла crontab

  • -v для вывода состояния заданий 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:

  • -d для того, чтобы заставить команду compress действовать как uncompress.

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

  • -f или -F для сжатия файла и перезаписи сжатого файла, если тот уже существует.

  • -v для отображения процента сжатия.

  • -V для отображения текущей версии и опций компиляции

Примеры

Для сжатия 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:

  • bs=blocksize для указания размера блока файла ввода или вывода. Данный параметр переопределяет флаги ibs и obs.

  • if=filename для указания вводного файла для копирования.

  • ibs=blocksizie для указания размера блока файла ввода.

  • fskip=numberoffiles указания количества маркеров End-of-File, Которое нужно пропустить во вводном файле, прежде чем начать копирование.

  • files=numberoffiles для указания числа файлов для копирования, например, с ленты, содержащей много файлов.

  • count1=numberofblocks для копирования указанного числа блоков из файла ввода.

  • skip=numberofblocks для пропуска указанного числа блоков в файле ввода до начала копирования.

  • of=fllename для указания имени файла ввода при создании.

  • obs=blocksize для указания размера блока файла ввода.

  • seek=recordnumber для указания номера записи в файле ввода, с Которого следует начинать запись файла ввода при копировании.

  • conv==conversionparameter для указания типа используемого преобразования. Значениями данного параметра могут быть: ASCII, EBCDIC, block, uinboick, lease, ucase.

Примеры

Если у вас есть файл, записанный в системе, Которая хранит данные в коде 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:

  • - для отображения статистических данных о сжатии.

  • -f для принудительной упаковки.

Примеры

Если у вас есть файл под названием 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:

  • -c для создания нового архива и записи деталей файла с начала архива.

  • -t для генерации списка файлов в архиве.

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

  • -m для использования времени извлечения из архива как времени модификации извлекаемого файла.

  • -р для восстановления файлов с их исходными правами доступа, игнорируя текущую установку umask.

  • -f archive для использования в качестве архива указанного archive, а не архива, указываемого системой по умолчанию.

  • -v для отображения во время обработки имени каждого файла.

Примеры

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

tar -xvf /dev/rmtl /u/testuser

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

tar filel

uncompress

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

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

  • -f или -F для принудительной распаковки даже в случае, когда файл с именем несжатого файла уже существует.

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

  • -v для отображения сообщений о статистике сжатия из команды uncompress.

  • -q для подавления статистики сжатия из команды 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 для установки системной даты.

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

  • %А для отображения даты, дополненной названием дня недели.
  • %b или %h для отображения сокращенного названия месяца.
  • %В для отображения полного названия месяца.
  • %с для отображения даты и времени в формате по умолчанию.
  • %d для отображения дня месяца как числа от 1 до 31.
  • %D для отображения даты в формате мм/дд/гг.
  • %H для отображения часов как числа от 00 до 23.
  • %I для отображения часов как числа от 00 до 12.
  • %j для отображения дня года как числа от 1 до 366.
  • %m для отображения месяца как числа от 1 до 12.
  • %М для отображения минут как числа от 0 до 59.
  • для отображения AM или РМ, соответственно.
  • % для отображения 12-ти часового периода времени (01-2), используя запись АМ-РМ.
  • %S для отображения секунд как числа от 0 до 59.
  • %Т для отображения времени в формате hh:mm:ss для 24-часового периода времени.
  • %U для отображения номера недели года как числа от 1 до 53, считая воскресенье первым днем недели.
  • %w для отображения дня недели как числа от 0 до 6, где воскресенье имеет номер 0.
  • %W для отображения номера недели года как числа от 1 до 53, считая понедельник первым днем недели.
  • %х для отображения формата даты по умолчанию.
  • %Х для отображения формата времени.
  • %у для отображения последних двух цифр года от 00 до 99.
  • %Y для отображения года с номером века как десятичным числом.
  • %Z для отображения названия временной зоны, если доступно.

Примеры

Если вы хотите отобразить дату без форматирования, то используйте команду 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 отображает процент простоя ЦПУ при ожидании выполнения запросов на ввод/вывод.

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

  • %tm_act
  • отображает процент использования физического тома.
  • Kbps
  • отображает число килобайт, передаваемых в секунду на или с физического тома.
    в
    tps отображает число физических запросов на ввод/вывод к физическому тому.
  • msps
  • отображает среднее число миллисекунд, требующихся для каждого поиска на физическом томе.
  • Kb_read
  • отображает число килобайт, считанных с физического тома.
  • Kb_wrtn
  • отображает число килобайт, записанных на физический том.
    Ниже следует перечень флагов, Которые используются с командой
    iostat:

- -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:

  • -А для сообщения данных о всей активности системы.
  • -а для сообщения данных об использовании подпрограмм доступа к файловой системе.
  • -b для сообщения об активности буфера.
  • -с для сообщения о системных вызовах, таких как forks, execs и т.д.
  • для указания времени в формате hh:mm:ss, когда собранные сведения должны уничтожаться.
  • -f file для извлечения данных из указанного файла.
  • -i seconds для извлечения из файла данных, ближайших по времени, указанном в секундах.
  • -k для сообщений об активности ядра.
  • -m для сообщения об активности семафоров и сообщений.
  • file для сохранения данных об активности в указанном файле.
  • -r для отчета о статистике страничного обмена.
  • -s по желанию сопровождается временем в формате hh:mm:ss для указания времени начала накопления данных.
  • -v для сообщения об активности по процессам и индексным дескрипторам.
  • -у для сообщения от активности TTY.

uname

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

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

  • -m для вывода идентификатора машины.
  • -r для вывода номера релиза операционной системы.
  • -s для вывода имени системы.
  • -v для вывода версии операционной системы.
  • -S name для модификации имени системы.
  • -а для отображения идентификатора машины, номера релиза операционной системы и имени системы.

Примеры

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

uname -а
AIX main_system 2 3 000010000526

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

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

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

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

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

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

uptime

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

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

vmstat

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

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

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

  • Процессы
  • Виртуальная память
  • Страница
  • Отказы
  • ЦПУ

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

  • r отображает число процессовр помещенных в очередь и готовых к выполнению.
  • b отображает число процессов, помещенных в очередь и ожидающих выполнения.
    Сведения по памяти, таковы:

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

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

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

  • re отображает число страниц, запрошенных в секунду по наблюдениям за определенный интервал.

  • pi отображает число страниц, перенесенных из области подкачки за определенный интервал.

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

  • fr отображает число страниц, освобожденных в определенный интервал.

  • sr отображает число изученных страниц для определения того, можно ли их освободить, в опреде ленный интервал.

  • су отображает количество тактов процессора в секунду.
    Сведения по сбоям таковы:

  • in отображает количество прерываний в секунду в определенный интервал.

  • sy отображает количество системных вызовов в секунду в определенный интервал.

  • cs отображает число переключении контекстов в секунду в определенный интервал.
    Сведения по ЦПУ таковы:

  • us отображает процент использования ЦПУ для приложения в течение определенного интервала.

  • sy отображает процент использования ЦПУ для системы в течение определенного интервала.

  • id отображает процент простоя ЦПУ в течение определенного интервала без ожидания ввода/вывода.

  • wa отображает процент простоя ЦПУ в течение определенного периода из-за запросов на ввод/вывод.

Можно указать до четырех имен физических томов для получения количества перемещения данных, Которые осуществляются на данных дисках в определенный интервал времени.
Ниже приведен флаг, Который можно использовать с командой
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 для редактирования одного или нескольких файлов.
Далее следует список флагов, Которые можно использовать с командой ех:

  • sub-command для выполнения указанной подкоманды в указанном файле перед вызовом команды ех.
  • -R для запрещения обновлять файл.
  • wsize для установки окна в количество строк, равное size.
  • -v для вызова редактора vi.
  • -r file для восстановления указанного файла.

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

  • z для вызова режима полного экрана.
  • u для отмены последних сделанных изменений.

  • n для перехода к следующему файлу, если вы вызвали редактор ех с несколькими файлами.

  • /pattern/ для поиска подстроки в файле.

  • d для удаления одной или нескольких строк.

  • а для добавления в конец.

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

  • command mode: после запуска редактор ех переходит в режим command, что отмечается подсказкой : (двоеточием) там, где можно ввести подкоманду.

  • text input mode: в данном режиме можно вводить или менять текст в файле. Вводить текст следует с помощью подкоманд a, i или с. Использование подкоманд предоставляет возможность вводить текст в буфер. Возвратиться в командный режим можно, если ввести . (единичную точку) в качестве первого символа буфера текста

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:

  • -b для указания позиции в байтах.
  • -s для разделения строки после последнего пробела в позиции, Которая меньше или равна указанной длине.
  • -w width для указания длины строки.

Примеры

Предположим, что у нас есть 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 field или -j1 field для указания на то, что соединение делается на основе поля field в первом файле.
  • -2 field или -j2 field для указания на то, что соединение делается на основе поля field во втором файле.
  • string для указания на то, что пустые поля в выводном файле будут заменяться на string,

  • fileid.fieldnumber для указания на то, что вывод должен состоять из специфицированных полей. Можно указать множество полей, разделенных запятыми.

  • -t character для модификации символа разделителя полей со значения пробела по умолчанию.

  • -a fileid для генерации выводной строки для каждой строки в файле, указанном параметром fileid, для не сопоставившихся строк по полю соединения. Данные строки вывода порождаются в дополнение к выводу по умолчанию.

  • -v fileid для генерации строки вывода для каждой строки в файле, указанном параметром fileid для не сопоставившихся строк в другом файле по полю соединения. Вывод по умолчанию не производится.

Примеры

Предположим, что есть два файла, П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:

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

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

Примеры

Предположим, что есть два файла, 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:

  • -kkey для указания ключа, по Которому сортировать. Спецификация ключа включает начальное поле и позицию колонки и конечное поле и позицию колонки.

  • -А для указания на то, что сортировка будет выполняться с использованием объединяющей последовательности ASCII.

  • -с для проверки, отсортированы ли указанные файлы в соответствии с указанным ключом и порядком.

  • -d для сортировки в соответствии с порядком в словаре.

  • -f для изменения всех букв на прописные перед сортировкой.

  • -i для игнорирования неотображаемых символов при сравнении.

  • -m для слияния предварительно отсортированных файлов.

  • -n для сортировки в соответствии с числовым значением.

  • -ofile для перенаправления вывода в указанный file вместо стандартного вывода.

  • -r для сортировки вывода в обратном порядке по сравнению с указанным.

  • -u для создания только одной строки в выводе для строк, Которые отсортированы идентично.

Примеры

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

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

  • [character1 - character2} для указания диапазона символов, включая character1 и character2.

  • [character *number} для указания number количества появлений character.

  • [character*} для спецификации применения такого количества появлений character, Которое необходимо для того, чтобы вводная строка символов, подлежащих трансляции, совпадала с выводными символами после трансляции.

  • [:characterlist:} для указания списка символов как вводной, так и выводной строки, characterlist может быть upper, lower, alpha, space, digit и т.д.

Примеры

Предположим, что у нас есть файл 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:

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

  • -d для вывода только тех строк, Которые появлялись в файле ввода несколько раз подряд.

  • -u для отображения строк, Которые появлялись во вводном файле только раз.

  • -s numberofcharaclers или +numerofcharacters для указания количества символов от начала строки, Которые будут игнорироваться при сравнении двух смежных строк.

  • -numberpffields или -f numberoffields для указания количества полей от начала строки, Которые будут игнорироваться при сравнении смежных строк.

Примеры

Предположим, что у нас есть 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:

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

  • -f filename для использования filename как сценария редактирования для редактирования файла.

  • -n для подавления сообщений sed.

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

  • область pattern area для хранения строк, подлежащих редактированию.
  • область hold area для временного хранения строк.

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

  • # для указания начала комментариев. Все в строке, что следует за #, трактуется как комментарии.
  • :label
  • для указания адресуемой label (метки), Которую можно использовать в сценарии.
  • [/pattern/]
  • для записи в вывод номера каждой строки, Которая содержит указанную подстроку
  • [address]a\teststring
  • для включения textstring
    в конец каждой строки, указанной address.
  • [address1][,address2]c\textstring
  • для замены строк в указанном диапазоне адресов на textstring,
  • [address 1][,address2]d
  • для удаления строк в указанном диапазоне адресов.
  • [address]i\textstring
  • для вставки textstring перед каждой указанной строкой.
  • [address1][,address2]p
  • для печати строк в указанном диапазоне адресов.
  • [addressl][,address2]n
  • для указания на то, что текущая строка будет выведена на экран, а следующая строка станет текущей.
  • [address2][address]N
  • для указания на то, что текущая строка будет добавлена в конец содержимого области шаблонов, отделенная символом новой строки.
  • [address]q
  • для выхода, когда будет достигнут указанный адрес.

  • [address1][,address2]s/old pattern/new pattern/[flag] для указания на то, что old pattern будет заменен на new pattern в указанном диапазоне адресов. Поведение замены модифицируется специальными флагами.

  • [address1][,address2]w file для записи содержимого указанного диапазона в указанный файл.

  • [addressl][,address2]y/old character list/new character list/ для модификации каждого символа в списке старых символов на соответствующий символ из нового списка.

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

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

  • [address1][address2]G
  • для добавления содержимого hold area в конец pattern area вслед за указанным адресом.
  • [address1][,address2]h
  • для копирования содержимого pattern area в hold area- После этого содержимое pattern area становится новым содержимым hold area.
  • [address1][,address2]H
  • для добавления содержимого pattern area в конец hold area вслед за указанным адресом.
  • [address1][,address2]x
  • для обмена содержимым pattern area и hold 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
НеКоторые допустимые операнды таковы:

  • + для сложения
  • - для вычитания
  • / для деления
  • * для умножения
  • % для процента
  • ++ для добавления единицы к предшествующей переменной
  • - для вычитания единицы из предшествующего значения
  • ^ для присваивания значения
  • sqrt для вычисления корня квадратного
  • length для получения длины числа
  • scale для указания количества цифр после запятой

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

  • s(x) для синуса х
  • с(х) для косинуса х
  • 1(х) для логарифма х
    Ниже
    следует список флагов, Которые можно использовать с командой
    be:
  • -с для компиляции параметров программы be, но не для выполнения
  • -l для включения библиотеки математических функций

Примеры

Предположим, что есть файл 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 в текущем каталоге. Сообщения хранятся в виде

  • дата сообщение
  • сообщение дата
    где
    date может быть записана в разных форматах, таких как
  • March 7
  • Mar 7
  • mar 7
  • march 7th
  • 3/7
  • */7(7th of each month)

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

clear

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

Примеры

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

clear

time

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

  • реальное
  • пользовательское
  • системное

Примеры

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

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

xargs

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

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

  • -eendoffllecharacter для указания символа, Который будет использоваться для окончания строки аргументов. По умолчанию таким символом является знак _ (подчеркивание)

  • -istring для использования каждой строки как единичного параметра, вместо переменной string, указанной как часть командной строки. Значение по умолчанию string - это {}.

  • -lпитbеr для указания номера непустых строк, Которые будут использоваться как аргументы для команды при каждом вызове. Последний вызов может использовать меньше аргументов, чем указано в number,

  • -nnитbеr для указания числа аргументов, Которые будут использоваться в каждом вызове. Последний вызов может использовать меньше аргументов, чем указывает number

  • для запроса подтверждения перед выполнением команды.

  • -ssize для установки максимального размера списка аргументов при каждом вызове.

  • -t для повторения сконструированной команды в стандартном выводе ошибок.

Примеры

Предположим, что есть файл 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 предлагает несколько специальных символов для указания определенных позиций в строке. Ниже следует список специальных символов:
  • ^ в начале регулярного выражения для указания начала строки.
  • $ в конце регулярного выражения для указания конца строки.

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

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

  • . соответствует всем символам, за исключением символа перехода к новой строке.

  • * соответствует нулю или нескольким предьвдущим символам или регулярным выражениям.

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

  • $ соответствует предшествующему регулярному выражению в конце строки (для того чтобы $ работал, необходимо указывать $ в качестве последнего символа регулярного выражения).

  • [ ] соответствует одному из символов, заключеннь1х в квадратные скобки. Символы в скобках могут представлять диапазон или быть списком отдельных символов.

  • \{п1,п2\} соответствует минимум п1 и максимум п2 появлений предыдущего символа или регулярного выражения.

  • \ для интерпретирования следующего символа как регулярного, а не как мета-символа.

  • (\) для сохранения заключенного в скобки регулярного выражения для дальнейшего использования.Повторное использование производится указанием от \1 до \9.

  • \< соответствует следующему регулярному выражению в начале слова.

  • \> соответствует предыдущему регулярному выражению в конце слова.

  • ? соответствует нулю или одному экземпляру предшествующего регулярного выражения.

  • + соответствует одному или нескольким экземплярам предшествующего регулярного выражения.

Примеры

Предположим, что есть файл под названием 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:

  • Входить в систему, используя такие команды, как
  • login, rlogin и passwd.
  • Создавать, переименовывать, удалять и копировать файлы и каталоги, используя такие команды, как ср,
  • nn, rmdir и mkdir.
  • Искать текст в файле, используя команды, подобные
  • grep.
  • Обеспечивать пользователям доступ к файлам и каталогам с помощью таких команд, как
  • chmod и chgrp.
  • Модифицировать содержимое файлов с помощью таких команд, как
  • vi и sed.
    Отображать содержимое файлов, используя такие команды, как more, tail, head и pg.
Back

К оглавлению