Команды поиска содержимого в файле
Мы уже видели, что команду find можно использовать для поиска файлов в каталоге. Для поиска подстроки в одном или нескольких файлах задействуйте серию команд grep. Команды grep ищут строку в указанных файлах и отображают вывод в стандартный вывод.
еgrер
Команда egrep является расширенной версией команды grep. Данная команда ищет указанную подстроку в одном или нескольких файлах и отображают вывод в стандартный вывод. Искомая подстрока может быть регулярным выражением, в Котором можно указать специальные символы с особым значением, неКоторые из Которых приведены ниже:
Далее следует список флагов, Которые можно использовать с командой egrep:
Команда egrep позволяет определить дополнительные характеристики для искомых подстрок. Эти характеристики таковы:
Примеры
Предположим, что у нас есть файл под названием filel, чье содержимое показано ниже с помощью команды more:
more filel
***** This file is a dummy file *****
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
Believe it or not, grep series of commands are used by pros and novices alike
*.*r*** this FILE IS A DUMMY FILE *****
Если вы хотите найти все появления dummy, то используйте следующую команду:
еgrер dummy filel
***** This file is a dummy file *****
Если вы хотите найти все появления dummy, независимо от регистра, то используйте флаг -i, как в следующей команде:
egrep -i dummy filel
*р*** This file is a dummy file *****
**r*** this FILE IS A DUMMY FILE *****
Если вы хотите вывести относительный номер строки, Которая содержит указанную подстроку, используйте флаг -n, как в следующей команде:
egrep -i -n dummy filel
1';***** This file is a dummy file *****
8 ;***** this FILE IS A DUMMY FILE *****
Если вас просто интересует поиск номеров строк, в Которых есть указанная подстрока, используйте флаг -с, как в следующей команде:
egrер -i -с dummy filel
2
Если вы хотите получить список всех строк, Которые не содержат указанной подстроки, то используйте флаг -v, как в следующей команде:
egrep -i -v dummy filel
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
Believe it or not, grep series of commands are used by pros and novices alike
Если вас интересует поиск подстроки как слова, то используйте флаг -w, как в следующей команде:
egrep -w grep filel
grep series of commands are used by the following types of people
Believe it or noty grep series of commands are used by pros and novices alike
Обратите внимание на то, что поиск не находит подстроку egrep, поскольку та содержит с перед grep. Использование флага -w заставляет egrep искать подстроку grep, отделенную пробелами или символами новой строки.
Если вы хотите искать подстроку (string), Которая полностью соответствует строке (line), используйте
флаг -х, как в следующей команде:
egrep -х " end users" filel
end users
Теперь давайте исследуем неКоторые специальные механизмы egrep. Если вы хотите узнать, где появляется любая из двух указанных подстрок, используйте следующую команду, в Которой две подстроки разделяются | (вертикальной чертой):
egrep " (dummy | pro) " filel
р**** This file is a dummy file *****
programmers
Believe it or not, grep series of commands are used by pros and novices alike
В приведенном примере будут отображены строки, Которые содержат либо подстроку dummy, либо подстроку pro. В случае, если вы заинтересованы в поиске либо pros, либо programmers, используйте ? (знак вопроса) в конце подстроки, как в следующей команде:
egrep "pro(grammer)?s" filel
programmers
Believe it or not/ grep series of commands are used by pros and novices alike
В приведенном выше примере шаблон удовлетворяет и pros и programmers благодаря тому факту, что (grammer)? соответствует нулю, или одному появлению grammer. Нуль появлений дает pros, и одно появление дает programmers.
Для поиска строк, содержащих только заглавные буквы С, D, Е или F, используйте регулярные выражения следующим образом:
egrep [C-F] filel
р**** THIS FILE IS A DUMMY FILE *****
fgrep
Подобно egrep и grep, fgrep также осматривает один или несколько файлов в поисках указанной строки и отображает вывод в стандартный вывод. Предполагалось, что команда fgrep будет более быстрой версией команды grep, но в реальности так может и не быть. Пожалуйста, обратите внимание на то, что команда fgrep используется для поиска указанной строки, а не подстроки с символами шаблонов (регулярного выражения, в Котором могут задействоваться специальные символы, для указания специальных значений).
Ниже следует перечень флагов, Которые можно использовать с командой fgrep:
Примеры
Предположим, что у нас есть файл с именем filel, чье содержимое показано ниже с помощью команды more:
more filel
р**** This file is a dummy file *****
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
Believe it or not, grep series of commands are used by pros and novices alike
р**** this FILE IS A DUMMY FILE *****
Если вы хотите найти все появления dummy, используйте следующую команду:
fgrep dummy filel
р**** This file is a dummy file *****
Если вы хотите найти все появления dummy, независимо от регистра, используйте флаг -i, как в следующей команде:
fgrep - i dummy fi le 1
р**** This file is a dummy file *****
р**** this FILE IS A DUMMY FILE *****
Если вы хотите отобразить относительный номер строки, Которая содержит указанную подстроку, используйте флаг -n, как в следующей команде:
fgrep -i -n dummy filel
1:***** This file is a dummy file *****
9;***** this FILE IS A DUMMY FILE *****
Если вас интересует просто номера строк, в Которых есть указанная подстрока, используйте флаг -с, как в следующей команде:
fgrep -i -с dummy filel
2
Если вы хотите получить список всех строк, Которые не содержат указанной подстроки, используйте флаг -v, как в следующей команде:
fgrep -i -v dummy filel
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
Believe it or not, grep series of commands are used by pros and novices alike
Если вас интересует поиск заданной подстроки как слова, используйте флаг -w, как в следующей команде:
fgrep -w grep filel
grep series of commands are used by the following types of people
Believe it or not, grep series of commands are used by pros and novices alike
Обратите внимание, что поиск не находит подстроку egrep, поскольку та содержит е перед grep. Использование флага -w заставляет fgrep искать подстроку grep, отделенную пробелами или символами новой строки.
Если вы хотите искать подстроку (string), Которая полностью соответствует строке (line), то используйте флаг -х, как в следующей команде:
fgrep -х " end users" filel
end users
grep
Команда grep применяется для поиска указанной подстроки в одном или нескольких файлах и отображает соответствующий вывод в стандартный вывод.
Ниже приведен перечень флагов, Которые можно использовать с командой grep:
Примеры
Предположим, что у нас есть файл с именем filel, чье содержимое показано ниже с помощью команды more:
more filel
***** This file is a dummy file *****
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
Believe it or not, grep series of commands are used by pros and novices alike
***** this FILE IS A DUMMY FILE *****
Если вы хотите найти все появления dummy, используйте следующую команду:
grep dummy filel
***** This file is a dummy file *****
Если вы хотите найти все появления dummy, независимо от регистра, используйте флаг -i, как в следующей команде:
grep -i dummy filel
***** This file is a dummy file *****
***** this FILE IS A DUMMY FILE *****
Если вы хотите вывести относительный номер строки, Которая содержит указанную подстроку, то используйте флаг -n, как в следующей команде:
grep -i -n dummy filel
1;***** This file is a dummy file *****
9:***** this FILE IS A DUMMY FILE *****
Если вас интересует только определение номеров строк, в Которых есть указаннаяподстрока, то используйте флаг -с, как в следующей команде:
grep -i -с dummy fiiel
2
Если вы хотите получить список всех строк, Которые не содержат указанной подстроки, то используйте флаг -v, как в следующей команде:
grep -i -v dummy filel
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
Believe it or not, grep series of commands are used by pros and novices alike
Если вас интересует поиск подстроки как слова, то используйте флаг -w, как в следующей команде:
grep -w grep filel
grep series of commands are used by the following types of people
Believe it or not, grep series of commands are used by pros and novices alike
Обратите внимание, что поиск не находит шаблон egrep, поскольку тот содержит е перед grep. Использование флага -w заставляет grep искать подстроку grep, отделенную пробелами или символами новой строки.
Если вы хотите искать подстроку (string), Которая полностью соответствует строке (line), то используйте флаг -х, как в следующей команде:
grep -х " end users" filel
end users
Теперь давайте исследуем неКоторые специальные механизмы команды grep. Если вы хотите найти, какие строки начинаются с прописных букв от А до С, используйте следующую команду:
grep "^[А-С]" filel
Believe it or not, grep series of commands are used by pros and novices alike
В данном примере символ ^ указывает, что следующий символ ищется в начале каждой строки. В случае, если вас интересует поиск всех строк, Которые не начинаются с прописных букв от А до F, используйте следующую команду:
grep "^[^A-F]" filel
*** his fie is a dummy file *****
which has been created
to run a test for egrep
grep series of commands are used by the following types of people
programmers
end users
***** THIS FILE IS A DUMMY FILE *****
В данном примере символ А вне [ ] ищет следующий символ в начале строки, где символ ^ внутри [ ] указывает, что соответствие будет тогда, когда символ не является A-F, то есть поиску удовлетворяют все строки, Которые не имеют букв A-F в начале строки.
Для поиска строк, содержащих только прописные буквы С, D, Е или F, используйте регулярное выражение, подобное следующему:
grep [C-F] filel
***** this FILE IS A DUMMY FILE *****
strings
Команда strings используется для поиска строк в исполняемых файлах, если строка состоит из четырех или более печатаемых символов, оканчивающихся null или символом новой строки.
Далее следует список флагов, Которые работают с командой strings:
Примеры
Если вы хотите найти строки, Которые существуют в исполняемом файле программы strings, выполните следующую команду в каталоге, Который содержит strings:
strings strings
|@(#)56
1.17 com/cmd/scan/strings.c, cmdscan/ Ьоз320, 9227320Ь 5/7/92 10:21:20
Standard input
strings.cat
/usr/mbin/strings
Usage: strings [ -a ] [ -o ] [ -# ] [ file ... ]
%7o
%7o
Если вы хотите получить в распечатке смещения строк в файле, используйте флаг -о следующим образом:
strings -о strings
6017 |@(#)56
6027 1.17 com/cmd/scan/strings.c, cmdscan, bos320/ 9227320Ь 5/7/92 10:21:20
6140 Standard input
6164 strings.cat
6200 /usr/mbin/strings
6224 Usage: strings [ -a ] [ -o 1 Г -# I [ file ... ]
6314 %7o
6330 %7o
Если вы хотите ограничить поиск в исполняемом модуле программы strings, скажем, только 15 символами или больше, то выполните следующую команду:
strings -о -15 strings
6027 1.17 com/cmd/scan/strings.c, cmdscan, bos320, 9227320Ь 5/7/92 10:21:20
6200 /usr/mbin/strings
6224 Usage: strings [ -a ] [ -о ] [ -# ] [ file ... ]
Печать
У вас могут быть несколько документов, Которые желательно распечатать, и может быть несколько принтеров, подключенных к компьютеру, на Которых можно печатать. Здесь мы обсудим несколько команд, Которые направляют указанные документы на печать на указанные принтеры и определяют состояние принтеров. Мы также обсудим команды для отмены посланных в очередь на печать работ.
В системе UNIX у вас может быть несколько принтеров, но только один из них может быть установлен как принтер по умолчанию, к Которому посылаются все запросы на печать с неуказанным именем принтера.
cancel
Если ранее, с помощью команды 1р, вы поставили в очередь на печать один или несколько документов, а теперь вы хотите снять свои запросы, используйте команду cancel. С помощью команды cancel можно снять либо указанное задание, либо все задания в указанной очереди на печать. Если вы являетесь обычным пользователем, снимайте только те задания, Которые помечены вашим идентификатором.
В команде cancel вы можете указать один или несколько идентификаторов заданий или имя принтера.
Примеры
Для снятия задания с ID 734 выполните следующую команду:
cancel 734
Для снятия всех заданий в очереди на принтере our_printer, используйте следующую команду:
cancel our_pprinter
lp
Для печати одного или нескольких файлов на указанном принтере используйте команду 1р. По умолчанию команда 1р принимает ввод из стандартного ввода. Если указан более чем один файл, то файлы печатаются в порядке их указания в командной строке. Выводимые на печать файлы нельзя удалять или переименовывать до конца печать, поскольку команда 1р не делает копии печатаемого файла (если не указан флаг -с).
Ниже приводится перечень флагов, Которые можно использовать с командой 1р:
Примеры
Для печати файла filel выполните следующую команду:
1р filel
В данном примере filel будет напечатан на принтере по умолчанию. Если вы хотите выполнить печать на принтере our_printer, Который находится рядом, используйте флаг -d, как в следующей команде:
lp -dour_printer filel
Если filel велик и вы хотите получить уведомление после того, как печать будет успешно выполнена, используйте флаг -m, как в следующей команде:
1р -m -dmain-printer filel
Если вы хотите отпечатать несколько копий filel для того, чтобы распространить их среди своих коллег, используйте флаг -n, как в следующей команде:
lp -nl5 -dour_printer filel
В примере выше будет печататься 15 копий filel на принтере под названием our_printer. Если вы хотите напечатать заголовок urgent memo на титульной странице, то используйте флаг -t как в следующей команде:
lp -nl5 "L"urgent memo" -dour_printer filel
В приведенном примере будет печататься 15 копий filel на принтере our_rinter с заголовком urgent memo, печатающимся на титульной странице.
рr
Команда рг по умолчанию принимает ввод из стандартного ввода и генерирует вывод в стандартный вывод. Команда форматирует вывод на страницы с именем файла, датой, временем и номерами страниц. Если длина строки больше, чем ширина страницы, то строка урезается. Поскольку команда рr форматирует и разбивает вывод на страницы, вы можете соединить вывод команды рr каналом с командой печати,
такой как lp, для печати вывода.
Далее следует список флагов, Которые можно использовать с командой рг:
Примеры
Предположим, что у нас есть файл под названием filel, содержимое Которого показано ниже с помощью команды more:
more filel
This is a test file for pr command
We will use it to show the usage of various flags of pr command
Самый простой вариант использования команды рг таков:
pr filel
Wed Dec 4 00:40:14 1996 filel Page I
This is a test file for pr command
We will use it to show the usage of various flags of pr command
Если вы хотите отобразить вывод с двойным интервалом, то используйте флаг -d, как в следующей команде:
pr -d filel
Wed Dec 4 00:40:14 1996 filel Page I
This is a test file for pr command
We will use it to show the usage of various flags of pr command
Если вы хотите печатать свой заголовок вместо имени файла, то используйте флаг -h, как в следующей команде:
pr -h "TEST FILE FOR pr COMMAND" filel
Wed Dec 4 00:40:14 1996 TEST FILE FOR pr COMMAND Page 1
This is a test file for pr command
We will use it to show the usage of various flags of pr command
Если вы не хотите печатать заголовки, то используйте флаг -t, как в следующей команде:
pr -t filel
This is a test file for pr command
We will use it to show the usag fvrious fags of pr command
Если вы хотите печатать номера строк перед каждой строкой и хотите, чтобы между номером строки и ее содержимым печатался - (перенос), то используйте флаг -n, как в следующей команде:
pr -n-5 filel
Wed Dec 4 00:40:14 1996 filel Page I
1-This is a teat file for pr command
2-We will use it to show the usage of various flags of pr command
lpstat
Команду lpstat можно использовать для отображения состояния всех принтеров линии (line printers). Если команда lpstat выполняется без каких-либо флагов, то она отображает состояние каждого принтера с очередями задания, созданными командами 1р.
Далее следует перечень флагов, Которые можно использовать с командой Ipstat:
Примеры
Если вы хотите узнать сведения обо всех принтерах в системе, используйте команду lpstat без какихлибо флагов, как в следующей команде:
Ipstat I more
Queue Dev Status Job Files User PP % Elks Cp Rnk
m_J?rt IpO READY
prt_01 bshde READY
prt_02 lp0 READY
Если вы хотите получить информацию о принтере по умолчанию, используйте флаг -d, как в следующей команде:
lpstat -d
Queue Dev Status Job Files User PP % Biks Cp Rnk
m_Jprt IpO READY
Если вы печатаете file! на printerJH, то получить информацию о состоянии принтера и задания можно, указав флаг -а, как в следующей команде:
lpstat -aprinter_01
Queue Dev Status Job Files User PP % Biks Cp RnkTotal Size
systems ipprt ready
prt_01: prt_01 is ready and printing
prt_01: Rank Owner Job Files
prt_01: active testuser 735 filel
Планирование
UNIX предоставляет возможность планировать сценарии и команды для выполнения в последующий момент времени. Вы можете указать точное время, когда следует выполнить команду. Кроме того, UNIX обеспечивает способ сообщений о запланированных заданиях и способ удаления заданий, если вы передумали их выполнять.
at
Команда at предоставляет возможность:
р Планировать исполнение команды в указанное время.
р Отображать список запланированных к исполнению заданий.
р Удалять задания из списка запланированных.
Задания можно планировать, указывая либо абсолютное время выполнения, либо время относительно текущего момента.
Ниже приведен список нескольких флагов, Которые используются с командой at:
Вы сможете выполнить команду at при соблюдении хотя бы одного из следующих условий:
Точное положение файлов at.allow и at.deny зависит от типа системы UNIX, с Которой вы работаете.
Команда at принимает время, день и относительные изменения в нескольких форматах. НеКоторые
форматы таковы:
р 1830 December 4
р 6:30 pm December 4
р 6:30 P December 4
р now + 2 hours
р tomorrow 1830
р 830 next week
р 1830 Tuesday next week
Примеры
Если вы хотите запланировать задание my Job на 11 часов вечера текущего дня, предполагая, что время сейчас 9:30 PM, выполните любую из следующих команд:
at 2300 my_job
at 23:00 my_job
at 11:00 pm my_job
at 2300 today my_job
Если текущее время 11:30 PM, то задания будут запланированы на 11:00 PM следующего дня. Для планирования roy_Job на 6 часов позднее текущего времени выполните следующую команду:
at now + 6 hours my_j ob
Для планирования my_job на 6:30 следующей недели выполните следующую команду:
at 6:30 pm next week my_job
В предыдущем примере, если сегодня Thursday (четверг) и текущее время 5:30 PM, то myJob будет запланировано на 6:30 PM следующей Friday (пятницы).
Для распечатки запланированных заданий используйте флаг -1, как в следующей команде:
at -1
testuser.850519800.a Fri Dec 13 18:30:00 1996
testuser.849858400.a Fri Dec 6 02:46:40 1996
Для удаления задания используйте флаг -r, как в следующей команде:
at -r testuser.850519800.а
at file: testuser.850519800.a deleted
atq
Команда atq используется для вывода списка заданий, запланированных к исполнению на более позднее время. Задания отображаются в порядке запланированного времени исполнения, с ранее запланированными заданиями.
Ниже представлен список флагов, Которые можно использовать с командой atq:
р -с для вывода списка заданий в порядке выполнения команды at для планирования каждого из заданий.
р -n для вывода числа запланированных заданий.
Примеры
Для вывода списка всех заданий, запланированных командой at, выполните следующую команду:
atq
testuser.849915000.a Fri Dec 6 18:30:00 1996
testuser.850519800.a Fri Dec 13 18:30:00 1996
Если вы хотите вывести список всех заданий, в соответствии с временем, когда была выполнена соответствующая команда at, а не когда предполагалось выполнение запланированного задания, то используйте флаг -с, как в следующей команде:
atq -с
testuser.850519800.a Fri Dec 13 18:30:00 1996
testuser.849915000.a Fri Dec 6 18:30:00 1996
Если вы хотите узнать количество запланированных в текущий момент заданий, то используйте флаг -n, как в следующей команде:
atq -n
2 files in the queue
crontab
Система UNIX оснащена демоном, Который выполняется все время и Который будет запускать задания в регулярно запланированные интервалы. В файле вы можете указать задания, Которые будет выполнять команда crontab, и демон Сгоn будет проверять его при инициализации или в том случае, когда файл пополняется или модифицируется.
Записи, Которые вы создаете в файле crontab, состоят из следующих полей (разделенных пробелами или символом табуляции):
Каждое из полей может иметь несколько дискретных значений, отделенных запятыми, или диапазон значений, или * (звездочка), означающую, что подходят все значения.
Далее следует список флагов, Которые можно использовать с командой crontab:
Примеры
Если вы хотите отображать строку Time to go for lunch (Время идти обедать) в 12:30 РМ каждого дня, создайте следующую запись:
30 12 * * * * echo "Time to go for lunch"
Если вы хотите выполнять my_job в пятницу в 4:00 каждую неделю, создайте следующую запись:
О 16 * * 5 my_job
Резервное копирование и восстановление
В данном разделе мы обсудим несколько команд, Которые можно использовать для управления файлами, то есть для резервного копирования файлов на различные носители, для восстановления файлов с различных носителей, для сжатия файлов с целью экономии дискового пространства, для распаковки файлов перед восстановлением и т.д.
compress
Команду compress можно использовать для сокращения размера файла. У файла, созданного командой compress, к имени добавляется буква Z. Сжатые файлы сохраняют атрибуты времени и права доступа исходного файла.
Далее идет список флагов, Которые можно использовать с командой compress:
Примеры
Для сжатия filel выполните следующую команду:
compress filel
Если вы хотите посмотреть на статистику сжатия, используйте флаг -v, как в следующей команде:
compress -v filel
filel: Compression: 50.85% - replaced with filel.2
cpio
Команда cpio используется для копирования файлов на архивный носитель с диска или для восстановления файла с архивного носителя на диск. Существует три главных формы команды cpio:
р cpio -о для считывания путей из стандартного ввода и копировании их в стандартный вывод.
р cpio -i для чтения из стандартного ввода архивных файлов и создания дисковых файлов.
р cpio -р для чтения путей из стандартного ввода и копирования в указанный каталог.
Ниже идет список нескольких флагов, Которые можно использовать с командой cpio:
р а для модификации времени доступа скопированных файлов к текущему файлу.
р В для указания, что cpio должна осуществлять блок-ориентированный ввод/вывод.
р d для создания каталога, если указанный каталог не существует-
р f для копирования файлов, Которые не подходят под заданный шаблон.
р r для интерактивного копирования файлов с возможностью модифицировать имя файла.
р t для создания списка файлов без действительного копирования файлов.
р u для перезаписи файла, если он уже существует.
р v для вывода списка скопированных файлов.
Примеры
Если у вас есть список файлов, Которые вы хотите скопировать на гибкий диск, то выполните следующую команду:
ls *. txt | cpio -ov > /dev/fd0
filel.txt
file2.txt
55 blocks
Теперь, если вы хотите распечатать файлы на гибком диске, используйте флаги t и v, как в следующей команде:
cpio -itv < /dev/fd0
100644 testuser 13771 Dec 07 00:13:38 1996 filel.txt
100644 testuser 13947 Dec 07 00:13:30 1996 file2.txt
55 blocks
Приведенный выше пример будет копировать все файлы с расширением .txt и отображать имена скопированных файлов.
Если вы хотите скопировать файлы с гибкого диска и переименовать их во время копирования, используйте флаг г, как в следующей команде:
cpio -ir "*.txt" < у
Rename <filel.txt>
file3.txt
Rename <file2 * txt>
file4.txt
55 blocks
В приведенном примере filel.txt будет переименован в file3.txt и file2.txt будет переименован в file4.txt. Если вы хотите скопировать все файлы из текущего каталога, а также все файлы из подкаталогов, то используйте флаг -р. Дополнительно можно задействовать флаг d, чтобы были созданы все нужные каталоги. Команду можно выполнить следующим образом:
find . -print | cpio -pd /u/testuser/cpiodir
dd
Команда dd используется для чтения данных из стандартного ввода и копирования их в стандартный вывод после преобразования данных в соответствии с указанными параметрами преобразования. Наряду с преобразованием данных можно модифицировать физические атрибуты, такие как размер блока.
Далее следует список флагов, Которые можно использовать с командой dd:
Примеры
Если у вас есть файл, записанный в системе, Которая хранит данные в коде EBCDIC, и данные необходимо преобразовать в ASCII, выполните следующую команду:
dd if=filel ofрfile2 conv=ascii
Данная команда будет читать filel, преобразовывать каждый символ данного файла в ASCII и копировать его в file2.
Если вы хотите скопировать filel с диска на ленту с размером блока 1024, используйте следующую команду:
dd if=filel of=/dev/rmt0 bs=1024 conv=sybc
Если вы хотите скопировать третий файл на ленте в файл под названием filel, используйте следующую команду:
dd if=/dev/rmt0 fskip=2 of=filel
Если вы хотите напечатать памятную записку (мемо) прописными буквами, используйте следующую команду, преобразующую filel в file2 и печатающую file2:
dd if-filel of=file2 conv=ucase
lp -dmain_J3rinter fiie2
pack
Если вы хотите сэкономить пространство, используйте команду pack, Которая сжимает файл подобно тому, как это делает команда compress. Команда pack сжимает файл и генерирует новый файл с расширением ,z.
Исходный файл удаляется. Количество сэкономленного пространства зависит от
содержимого файла. Обычно, для текстовых файлов получается от 30 до 50 процентов
сжатия. По умолчанию команда pack
не выполняет сжатие, если не может уменьшить размер файла.
Далее следует список флагов, Которые можно использовать с командой pack:
Примеры
Если у вас есть файл под названием filel и его необходимо сжать, используйте следующую команду:
pack filel
pack: filel: 41.7%
Compression
Если нужна более подробная информация о процессе сжатия, используйте знак - (перенос), как в следующей команде:
pack - filel
pack: filel: 41.7% Compression
from 28160 to 16404 bytes
Huffman tree has 15 levels below root
102 distinct bytes in input
dictionary overhead ss 124 bytes
effective entropy ss 4,66 bits/byte
asymptotic entropy = 4. 62 bits/byte
В неКоторых случаях pack не может сжать файл, и вы получите сообщение об ошибке, как в следующей команде:
pack filel
pack: filel: no savint
- file unchanged
В таком случае для форсированного сжатия используйте флаг -f, как в следующей команде:
pack -f filel
pack: filel: 40.8% Compression
pcat
Команда peat используется для распаковки файлов в стандартный вывод. Данная команда не работает с какими бы то ни было флагами.
Примеры
Если вы хотите распаковать файл под названием filel.z, Который ранее был создан командой pack, то используйте следующую команду:
pcat filel
Можно также и
pcat filel.z
tar
Команда tar используется для копирования файлов с диска на архивный носитель (обычно ленту) или наоборот. Команда tar не обеспечивает какого-либо восстановления после ошибок на лепте. Ниже следует список флагов, Которые можно использовать с командой tar:
Примеры
Если вы хотите извлечь все файлы в каталоге /u/testuser из архивного файла на лентопротяжном устройстве /dev/rmt1, используйте следующую команду:
tar -xvf /dev/rmtl /u/testuser
Если вы хотите архивировать файл в архив на ленточном накопителе по умолчанию, используйте следующую команду:
tar -с filel
uncompress
Команда uncompress используется для распаковки файла, Который ранее бьш сжат командой compress. По умолчанию команда uncompress распаковывает файл на месте, то есть, сжатый файл удаляется и на его месте создается распакованный файл без расширения .z. Распакованный файл сохраняет атрибуты прав доступа и времени модификации сжатого файла, но владелец и группа файла меняются на пользователя и группу несжатого файла.
Ниже следует список нескольких флагов, Которые используются с командой uncompress:
Примеры
Если вы хотите распаковать filel.Z, используйте одну из двух следующих команд:
uncompress filel
ИЛИ
uncompress filel.Z
Если вы хотите распаковать filel.Z в стандартный вывод, сохраняя исходный сжатый файл, используйте флаг -с, как в следующей команде:
uncompress -с filel
unpack
Команда unpack используется для распаковки файлов, Которые были сжаты командой pack и Которые имеют расширение .z. Несжатый файл создается на том же самом месте, что и сжатый файл, а сжатый файл удаляется. Распакованный файл сохраняет такие атрибуты, как владелец, группа, код доступа, время доступа и модификации сжатого файла. Команда unpack не распаковывает файл, если файл с заданным именем уже существует.
Если вы хотите распаковать filel.z, используйте любую из следующих команд:
unpack filel
ИЛИ
unpack filel.z
zcat
Команда zcat используется для распаковки файла (Который был упакован командой compress) в стандартный вывод, с сохранением сжатого файла. Вы можете перенаправить стандартный вывод в другой файл для получения распакованной версии сжатого файла. Данная команда работает точно так же, как команда uncompress с флагом -с.
Примеры
Если необходимо создать копию распакованной версии файла, не разрушая при этом сжатый файл, используйте следующую команду:
zcat filel.Z > file2
Приведенная команда создаст file2, являющийся распакованной версией filel.Z, и при этом будет сохранен filel.Z.
Команды состояния
В данном разделе мы обсудим несколько команд, Которые отображают состояние различных частей системы. Команды используются для отслеживания состояния системы в любой момент времени.
date
Команда date нужна для отображения текущей даты и времени в указанном формате. Если вы являетесь привилегированным пользователем, используйте команду date для установки системной даты.
Для отображения даты и времени следует указать знак + (плюс) с последующим форматом. Формат может быть одним из следующего:
Примеры
Если вы хотите отобразить дату без форматирования, то используйте команду date без какого-либо дескриптора форматирования, как в следующем примере:
date
Sat Dec 7 11:50:59 EST 1996
Если необходимо отобразить только дату в формате mm/dd/yy, то используйте следующие команды:
date +%m/%d/%y
12/07/96
Если необходимо отобразить дату в формате yy/mm/dd и время в формате hh:mm:ss, используйте следующую команду:
date +%y/W%d/ %H:%M:%S"
96/12/07 11:57:27
Ниже приведен еще один способ форматирования даты:
date +%A","%B","%d", "%У
Sunday, December 15/ 1996
Если необходима юлианская дата, используйте следующую команду:
date +%j
350
Если вы хотите узнать номер недели для текущей недели, то есть две возможности, W и U, как показано в следующих командах:
date +%W
49
date +%U
50
env
Команду env можно использовать для отображения текущей среды или изменения одной или нескольких переменных среды и выполнения указанной команды. Изменения будут действительны только в течение выполнения команды.
Ниже приведен необязательный флаг, Который можно использовать с командой env:
р -i для указания на то, что для указанной команды используются только переменные, установленные как часть команды env. Все остальные текущие установки переменных игнорируются.
Примеры
Если необходимо отобразить текущую среду, используйте следующую команду:
env
Предположим, что есть сценарий под названием my_job, Который отображает текущую установку переменной под названием LANG.
Если выполнить сценарий myjob как часть команды env без модификации переменной LANG, то вы получите следующий результат:
env PATH=/u/testuser/jobs:$PATH my_job
LANG = С
Если модифицировать переменную LANG как часть команды env, то получится следующий результат:
env LANG=C++ PATH=/u/testuser/jobs:$PATH my_job
LANG - C++
Если использовать флаг -i и не модифицировать LANG как часть команды env, то переменная не будет доступна my_Job и вы получите следующий результат:
env -i PATN=/u/testuser/job3:$PATH my_job
LANG =
iostat
Команда iostat используется для получения статистики о процессоре, дисках и TTY в системе. Первый раз, когда вы выполните iostat после самой последней загрузки системы, iostat выведет статистику с момента загрузки. Затем iostat обеспечивает статистику с момента последнего выполнения iostat.
Команда iostat отображает следующие детали:
р Заголовок ЦПУ и TTY
р Детали статистики ЦПУ и TTY
р Заголовок физического тома
р Одну строку для каждого физического тома
Ниже следует перечень элементов данных, отображаемых для TTY и ЦПУ:
р tin отображает число символов, считанных системой для всех TTY.
р tout отображает число символов, записанных системой для всех TTY.
р %user отображает процент использования ЦПУ на уровне приложения.
р %system отображает процент использования ЦПУ на уровне системы.
р %и11е отображает процент использования ЦПУ в момент простоя (число представляет неиспользованное время ЦПУ).
р %iowatt отображает процент простоя ЦПУ при ожидании выполнения запросов на ввод/вывод.
Далее приведен список элементов данных, отображаемых как часть информации по использованию физического тома:
- -d для отображения только отчета об использовании физического тома. Флаг нельзя использовать с флагом -t.
р -t для отображения только отчета об использовании ЦПУ и TTY. Нельзя использовать вместе с флагом -d.
Примеры
Если необходимо отобразить данные только об использовании TTY и ЦПУ, используйте флаг -t, как в следующей команде:
iostat -t
tty: tin tout cpu: % user % sys % idle % iowait
0.5 78.7 32.6 25.2 35.7 6.4
Если нужно знать данные только о физическом томе diski, используйте флаг -d, как в следующей команде:
iostat -d diski
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
diaki 6.7 4.3 5.0 2339721 4048758
sar
Команду sar можно использовать для отчета о системной информации. Команда sar позволяет сохранять информацию и сообщать о ней. По умолчанию команда sar генерирует отчеты об использовании ЦПУ. Однако можно использовать различные флаги для сбора и другой информации о системной активности.
Ниже приведен список нескольких флагов, Которые применимы с командой sar:
uname
Команда uname отображает детали об операционной системе в компьютере стандартный вывод. Для установки имени системы можно использовать определенные флаги.
Ниже приведен перечень флагов, Которые применяются с командой uname:
Примеры
Если нужно отобразить детали об аппаратном обеспечении и операционной системе, можно использовать флаг -а, как в следующей команде:
uname -а
AIX main_system 2 3 000010000526
В приведенном примере отображена следующая информация:
- Имя операционной системы aix
- Наименование машины main_system
- Номер релиза операционной системы 2
- Номер версии операционной системы 3
- Машина ооооюооо52б
uptime
Команда uptime отображает следующую информацию:
vmstat
Команда vmstat может использоваться для получения информации о процессах, виртуальной памяти, физических томах и активности ЦПУ. Информация включает сведения об использовании ЦПУ, виртуальной памяти и физических томов и применяется для отслеживания загрузки системы.
Первый вызов vmstat отображает статистику с момента старта системы. Последующие вызовы vmstat отображают статистику с момента последнего обращения к vmstat. Для управления номером генерируемого отчета и интервалом времени между отчетами вы можете установить параметры счетчика и интервала.
vmstat выводит статистику по следующим компонентам и деятельности системы:
Сведения по процессам таковы:
- avm отображает число использованных страниц (страниц из страничного пространства).
р fre отображает число страниц в списке свободных.
Сведения по страницам памяти таковы:
Можно указать до четырех имен физических томов для получения количества перемещения данных, Которые осуществляются на данных дисках в определенный интервал времени.
Ниже приведен флаг, Который можно использовать с командой vmstat:
р -s для отображения статистики с момента инициализации системы.
Примеры
Если вы хотите отобразить статистику за пять временных интервалов по пять секунд, выполните следующую команду:
vmstat 5 5
procs memory page faults cpu
r b avm fre re pi ро fr sr cy in sy cs us sy id wa
1 0 44036 120 О О О 125 275 0 366 1458 391 33 25 36 6
1 0 44036 120 0 0 0 542 938 0 446 4932 246 65 24 0 12
1 0 44036 121 0 0 0 624 1116 0 453 5848 259 64 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 для редактирования одного или нескольких файлов.
Далее следует список флагов, Которые можно использовать с командой ех:
После входа в редактор ех следующие подкоманды можно использовать для перемещения по файлу и редактирования:
Редактор ех работает в следующих режимах:
fmt
Команда fmt применяется для форматирования файлов в 72-х символьные строки по умолчанию. Команда fmt сохраняет пустые строки во вводном файле и сохраняет пространство между словами. Вы можете модифицировать длину строк, используя флаг -Width.
Примеры
Предположим, что у нас есть filel со следующим содержимым:
more filel
This is a test file for fmt
The fmt, command formats a file
for mail command
Обратите внимание на пустую строку и пробелы между command и format в третьей строке. Отформатируем filel, используя команду fint для создания file2, как в следующей команде:
fmt filel > file2
Теперь посмотрим на содержимое file2 с помощью команды more:
more file2
This is a test file for fmt
The fmt command formats a file for mail command
В файле сохранилась и пустая строка, и пробелы между словами.
fold
Команда fold используется для генерации нескольких строк из одной строки разделением строки в указанной позиции. По умолчанию длина строки составляет 80 байтов. Символ перехода к новой строке вставляется в конец строки.
Далее следует список флагов, Которые используются с командой fold:
Примеры
Предположим, что у нас есть filel содержащий одну строку из 129 символов, Которая показана ниже:
more filel
The fold command can be used on files which have line lengths more than 80 bytes
, it breaks the line into multiple 80 byte lines
Если вы хотите разделить строку на байте в позиции 40, то используйте следующую команду:
fold -w 40 filel > file2; more file2
The fold command can be used on files wh
ich have line lengths more than 80 bytes
, it breaks the line into multiple 80 by
te lines
В приведенном примере разделение произошло по средине слов. Если вы не хотите рассекать слова, то укажите флаг -s, как в следующей команде:
fold -w 40 -з filel > file2; more file2
The fold command can be used on files
which have line lengths more than 80
bytes, it breaks the line into multiple
80 byte lines
join
Команда join применяется для слияния двух файлов (один может быть стандартным вводом) с целью создания третьего файла (может быть стандартным выводом). При создании выходного файла каждая строка, Которая имеет одинаковое значение в обоих вводных файлах сливается со строкой в базовом файле. Поля в каждом файле разделяются либо пробелом, либо символом табуляции.
Ниже приведен список флагов, Которые можно использовать с командой join:
Примеры
Предположим, что есть два файла, П1е1 и П1е2, чье содержимое показано ниже:
more filel
computeri 16MB 1.2GB 17inch CDROM
computer2 8MB 840MB 14inch
computer3 12MB 1.6GB 17inch
computer4 4MB 270MB 14inch
more file2
computeri Istfloor office5
computer3 2ndfloor office9A
computer4 Istfloor office2
computer5 3rdfloor officel
Если вы хотите соединить два файла и отобразить только совпадающие строки, выполните следующую команду:
join filel file2
computeri 16MB 1.2GB 17inch CDROM Istfloor office5
computers 12MB 1.6GB 17inch 2ndfloor office9A
computer4 4MB 270MB 14inch CDROM Istfloor office2
Если вы хотите соединить два файла и отобразить как совпадающие, так и не совпадающие строки из указанного файла, используйте флаг -а, как в следующей команде:
join -al filel file2
computeri 16MB 1.2GB 17inch CDROM Istfloor office5
computer2 8MB 840МВ 14inch
computer3 12MB 1.6GB 17inch 2ndfloor office9A
computer4 4MB 270MB 14inch CDROM Istfioor office2
Приведенный выше пример отображает строку с computer2 из filel поскольку она не имеет соответствующей строки в НХе2. Если вы хотите отобразить только строки, Которые не совпадают со строками из указанного файла, используйте флаг -y, как в следующей команде:
join -v2 filel file2
computers 3rdfloor officel
Приведенный выше пример отображает строку с computer5 из file2, поскольку у нее нет совпадающей строки в file1.
Если в файле вывода вы хотите отобразить только определенные поля из файлов ввода, используйте флаг -о, как в следующей команде:
join -о 1.1 2.2 2.3 1.5 filel file2
computeri Istfloor office5 CDROM
cemput^r-^ 2ridfl oor office9A
computer4 Istfloor office2 CDROM
В приведенном выше примере строка с computer3 отображается на одно поле короче, поскольку данное поле не присутствует во вводном файле. В пустое поле в выводном файле, используя флаг -е, можно вставить фиксированную легенду, как в следующей команде:
join -о 1.1 2.2 2.3 1.5 -e"NO CDROM" filel file2
computeri Istfloor office5 CDROM
computer3 2ndfloor office9A NO CDROM
computer4 Istfloor office2 NO CDROM
paste
Команда paste применяется для вставки строк из одного или нескольких файлов (один из них может быть стандартным вводом) в стандартный вывод, Который можно перенаправить в файл. Команда paste соединяет (конкатенирует) строки из каждого вводного файла в выводной файл, разделяя их символом табуляции (по умолчанию).
Ниже приведен список флагов, Которые используются с командой paste:
Примеры
Предположим, что есть два файла, filel и file2, содержимое Которых показано ниже:
more filel
computeri 16MB 1.2GB 17inch CDROM
computer2 8MB 840MB 14inch
computer3 12MB 1.6GB 17inch
computer4 4MB 270MB 14inch
more file2
computeri Istfloor offices
computers 2ndfloor off ice9A
computer4 Istfloor office2
computers 3rdfioor officel
Если вы хотите слить filel и file2, то используйте следующую команду:
paste filel file2
computeri 16MB 1.2GB 17inch CDROM computeri Istfloor offices
computer2 8MB 840MB 14inch computer3 2ndfloor off ice9A
computer3 12MB 1.6GB 17inch computer4 Istfloor office2
computer4 4MB 270MB 14inch computers 3rdfioor officel
Строки из filel и file2 разделяются символами табуляции. Если разделитель по умолчанию, символ табуляции, вы хотите заменить скажем на слэш (/), то используйте флаг -d, как в следующей команде:
paste -d"/" filel file2
computeri 16MB 1.2GB 17inch CDROM/computeri Istfloor offices
computer2 8MB 840MB 14inch/computer3 2ndfloor office9A
computer3 12MB 1.6GB 17inch/computer4 Istfloor office2
computer4 4MB 270MB 14inch /computers 3rdfioor officel
Если вы хотите слить строки из каждого вводного файла, используйте флаг -s, как в следующей команде:
paste -d"/" -s filel file2
computeri 16MB 1.2GB 17inch CDROM/computer2 8MB 840MB 14inch/computer3 12MB 1. 6G
В 17inch/computer4 4MB 270MB 14inch
computeri Istfloor officeS/computer3 2ndfloor office9A/computer4 Istfloor office
2/computers 3rdfioor officel
sort
Команда sort применяется для сортировки одного или более файлов в указанном порядке по указанному ключу. Команду sort можно использовать также и для слияния отсортированных файлов. Когда используется более чем один файл, команда sort конкатенирует данные файлы перед сортировкой в соответствии
с указаниями.
Далее приведен перечень неКоторых флагов, с Которыми работает команда sort:
Примеры
Предположим, что у нас есть файл под названием filel, содержимое Которого показано ниже:
more filel
disk drive
memory
video memory
monitor
[tape drive]
CD-ROM
3.5inch diskette
modem
monitor
sound blaster
Если вы хотите отсортировать filel, то используйте следующую команду:
sort filel
3.5inch diskette
CD-ROM
[tape drive]
disk drive
memory
modem
monitor
monitor
sound blaster
video memory
Если вы хотите отсортировать в обратном порядке, то используйте флаг -r как, в следующей команде:
sort -r filel
video memory
sound blaster
monitor
monitor
modem
memory
disk drive
[tape drive]
CD-ROM
3.5inch diskette
Если вы хотите отсортировать в соответствии с алфавитом, используйте флаг -d, как в следующей команде:
sort -d fiiel
3.5inch diskette
CD-ROM
disk drive
memory
modem
monitor
monitor
sound blaster
[tape drive]
video memory
В примере выше строка [tape drive] сортируется как tape drive поскольку [ и ] игнорируются из-за флага -d. Если вы хотите, чтобы повторялась только одна строка, когда одинаково отсортировались несколькострок, используйте флаг -u, как в следующей команде:
sort -u filel
3.5inch diskette
CD-ROM
[tape drive]
disk drive
memory
modem
monitor
sound blaster
video memory
В примере выше строка monitor появляется только один раз, хотя в файле таких записей две. Причиной является указание флага -d.
Если вы хотите отсортировать в соответствии с прописными символами, используйте флаг -f, как в следующей команде:
sort -f filel
3.5inch diskette
CD-ROM
disk drive
memory
modem
monitor
monitor
sound blaster
video memory
[tape drive]
tr
Команду tr можно использовать для трансляции или удаления символов из стандартного ввода при генерации стандартного вывода. Ниже приведено детальное описание основных функций команды tr.
Далее приведен список нескольких флагов, Которые можно использовать с командой tr:
р -с для трансляции всех символов, кроме указанных, в новый символ.
р -d для удаления указанных символов.
р -s для удаления всех, кроме первого появления указанных символов.
Вы можете указывать вводную и выводную последовательность символов определенным способом:
Примеры
Предположим, что у нас есть файл filе1, содержимое Которого показано ниже:
more filel
"this is a test file
fur tr command-
"it has 4 lines
but should be 1 line"
Если вы хотите заменить двойные кавычки на пробелы, воспользуйтесь следующей командой:
tr 'У * ' < filel
this is a test file
for tr command
it has 4 lines
but should be 1 line
Для замены строчных букв на прописные используйте следующую команду:
tr [ilowers] [: upper:] < filel
"THIS IS A TEST FILE
FOR TR COMMAND"
"IT HAS 4 LINES
BUT SHOULD BE 1 LINE"
Если необходимо удалить из файла все символы новой строки, используйте флаг -d, как в следующей
команде:
tr -d 'Vn' < filel
"this is a test file for tr command""!! has 4 lines but should be 1 line"
Если вы хотите удалить все появления пробела, за исключением первого и заменить пробел знаком переноса (-), используйте флаг -s, как в следующей команде:
tr -s * ' >-1 < filel
"this-is-a-test-file-
for-tr-command"
"it-has-4-lines-
but-should-be-1-line"
uniq
Команду uniq можно использовать для устранения дубликатов смежных строк в файле или в стандартном выводе при генерации стандартного вывода или другого файла. Таково действие по умолчанию. Однако для сравнения можно использовать только одну часть строки. При этом задействуются определенные флаги.
Ниже следует список флагов, Которые работают с командой uniq:
Примеры
Предположим, что у нас есть filel, содержимое Которого представлено ниже:
more filel
This is line 1
This is line 1
This is line 2
This is line 3
THIS IS line 3
This is line 4
Если необходимо найти в filel уникальные строки, используйте следующую команду:
uniq filel
This is line 1
This is line 2
This is line 3
THIS IS line 3
This is line 4
В примере выше первая строка пропущена, поскольку она идентична второй строке. Если вы хотите отображать только дублирующиеся строки, используйте флаг -d, как в следующей команде:
uniq -d filel
This is line 1
Если вы хотите отобразить строки, Которые появляются в файле filel только один раз, используйте флаг -u, как в следующей команде:
uniq -и filel
This is line 2
This is line 3
THIS IS line 3
This is line 4
В приведенном примере первые две строки не были отображены, поскольку они идентичны. Если вы хотите пропустить первые два поля при сравнении смежных строк, то используйте флаг -f, как в следующей команде:
uniq -f 2 filel
This is line 1
This is line 2
This is line 3
This is 1ine 4
sed
Вы можете использовать команду sed для редактирования файла с применением сценария.
В сценарии указываются команды для редактирования одной или нескольких строк в соответствии с правилами, специфицированными как часть одной или нескольких команд.
Ниже следует перечень нескольких флагов, Которые можно использовать с командой sed:
Команда sed во время редактирования использует две разных области:
Подкоманды sed могут влиять как на все строки, так и только на указанные.
Далее перечислены несколько подкоманд, Которые можно использовать с командой sed:
Приведенные выше подкоманды влияют на область шаблона (pattern area), используемого командой sed. Давайте рассмотрим несколько команд, Которые влияют на область временного хранения (hold area):
- [address I][,address2]g для копирования содержимого hold area в pattern area. После этого содержимое hold area становится новым содержимым pattern area.
Примеры
Предположим, что у нас есть filel, содержимое Которого отображено ниже:
more filel
This file is a test file for sed command
The sed command is used for stream editing files
The sed command a number of sub-commands which may be used to do the editing in specified line
Если вы хотите печатать номера строк, в Которых найден указанный шаблон, используйте следующую команду:
sed -е "/sed/-" filel
1
This file is a test file for sed command
3
The sed command is used for stream editing files
5
The sed command a number of sub-commands which may be used to do the
editing in specified line
В примере выше номера отображаются для строк, содержащих шаблон sed. Если хотите добавить задан-
ный текст после каждой указанной строки, используйте следующую команду:
sed -f sfile filel
This file is a test file for sed command
+++++++++++++++++++++++++++++++++
The sed command is used for stream editing files
+++++++++++++++++++++++++++++++++
The sed command a number of sub-commands which may be used to do the
+++++++++++++++++++++++++++++++++
editing in specified line
где файл sfile содержит строку:
/sed/a\
+++++++++++++++++++++++++++
В примере строка +s (знаки плюс) печатается после каждой строки, содержащей sed. Если вы хотите удалить строки, содержащие указанный шаблон, выполните
sed -f sfile filel
This file is a test file for sed command
The sed command is used for stream editing files
The sed command a number of sub-commands which may be used to do the
editing in specified line
где sfile содержит:
/-/d
В приведенном выше примере все строки, Которые содержат -, будут удалены. Если вы хотите заменить вес появления конкретной строки на другую строку, выполните:
sed -f sfile filel
This file is a test file for sed command
++++++++++++++++++++++++++++++++++++++++
The sed command is used for stream editing files
The sed command a number of sub-commands which may be used to do the
editing in specified line
где sfile содержит следующее:
1,3a/--/+++++/g
В примере выше все появления -- заменяются на +++++ для строк с 1 по 3. Если вы хотите вставить указанную строку перед каждой строкой, содержащей заданный шаблон, выполните
aed -f afile filel
++++
This file ia a test file for sed commdnd
++++
The sed command is used for stream editing files
++++
The sed command a nuznber of sub-commands which may be used to do the
editing in specified line
где sfile содержит следующее:
/sed/i\
++++
В примере выше строка +4-+++ печатается перед каждой строкой, в Которой есть шаблон sed. Если вы хотите заменить каждое появление одного символа на другой, используйте
sed -f sfile filel
This file is A test file for sed commAnd
++++++++++++++++++++++++++++++++++++++++
The sed commAnd is used for streAm editing files
The sed command a number of sub-commands which may be used to do the
editing in specified line
где sfile содержит следующее:
1,3s/-/+/g
В примере каждое появление - (переноса) модифицируется на + (плюс) и каждое появление а модифицируется на А. Замена выполняется для строк с 1 по 3 включительно. Если вы хотите удалить все строки, за исключением тех, в Которых встречается указанный шаблон, выполните:
sed -f sfile filel
This file is a test file for sed command
The sed command is used for stream editing files
The sed command a number of sub-commands which may be used to do the
где sfile содержит следующее:
/sed/!d
В приведенном выше примере ! (восклицательный знак) используется для обозначения того, что будут обрабатываться все строки, за исключением тех, Которые содержат sed.
Различные команды
В данном разделе обсуждаются несколько команд, выполняющих в UNIX разные функции.
banner
Команда banner печатает один или несколько символов увеличенного размера.
Пример
Если вы хотите вывести слово banner в стандартный вывод большими буквами, выполните следующую команду:
banner banner
be
Если вы хотите выполнить в UNIX простые арифметические действия, воспользуйтесь командой be. По умолчанию
все числа воспринимаются как десятичные, но можно выполнять и восьмеричные
и шестнадцатеричные операции. Десятичные числа можно масштабировать. Команда be принимает ввод из указанно-
го файла, за Которым следует стандартный ввод. Однако можно выполнить операцию перенаправления так, чтобы принимать ввод только из файла.
Аргументы, Которые можно использовать с командой be таковы:
р Имя переменной (один символ)
р Имя массива переменных (символ[выражение])
р Литерал, например, scale
НеКоторые допустимые операнды таковы:
С командой be можно также использовать операторы, подобные тем, что применяются в операторах, выражениях и функциях С. Вот несколько специальных функций, Которые можно использовать с командой be:
Примеры
Предположим, что есть файл filel, содержащий следующие параметры:
more filel
b=5
с=10
a-b+c
а
Если вы хотите откомпилировать содержимое filel, не выполняя его, воспользуйтесь флагом -с, как в следующей команде:
be -с < filel
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 в текущем каталоге. Сообщения хранятся в виде
В пятницу команда calendar отобразит сообщения для четырех дней -- пятницы, субботы, воскресенья и понедельника.
clear
Команда clear применяется для очистки экрана вашей рабочей станции. Данная команда проверяет тип терминала, для того чтобы определить, как чистить экран.
Примеры
Для очистки экрана терминала выполните следующую команду:
clear
time
Команда time используется для получения времени выполнения сценария, команды или программы. Время выполнения отображается в следующих видах:
Примеры
Если необходимо определить время выполнения сценария sample, воспользуйтесь следующей командой:
time sample
real Om6.49s
user OmO.OSs
sys Om0.03s
xargs
Команда xargs группирует несколько аргументов и вводит их в команду, xargs передает столько аргументов, сколько необходимо для гарантии, что ограничение на максимальный размер аргументов командной строки не будет превышено.
Далее следует перечень неКоторых флагов, Которые используются с командой xargs:
Примеры
Предположим, что есть файл xfile, содержимое Которого показано ниже:
more xfile
filel file2 file3
file4 file5 file6
file7 fileB file9
Если вы хотите передать команде Is только два аргумента, используйте флаг -п, как в следующей команде:
xargs -n2 ls < xfile
filel file2
file3 file4
file5 file6
file7 file8
file9
Если вы хотите передать команде ls одновременно две строки, используйте флаг -l, как в следующей команде:
xargs -12 ls < xfile
filel file2 file3 file4 file5 file6
file7 file8 file9
Если вы хотите подтвердить необходимость выполнения команды перед реальным выполнением, используйте флаг -р, как в следующей команде:
xargs -12 -p ls < xfile
sfileirile2 file3 file4 files file6 ?...y
filel fiie2 file3 file4 file5 fiie6
Is file7 fileB file9 ?...y
file7 file8 file9
В приведенном выше примере необходимо использовать букву у для подтверждения необходимости выполнения команды. Если вы хотите переименовать все фяйльт, начинающиеся с file (от filel до file9), используйте флаг -i, как в следующей команде:
1s file* ! xargs -t -i cp {} O.old
ср filel filel.old
cp file2 file2.old
cp file3 file3.old
cp file4 file4.old
cp file5 file5.old
cp file6 file6.old
cp file7 file7.old
cp file8 file8.old
cp file9 file9.old
В приведенном примере флаг -t заставляет отображаться сконструированную команду в стандартный вывод ошибок.
Регулярные выражения
Регулярные выражения в UNIX представляют собой строки из одного или нескольких символов и метасимволов. Команды, Которые принимают регулярные выражения, прежде всего должны раскрыть их так, чтобы получить определенную подстроку, и лишь затем сравнивать со вводом. Сравнение выполняется посимвольно.
ПРЕДОСТЕРЕЖЕНИЕ регулярное выражение выглядит как шаблон имени файлов, используемый а неКоторых командах, таких как find. Однако регулярное выражение - это не то же самое, что шаблон имени файлов. |
Регулярное выражение содержит следующее:
Набор символов
Набор символов представляет собой список из одного или нескольких символов. Набор символов можно задать следующим образом:
Указатель позиции
UNIX предлагает несколько специальных символов для указания определенных позиций в строке. Ниже следует список специальных символов:
Мета-символы
Мета-символ представляет собой символ, Который при использовании в регулярном выражении имеет специальное значение. Ниже приведен список мета-символов:
Примеры
Предположим, что есть файл под названием filel, содержимое Которого показано ниже:
more filel
This is a test
THIS IS A TEST
This is really a test
Believe it, this is really a test
This is a test, better believe it
В простейшей форме в качестве регулярного выражения вы можете указать строку символов. Если хотите найти в filel строку really, используйте следующую команду:
grep really filel
This is really a test
Believe it, this is really a test
Если хотите найти строку THIS в начале строки, используйте символ ^ в начале регулярного выражения, как в следующей команде:
grep ^HIS filel
THIS IS A TEST
Если хотите найти слово it в конце строки, используйте символ $ (знак доллара) в конце регулярного выражения, как в следующей команде:
grep it$ fiiel
Thos is a test, better believe it
Если хотите найти и believe, и Believe, воспользуйтесь командой:
grep [Bb]elieve it, this is really a test
This is a test, better believe it
В приведенном примере [Bb] соответствует один символ, В или Ь. Если хотите найти символы, отличающиеся от указанных, используйте команду:
grep [T] [^h] filel
THIS IS A TEST
В примере выше [^h] соответствует все, отличное от h, a [ТЦ^п] соответствует все что угодно, что начинается с Т и сопровождается символом, отличным от h. Если необходимо найти любое шестисимвольное поле с предшествующим или последующим пробелом, выполните следующую команду:
grep " ...... " filel
This is really a test
Believe it, this is really a test
This is a test, better believe it
В приведенном примере выражение " ...... " будет совпадать со строкой, например really или better, с предшествующим и замыкающим пробелом. Если вы хотите модифицировать все строки, Которые начинаются с t и имеют t в конце и содержат два символа посредине, используйте следующую команду:
sed "s/\(t\р..\l/--/g" filel
This is a --
THIS IS A TEST
This is really a --
Believe i---his is really a --
This is a --, better believe it
В примере выше \(t\) сохраняет символ t и \1 использует t в указанной позиции. Если хотите найти один или несколько экземпляров регулярного выражения, используйте следующую команду:
egrep it+ filel
Believe it, this is really a test
This i5 a test, better believe it
В примере выше it+ приказывает egrep найти один или несколько экземпляров слова it. Если вы хотите ипрсдслигь, пившрясш! ли регулярное выражение указанное число раз, выполните такую команду:
egrep tt\{l,4\) filel
This is a test, tetter believe it
В примере выше подходящими считаются как минимум одно и как максимум четыре повторения букв tt. Если хотите модифицировать все символы, отличные от букв, используйте следующую команду:
sed "s/^a-zA-Z ]/;/g" filel
This is a test
this is A test
This is really a test
Believe it: this is really a test
This is a tost: bettor believe it
В приведенном выше примере все символы, отличные от a-z, A-Z и пробела, будут заменены двоеточием (:).
Выполнение команд
До сих пор вы изучили несколько способов выполнения команд. В данном разделе мы узнали о нескольких способах выполнения команд как изолированньис, так и в сочетании с другими командами.
UNIX по умолчанию принимает ввод из стандартного ввода, Которым является клавиатура, и отображает вывод в стандартный вывод, Которым является терминал. Однако вы можете использовать механизм перенаправления UNIX и перенаправить ввод из файла и вывод в файл.
Команду можно выполнять в фоновом режиме или в режиме переднего плана. Выполнить команду в фоновом режиме можно, указав знак & (амперсанд). Команду можно запустить в режиме переднего плана, а затем перевести ее в фон. Для этого приостановите выполнение нажатием Ctri-Z и переведите в фоновый режим командой bg.
Поскольку все команды UNIX принимают ввод из стандартного ввода и генерируют вывод в стандартный вывод, существует удобный способ передачи вывода одной команды к следующей с помощью символа канала | (pipe). Несколько команд можно связать каналами в конвейер.
Резюме
В данной главе вы изучили самые разные команды UNIX. Большинство из команд должно работать на разных системах UNIX в соответствии с приведенным описанием. Однако иногда данные команды или флаги могут вести себя чуть иначе. Ниже приведен перечень неКоторых работ, Которые вы можете выполнять с помощью команд UNIX: