русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Копирование


Дата добавления: 2015-07-09; просмотров: 634; Нарушение авторских прав


с помощью команды tee

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

 

Пример П2.1. Команда tee

 

$ tee ls1 ls2 ls3 ls4 > /dev/null < /bin/ls

 

$ sha256sum ls? /bin/ls 6fde6afddce5f6a05379b67d14073cd900ac7ab4a4c5280e54813e478dc45b3d ls1 6fde6afddce5f6a05379b67d14073cd900ac7ab4a4c5280e54813e478dc45b3d ls2 6fde6afddce5f6a05379b67d14073cd900ac7ab4a4c5280e54813e478dc45b3d ls3 6fde6afddce5f6a05379b67d14073cd900ac7ab4a4c5280e54813e478dc45b3d ls4 6fde6afddce5f6a05379b67d14073cd900ac7ab4a4c5280e54813e478dc45b3d /bin/ls

 

$ chmod u+x ls?

 

$ ./ls1 -Fl


 

total 592

-rwxr--r-- 1 user1 users 100584 Jan 31 20:05 ls1*

-rwxr--r-- 1 user1 users 100584 Jan 31 20:05 ls2*

-rwxr--r-- 1 user1 users 100584 Jan 31 20:05 ls3*

-rwxr--r-- 1 user1 users 100584 Jan 31 20:05 ls4*

 

В примере П2.1 команда tee получила четыре аргумента: ls1, ls2, ls3 и ls4. В эти файлы скопировано бинарное содержимое файла /bin/ls, которое по- ступило в стандартный поток ввода команды tee. Стандартный поток вывода этой команды был перенаправлен в файл устройства /dev/null для исключе- ния вывода бинарного содержимого на экран. Получившиеся бинарные фай- лы имеют одинаковое содержание и являются точными копиями файла

/bin/ls, что подтверждается проверкой дайджеста SHA256. Для проверки ра- ботоспособности файл ls1 сделан исполняемым. Его работа проверена по- следней командой примера.

 

Нумерация строк с помощью команды cat

Команда cat помимо того, что может объединять содержимое текстовых или бинарных файлов, выводя их в стандартный поток вывода, может еще нуме- ровать строки текстовых файлов. Для этого предназначены опции –b — ну- меровать непустые строки и –n — нумеровать строки подряд (пример П2.2).



 

Пример П2.2. Команда cat

 

$ cat -b /etc/issue

1 Welcome to openSUSE 11.2 "Emerald" - Kernel \r (\l).

 

$ cat -n /etc/issue

1 Welcome to openSUSE 11.2 "Emerald" - Kernel \r (\l). 2

 

В примере команда cat вывела содержимое одного и того же файла, содер- жащего пустые строки. При использовании опции –b пустые строки не были пронумерованы.

Пример П2.3 показывает, как можно получить нумерованный список файлов.


 

Пример П2.3. Нумерованный список файлов

 

$ ls *.gz | cat -n

1 fsck.txt.gz

2 ls.txt.gz

3 mkfs.txt.gz

4 mount.txt.gz

5 paste.txt.gz

6 ps.txt.gz

7 sfdisk.txt.gz

8 users.txt.gz

 

В примере П2.3 получен нумерованный список файлов с суффиксом .gz.

 

Нумерация строк с помощью команды nl

Команда nl обладает более широкими возможностями нумерации строк. На- пример, имеется возможность пронумеровать лишь строки, удовлетворяю- щие регулярному выражению. Пример П2.4 показывает, как можно пронуме- ровать только те строки, у которых перед первой точкой от начала строки стоит лишь два символа.

 

Пример П2.4. Нумерация строк, удовлетворяющих регулярному выражению

 

$ ls *.gz | nl -bp'^..\.' fsck.txt.gz

1 ls.txt.gz mkfs.txt.gz mount.txt.gz paste.txt.gz

2 ps.txt.gz sfdisk.txt.gz users.txt.gz

 

Опция –b команды nl устанавливает режим нумерации строк. Стиль p нуме- рации обозначает использование регулярного выражения.

 

Команда csplit

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


 

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

 

Пример П2.5. Деление текстового файла на части

 

$ cat sfdisk.txt

# sfdisk -l

 

Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track

Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

 

Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 1073- 1074- 27 Unknown
end: (c,h,s) expected (1023,254,63) found (1023,239,63)
/dev/sda2 1073+ 8854- 7782- 62501953+ 7 HPFS/NTFS
  start: (c,h,s) expected (1023,254,63) found (1023,239,63)
/dev/sda3 * 8855 85160565 5 Extended
/dev/sda4 - 0 0 Empty
/dev/sda5 ris 19083+ 374- 3004123+ 82 Linux swap / Sola-
/dev/sda6 8855+ 3656- 29366757 83 Linux
/dev/sda7 12511+ 6572- 52789558+ 83 Linux

 

$ csplit sfdisk.txt /sda[0-9]/ {*} 209

 

$ ls xx??

xx00 xx01 xx02 xx03 xx04 xx05 xx06 xx07

 

$ cat xx06

/dev/sda6 8855+ 12510 3656- 29366757 83 Linux


 

В примере П2.5 выведено содержимое текстового файла sfdisk.txt, содержа- щего пример работы команды sfdisk –l. Этот файл был разделен на части с помощью команды csplit. Она разделила файл на столько частей, сколько встретилась искомая строка, удовлетворяющая регулярному выражению sda[0-9]. В результате образовались файлы xx00, ..., xx07, содержимое пред- последнего файла показано.

 

Команда sed

Потоковый редактор sed позволяет выполнять довольно сложное неинтерак- тивное редактирование текста. В документации на sed приведено множество полезных примеров применения sed (см. info sed). В примере П2.6 показа- но, как с помощью sed инвертировать порядок следования строк файла.

 

Пример П2.6. Инвертирование порядка строк файла с помощью команды sed

 

$ cat ldd.txt

linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb767b000)

/lib/ld-linux.so.2 (0xb7813000)

 

$ sed -n -e '1! G' -e '$ p' -e 'h' ldd.txt

/lib/ld-linux.so.2 (0xb7813000) libc.so.6 => /lib/libc.so.6 (0xb767b000) linux-gate.so.1 => (0xffffe000)

 

Команда tac

То же самое, но проще, можно сделать командой tac — она выводит содер- жимое файла в обратном порядке (пример П2.7).

 

Пример П2.7. Инвертирование порядка строк файла с помощью команды tac

 

$ cat ldd.txt

linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb767b000)

/lib/ld-linux.so.2 (0xb7813000)

 

$ tac ldd.txt

/lib/ld-linux.so.2 (0xb7813000) libc.so.6 => /lib/libc.so.6 (0xb767b000) linux-gate.so.1 => (0xffffe000)


 

Команда awk

Приведенная в примере П2.8 команда сделает копии файлов с суффиксом .txt

так, что имена копий до суффикса сохранятся, а суффикс будет заменен на

.html. Например, файл index.txt будет скопирован в файл index.html.

 

Пример П2.8. Команда awk

 

$ ls *.txt | awk –F. '{print "cp",$0,$1".html"}' | bash

$ ls

index.html index.txt

 

Команда awk имеет встроенную функцию printf, позволяющую осуществ- лять форматированный вывод аналогично одноименной функции стандарт- ной библиотеки языка C (пример П2.9).

 

Пример П2.9. Функция printf

 

$ awk -F: '{printf"User:%s\t\t\tUID:%3d\n",$1,$3}' /etc/passwd User:avahi UID:103

User:bin UID: 1

User:daemon UID: 2

 

Команды expand и unexpand

Команда expand заменяет символы табуляции пробелами (пример П2.10).

 

Пример П2.10. Команда expand

 

$ echo -e 'A\tB' A B

 

$ echo -e 'A\tB' | od -ta 0000000 A ht B nl 0000004

 

$ echo -e 'A\tB' | expand | od -ta

0000000 A sp sp sp sp sp sp sp B nl 0000012


 

Команда unexpand делает обратную замену. По умолчанию табуляцией заме- няются лишь лидирующие пробелы в строке. Опция –a позволяет заменять все пробелы (пример П2.11).

 

Пример П2.11. Команда unexpand

 

$ echo -e 'A\tB' | expand | unexpand -a | od -ta 0000000 A ht B nl

 

Команда pr

Команда pr предназначена для подготовки текста к печати. В приме- ре П2.12 показано, как с ее помощью можно вывести список файлов в три столбца.

 

Пример П2.12. Команда expand

 

$ ls | pr -3ft  
alsa.txt ls.txt.gz sfdisk.txt
cat.txt lsusb.txt tee.txt
coockie.txt mkfs.txt.gz udev.txt
cooo.txt modalias.txt users.txt.gz
csplit.txt modinfo.txt who.txt
dmesg.txt mon.txt xorg.txt
expand.txt mount.txt.gz xx00
fsck.txt.gz nl.txt xx01
grub.txt paste.txt.gz xx02
last.txt printf.txt xx03
ldd.txt pstree.txt xx04
libmodules.txt ps.txt.gz xx05
lsmod.txt rev.txt xx06
lspci.txt rpcinfo.txt xx07
lspcmcia.txt rpm.txt zypper.txt
lsscsi.txt    

 

Команды sort и uniq

Команда uniq позволяет отфильтровывать повторяющиеся строки во входном потоке. Входной поток должен быть заранее отсортирован. В примере П2.13 показано, как в текстовый файл, содержащий в себе вывод команды ps –ef, через некоторое время добавлен вывод этой же команды. Задача заключается в том, что надо вывести список процессов, изменившихся за это время.

 

Пример П2.13. Команды sort и uniq

 

$ ps -ef > ps.txt

 

$ ps -ef >> ps.txt

 

$ sort ps.txt | uniq -u

user1 21150 6054 4 00:17 pts/0 00:00:00 ps -ef

user1 21162 6054 0 00:17 pts/0 00:00:00 ps -ef

 

Команда wc

Команда wc позволяет подсчитать количество строк, слов и символов в потоке текста. Особенностью GNU-версии команды wc является наличие опции –L, позволяющей получить максимальную длину строки среди всех обработан- ных строк (пример П2.14).

 

Пример П2.14. Команда wc

 

$ ls | tr -L 14

 

Команда tr

Команда tr позволяет заменять или удалять символы в потоке. Приведенная в примере П2.15 команда позволяет подсчитать количество пробелов в файле.

 

Пример П2.15. Команда tr

 

$ tr –dc ' ' < /etc/motd | wc –c 4


 

Команда grep

Команда grep позволяет отфильтровывать строки, удовлетворяющие регу- лярному выражению с базовым синтаксисом (Basic syntax). А egrep исполь- зует расширенный синтаксис (Extended Regexp). В примере П2.16 показана команда для получения из журнала /var/log/messages только тех сообщений, которые записывались в журнал с 8 до 10 утра.

 

Пример П2.16. Команда egrep

 

$ egrep '^.{7}0[89]:' /var/log/messages


 

Приложение 3

Пример использования telnet



<== предыдущая лекция | следующая лекция ==>
Создание виртуальной машины в VMWare Workstation | Для тестирования MTA


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 5.245 сек.