Библиотека сайта 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 отображает число килобайт, передаваемых в секунду на или с физического тома.
- msps отображает среднее число миллисекунд, требующихся для каждого поиска на физическом томе.
- Kb_read отображает число килобайт, считанных с физического тома.
- Kb_wrtn отображает число килобайт, записанных на физический том.
в tps отображает число физических запросов на ввод/вывод к физическому тому.
Ниже следует перечень флагов, Которые используются с командой 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 25 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
5sb
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. Однако регулярное выражение - это не то же самое, что шаблон имени файлов. |
Регулярное выражение содержит следующее:
- набор символов, Которые совпадают с одним или несколькими символами на указанной позиции.
- счетчик, Который указывает количество повторений предыдущего символа. А именно * (звездочка)указывает на то, что должны повториться нуль или несколько предыдущих символов
- указатель позиции, Который представляет собой множество специальных символов для указания оп ределенных фиксированных позиций, таких как начало строки, конец строки и т.д.
- мета-символы для указания специальных значений.
Набор символов
Набор символов представляет собой список из одного или нескольких символов. Набор символов можно задать следующим образом:
- как диапазон символов, определяемый как два символа, заключенные в квадратные скобки и разделенные знаком переноса. Это соответствует одному появлению символа из указанного диапазона. Если перед диапазоном указать ^, то соответствие обращается - то есть подходят все символы, за исключением тех, Которые указаны в диапазоне.
- список символов, Который может быть списком отдельных символов, заключенных в квадратные скобки. Здесь подходит одно совпадение символа со списком. Для обозначения того, что подходят все символы, за исключением данного, можно использовать символ ^ перед проверяемым символом.
Указатель позиции
- ^ в начале регулярного выражения для указания начала строки.
- $ в конце регулярного выражения для указания конца строки.
Мета-символы
Мета-символ представляет собой символ, Который при использовании в регулярном выражении имеет специальное значение. Ниже приведен список мета-символов:
- . соответствует всем символам, за исключением символа перехода к новой строке.
- * соответствует нулю или нескольким предьвдущим символам или регулярным выражениям.
- ^ соответствует регулярному выражению, следующему за символом в начале строки (для того чтобы ^ работал, необходимо указывать ^ в качестве первого символа регулярного выражения).
- $ соответствует предшествующему регулярному выражению в конце строки (для того чтобы $ работал, необходимо указывать $ в качестве последнего символа регулярного выражения).
- [ ] соответствует одному из символов, заключеннь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.