Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

rm [-f | -i ] [-dRr ] имя_файла ...

Читайте также:
  1. Chmod wXp имя-файла
  2. Wc имя-файла
  3. Атрибуты файлов. Дерево каталогов. Простое, полное и относительное имя файла.
  4. Полное имя файла

 

 

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

 

Пpи попытке удаления каталога с помощью этой команды будет выдано сообщение об ошибке.

 

Вы можете использовать следующие опции:

-d

Если удаляемый файл окажется каталогом, то также его удалить.

-f

Удалить защищенный от записи файл без подтвеpждения. Если данный файл не существует, то не выводить сообщение об его отсутствии. Опция -f отменяет предыдущую опцию -i.

-i

Запpашивать подтверждение на удаление любого файла, независимо от того, является ли теpминал стандаpтным устpойством ввода или нет. Опция -i отменяет предыдущую опцию -f.

-r

Удалить все файлы и подкаталоги данного каталога, а после этого удалить и сам каталог. Опция -R подразумевает опцию -d. Если также указана опция -i, то пользователю выдается запpос на подтвеpжение удаления файлов и каталогов.

 

Cp

 

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

cp [-ipr] имя_файла... имя_файла_назначения

 

 

Вы можете использовать следующие опции:

-i

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

-p

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

-r

Копирование каталога с его подкаталогами.

 

 

Копирование файла в текущий каталог с новым именем:

[user@localhost ~]$ cp /etc/resolv.conf resolv

 

 

Копирование файла в текущий каталог с сохранением имени:

[user@localhost ~]$ cp /var/log/apache/access_log.

 

 

Копирование каталога:

[user@localhost ~]$ cp -r test test.old

 

Mv

 

Переименование файла или перемещение одного либо нескольких файлов (или каталогов) в другой каталог. Формат команды:

Mv [-i | -f] имя_файла... имя_файла_назначения

 

 

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

 

Вы можете использовать следующие опции:

-f

Запрет запроса подтверждений при перезаписи существующих файлов.

-i

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

 

 

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

[user@localhost ~]$ mv text/user.html text/htmls/

 

Ln

 

Эта команда создаёт ссылки на файлы как жёсткие, так и символические. Она имеет следующий формат (аналогичный команде mv по порядку аргументов):

ln [-s] имя_файла имя_файла_ссылки

 

 

Вы можете использовать следующие опции:

-f

Запрет запроса подтверждений при перезаписи существующих файлов (ссылок).

-s

Создание символической ссылки.

 

 

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

[user@localhost ~]$ ln text/alex/linux.html working/linux-todo.html

 

Создание символической ссылки на каталог:

[user@localhost ~]$ ln -s images/my/photos photos

 

Du

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

 

Программа имеет следующие параметры:

-a

Выводить информацию не только о каталогах, но и о файлах.

-h

Вывод размера каталога в «человеческом» формате: килобайтах, мегабайтах и т.п..

-s

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

 

 

Пример выполнения программы:

[user@localhost ~]$ du -sh test

925K test

 

tar

 

Команда tar предназначена для архивации груп файлов и каталогов. Эта команда позволяет объединять группу файлов и каталогов со всеми атрибутами в единый файл, который имеет расширение «.tar». Полученный файл затем с помощью той же команды tar. Команда tar имеет множество опций, мы же остановимся на следующем формате использования команды:

tar [-c | -x] [-z | -j] -f имя_tar_файла имена_файлов_и_каталогов

 

 

Опция -c соответствует созданию архива, -x — разворачивание архива.

 

Созданный архив можно также сжать с помощью архиваторов gzip или bzip2. Для этого применяются соответственно опции -z и -j. Здесь хорошо видна разница между понятием «архивирование», которое выполняет команда tar, и «сжатием», которе производят специализированные программы.

 

Имя архива, который создаётся или разворачивается передаётся после параметра -f.

 

Рассмотрим примеры работы с этой программой:

Создание архива etc.tar.bz2 каталога /etc с использованием сжатия bzip2:

 

[user@localhost ~]$ tar -cjf etc.tar.bz2 /etc

[user@localhost ~]$ ls

etc.tar.bz2

 

Разворачивание архива etc.tar.bz2 в текущий каталог с использованием разсжатия bzip2:

 

[user@localhost ~]$ tar -xjf etc.tar.bz2

[user@localhost ~]$ ls

etc etc.tar.bz2

 

 

Find

 

При работе с файлами часто бывает необходимо найти что-нибудь. В UNIX для этого существует команда find. В общем виде эта команда имеет следующий формат:

find [где_искать] [условие_поиска] [действие]

 

 

Первый аргумент команды find — это имя каталога, в которой производится поиск. По умолчанию, это текущий каталог.

 

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

-name

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

-type

Тип файла: f — обычный файл, d — каталог, l — символическая ссылка и т.п..

-user

Имя владельца файла или его уникальный идентификатор (UID).

-group

Имя группы владельца файла или её уникальный идентификатор (GID).

-perm

Права доступа файла.

-size

Размер файла. Обычно за числом следует буква — в чём измеряется размер (в блоках, байтах, килобайтах и т.п.).

-atime

Время доступа к файлу.

-ctime

Время последнего изменения владельца файла.

-mtime

Время последнего изменения содержимого файла.

-newer

Поиск всех файлов новее указанного.

 

 

Условия поиска могут быть объединены с помощью модификаторов: -a — И, -o — ИЛИ, \! — НЕ, \(...\) — группа условий.

 

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

-print

Вывести на экран имя найденного файла вместе с путём. Это действие выполняется по умолчанию.

-delete

Удалить найденные файлы.

-exec команда {} \;

Исполнение указанной команды для каждого найденного файла с передачей имени файла в качестве артумента ({}).

-ok команда {} \;

Аналогична действию -exec, только для каждого файла запрашивается подьверждение перед выполнением команды.

 

 

Рассмотрим примеры использования команды:

Вывод всех файлов в текущем каталоге и подкаталогах:

 

[user@localhost ~]$ find

.

./xxx

./xxx/yyy

./xxx/yyy/zzz

./file.test

 

Вывод всех файлов в каталоге /etc, начинающихся на «re»:

 

[user@localhost ~]$ find /etc -name "re*"

find: /etc/tcb: Permission denied

find: /etc/default: Permission denied

/etc/chroot.d/resolv.all

/etc/chroot.d/resolv.conf

/etc/chroot.d/resolv.lib

/etc/redhat-release

/etc/remounttab

/etc/resolv.conf

...

 

Вывод всех подкаталогов в каталоге /etc, начинающихся на «re»:

 

[user@localhost test]$ find /etc -name "rp*" -type d

/etc/rpm

 

Вывод всех файлов в каталоге /etc, изменённых за последние сутки:

 

[user@localhost test]$ find /etc -mtime -1

/etc

/etc/issue

/etc/issue.net

/etc/mtab

 

Вывод всех файлов в каталоге /tmp, не принадлежащих пользователю user:

 

[user@localhost test]$ find /tmp \! -user user

/tmp

/tmp/.private

/tmp/.font-unix

/tmp/.X11-unix

 

Удаление в текущем каталоге всех устаревших файлов (оканчивающихся на «~»):

 

[user@localhost test]$ find -name "*~" -delete

 

Вывод на экран имён всех текстовых файлов в домашнем каталоге:

 

[user@localhost test]$ find ~ -name "*.txt" -exec echo {} \;

/home/user/a.txt

/home/user/unix_commands.txt

 

Копирование всех текстовых файлов на дискету:

 

[user@localhost test]$ find ~ -name "*.txt" -exec cp {} /mnt/floppy/ \;

 

 

Mkfifo

 

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

 

Для создания канала необходимо ввести команду mkfifo, аргументом которой является имя файла канала:

[user@localhost test]$ mkfifo pipe

 

 

Именованый канал аналогичен неименованному (который устанавливается с помощью символа «|») — процессы могут писать в него и читать из него. При этом с каналом оперируют как с файлом:

[user@localhost test]$ echo "Hello, world." > pipe

[user@localhost test]$ cat < pipe

Hello, world.

 

 

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

 

Команды по работе с текстом

 

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

 

Echo

 

Познакомимся еще с одной командой, аналог котоpой имеется в DOS-си- темах. Это команда echo (эхо).

 

Она имеет фоpмат:

echo [-n] [arg...]

 

 

Команда echo выводит на устройство стандартного вывода заданные ей аргументы, разделяя их пробелами и завершая их символом новой строки (\n).

 

Эта команда удобна для формирования диагностических сообщений в командных файлах и для передачи известных данных в программном канале.

 

С помощью следующей команды можно довольно пpосто создать пустой файл: echo > имя_файла.

 

Возможен параметр -n — не выводить завеpшaющий символ перевода строки.

 

Интеpпpетатоp команд имеет встроенную команду echo, которая имеет синтаксические различия с внешней командой echo. Следует знать, что пользователям, работающим с оболочкой, будет доступна встроенная команда echo, если они не укажут /bin/echo.

 

Рассмотрим примеры использования этой команды:

 

Вывод сообщения «Hello, world» на экpан:

[user@localhost ~]$ echo "Hello, world."

Hello, world.

[user@localhost ~]$

 

 

Вывод сообщения без завеpшающего символа новой стpоки:

[user@localhost ~]$ echo -n "Hello, world."

Hello, world.[user@localhost test]$

 

 

Вывод сообщения в файл file1:

[user@localhost ~]$ echo "Hello, world." > file1

 

 

Добавление сообщения к содеpжимому файла file1:

[user@localhost ~]$ echo "Hello, world." >> file1

 

 

Вывод имен файлов текущего каталога в алфавитном поpядке:

[user@localhost ~]$ echo *

 

 

Вывод списка файлов с именами, соответствующих шаблону. Вывести имена файлов с pасшиpением.txt:

[user@localhost ~]$ echo *.txt

 

 

Cat

 

Рассмотpим еще одну команду, котоpая может быть полезна пpи pаботе с файлами. Это команда cat (аналог команды TYPE для DOS-систем).

 

Команда cat имеет следующий фоpмат:

cat [-benstuv] [-] [file1 [file2...]]

 

 

Она по очеpеди читает указанные, как аpгументы файлы и выводит их содеpжимое на стандаpтное устpойство вывода.

 

Поименованный файл или файлы выводятся последовательно один за дpу- гим без пpомежутков. Если файл достаточно длинный, то можно пpиостано- вить вывод с помощью комбинации клавиш Ctrl-S. Для пpодолжения вывода нажмите любую клавишу. Окончание ввода производится комбинацией Ctrl-D.

 

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

 

Вы можете использовать следующие опции:

-n

Нумеpовать стpоки начиная с 1.

-b

Подразумевает опцию -n, но не нумеpует пустые стpоки.

-e

Подразумевает опцию -v и отображает знак доллара ($) в конце каждой строки (визуализация символа пеpевода стpоки).

-s

Пpи наличии идущих подpяд пустых стpок выводить только одну.

-t

Подразумевает опцию -v. Выводит cимволы табуляции как ^I.

-u

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

-v

Отображение непечатных символов. Упpавляющие символы выводятся в виде ^X (CRTL+X), символ DEL (восьмеричное 0177) как ^?. Символы не входящие в стандаpтный ASCII-набоp (напpимеp, символы киppилицы с набоpом стаpших pазpядов) выводятся как «M-x», где x — опpеделяемый младшими семи битами символ.

 

 

Рассмотрим примеры использования команды:

 

Файл file выводится на устройство стандартного вывода:

[user@localhost ~]$ cat file

 

 

Сцепление (слияние) файлов file1 и file2, после чего они помещаются в файл file3:

[user@localhost ~]$ cat file1 file2 > file3

 

 

Пpисоединение файла file1 к концу файла file2:

[user@localhost ~]$ cat file1 >> file2

 

 

Вывод содеpжимого файла с нумеpацией стpок, но без нумеpации пустых стpок:

[user@localhost ~]$ cat -b file1

1 Number 1

2 Number 2

3 Number 3

4 Number 4

 

 

5 Number 5

 

 

Нумеpация всех стpок:

[user@localhost ~]$ cat -n file1

1 Number 1

2 Number 2

3 Number 3

4 Number 4

7 Number 5

 

 

Less

 

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

 

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

[user@localhost ~]$ less README.txt

 

 

Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать q (Quit). Перелистывать страницы можно и клавишами Page Up/Page Down, для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад — стрелку вверх. Переход на начало и конец текста выполняется по командам g и G соответственно (Go). Полный список того, что можно делать с текстом в less, выводится по команде h (help). Для поиска и подстветки интересующего понятия можно воспользоваться командой /, после которой необходимо ввести интересующий Вас термин — по нажатию клавиши Enter, курсор перейдёт к первому упоминанию термина, который будет выделен серым цветом. Последующие нажатия / и Enter приведут к продолжению поиска слова по документу.

 

Программа less используется в качестве основы команды man — при просмотре страниц руководств.

 

Head

 

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

 

С помощью параметра -n можно задать число строк от начала файлы, которые будут выведены на экран. Например:

[user@localhost ~]$ head -n 4 /etc/inittab

# /etc/inittab: init(8) configuration.

 

# The default runlevel.

id:5:initdefault:

 

Tail

 

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

 

С помощью параметра -n можно задать число строк от конца файла, которые будут выведены на экран. Например:

[user@localhost ~]$ tail -n 5 /var/log/dmesg

loop: loaded (max 8 devices)

squashfs: version 3.1 (2006/08/19) Phillip Lougher

Registering unionfs 1.4

unionfs: debugging is not enabled

device-mapper: ioctl: 4.7.0-ioctl (2006-06-24) initialised: dm-devel@redhat.com

 

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

 

Другим важным параметром команды является -f: команда ожидает изменения в конце фала и отображает их на экране. Часто это используется при просмотре постоянно увеличивающихся файлов. Для завершения команды нажмите Ctrl-C.

 

Cut

 

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

 

Вы можете использовать следующие опции:

-cсписок

вывод столбцов, указанных агрументом список;

-fсписок

вывод полей, указанных агрументом список;

-dсимвол

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

 

 

Примеры работы программы:

 

Выделение первых семи столбцов файла:

[user@localhost ~]$ cat phones.txt

1234567 Борис Петрович

5557845 Анна Иоановна

...

[user@localhost ~]$ cut -c1-7 phones.txt

...

 

 

Получение списка групп пользователей, зарегистрированных в системе:

[user@localhost ~]$ cut -f1 -d: /etc/group

root

bin

daemon

sys

adm

...

 

Paste

 

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

 

Часто применяется совместно с программой cut.

sort

 

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

sort [-c] [-r] [файл...]

 

 

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

 

Вот основные опции команды:

-c

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

-r

Заменить результат сравнения на противоположный.

 

 

Рассмотрим примеры использования команды:

 

Отсортировать файл с фамилиями:

[user@localhost ~]$ cat f.txt

Petrov

Ivanov

Sidorov

Abramov

[user@localhost ~]$ sort f.txt

Abramov

Ivanov

Petrov

Sidorov

 

 

Отсортировать список файлов в обратном порядке:

[user@localhost ~]$ ls / | sort -r

var

usr

tmp

sys

srv

sbin

root

...

 

 

Uniq

 

Команда uniq построчно анализирует файл и в случае, если он содержит в себе повторяющиеся строки, выбрасывает дубликаты. Команда имеет следующий формат:

uniq [-c] [исходный_файл]

 

 

Если имя исходного файла не указано, команда читает данные со стандартного ввода.

 

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

 

Рассмотрим примеры использования команды:

 

Получим имена всех пользователей, работающих в системе в настоящий момент:

[user@localhost ~]$ who | cut -f1 -d' '

root

root

ivan

maria

[user@localhost ~]$ who | cut -f1 -d' ' | uniq

root

ivan

maria

 

 

Однако такой результат будет не всегда:

[user@localhost ~]$ who | cut -f1 -d' '

root

ivan

root

maria

[user@localhost ~]$ who | cut -f1 -d' ' | uniq

root

ivan

root

maria

 

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

[user@localhost ~]$ who | cut -f1 -d' ' | sort | uniq

ivan

maria

root

 

 

Iconv

 

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

 

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

iconv [-l] -f исходная_кодировка -t конечная_кодировка [исходный_файл]

 

 

Если имя исходного файла не указано, команда читает данные со стандартного ввода.

 

Имя кодировки — исходной или конечной должно соответствовать кодировке в файле, список доступных кодировок можно получить, если запустить команду iconv с параметром -l.

wc

 

Эта команда предназначена для подсчёта количества строк, символов и слов в указанных файлах. Команда имеет слудующий формат:

wc [-clmw] file...

 

 

Можно использовать следующие опции:

-c

Вывод только количества байт.

-l

Вывод только количества строк.

-m

Вывод только количества символов. Отличается от числа байт при многобайтной кодировке.

-w

Вывод только количества слов.

 

 

Рассмотрим примеры использования команды:

 

Подсчёт числа слов в документе:

[user@localhost test]$ wc -w lectures.txt

568 lectures.txt

 

 

Число файлов в каталоге:

[user@localhost test]$ ls / | wc -l

 

 

Полная статистика по группе xml-файлов (число строк, число слов, число байт):

[user@localhost test]$ cat *.xml | wc

3978 16138 253680

 

 

Dd

 

dd — команда блочного копирования файлов. Она имеет следующий формат:

dd if=исходный_файл of=конечный_файл bs=размер_блока

count=число_блоков skip=число_блолов seek=число_блоков

 

 

Программа используется при копировании частей одного файла в другой, часто применяется при работе с устройствами. Рассмотрим параметры, принимаемые командой:

if=

Задаёт имя файла (или устройства), откуда будут копироваться данные.

of=

Задаёт имя файла (или устройства), куда будут копироваться данные.

bs=

Задаёт размер блока копирования в байтах. Можно применять модификаторы размера: «K» — килобайты, «M» — мегабайты и т.п.

count=

Задаёт число копируемых блоков. Если этот параметр не задан, копируется всеь исходный файл.

skip=

Число блоков в исходном файле, которое будет пропущено до чтения.

seek=

Число блоков в файле назначения, которое будет пропущено до записи.

 

 

Рассмотрим примеры использования команды:

 

Копирование загрузочного сектора жёсткого диска в файл bootsect:

[root@localhost test]# dd if=/dev/hda of=bootsect bs=512 count=1

1+0 входных записей

1+0 выходных записей

512 bytes (512 B) copied, 9e-05 seconds, 5,7 MB/s

 

 

Копирование файла размером до двух мегабайт на простой гибкий диск и обратно:

[user@localhost test]$ dd if=arch.tar.bz2 of=/dev/fd0 bs=1

1788990+0 входных записей

1788990+0 выходных записей

[user@localhost test]$ dd if=/dev/fd0 of=arch2.tar.bz2 bs=1 count=1788990

1788990+0 входных записей

1788990+0 выходных записей

 

Команды, использующие регулярные выражения

 

Grep

 

Часто пользователю нужно найти только упоминания чего-то конкретного в файле или среди данных, выводимых программой. Обычно эта задача сводится к поиску строк, в которых встречается определенное слово или комбинация символов. Для этого подходит стандартная утилита grep. grep может искать строку в файлах, а может работать как фильтр: получив строки со стандартного ввода, она выведет на стандартный вывод только те строки, где встретилось искомое сочетание символов.

 

Простой пример: найти своего пользователя в файле /etc/passwd:

[user@localhost test]$ grep user /etc/passwd

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/dev/null

rpc:x:32:32:Portmapper RPC user:/:/dev/null

user:x:500:500::/home/user:/bin/bash

 

Первый аргумент команды grep — та строка, которую нужно искать в файле или стандартном вводе, в данном случае это «user», а поскольку файл /etc/passwd выводит сведения по строке на каждого пользователя, таким образом можно получить информацию о пользователе «user».

 

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

 

В регулярном выражении большинство символов обозначают сами себя, как если бы мы искали обыкновенную текстовую строку, например, «user» и «::» в регулярном выражении соответствуют строкам «Note» и «::» в тексте. Однако некоторые символы обладают специальным значением, самый главный из таких символов — звездочка («*»), поставленная после элемента регулярного выражения, обозначает, что могут быть найдены тексты, где этот элемент повторен любое количество раз, в том числе и ни одного, т.е. просто отсутствует.

 

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

[user@localhost ~]$ grep "^127.*" /etc/hosts

127.0.0.1 localhost.localdomain localhost

 

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

 

Существуют и другие способы группирования символов:

 

«[» и «]» задают класс символов, когда в выражении может встретиться любой из них. С помощью следующего регулярного выражения выводятся все строки, содержащие любые числа (знак «+» является аналогом «*», только задаёт 1 и большее число упоминаний предыдущего символа):

[user@localhost ~]$ grep "[0-9]\+" /etc/hosts

127.0.0.1 localhost.localdomain localhost

192.168.1.4 cat.home cat

 

 

«(» и «)» позволяют группировать выражения. Например, следующая команда выводит все строки, содержащие IP-адрес:

[user@localhost ~]$ grep "\([0-9]\+\.\)\{3\}[0-9]\+" /etc/resolv.conf

nameserver 192.168.0.1

 

Запись «{3}» означает, что предыдущий символ или выражение должно повторяться в точности 3 раза.

 

 

Регулярные выражения содержат множество управляющих символов, каждый их которых наделён собственным смыслом. Для того, чтобы воспользоваться непосредственным значением символа (для поиска его в строке), необходимо поставить перед ним символ обратной косой: «\».

 

Команда grep содержит множество удобных параметров, например вывод номера найденной строки (-n) или вывод только подстроки, соответствующей самому регулярному выражению (-o).

 

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

 

 

Sed

 

Регулярные выражения можно использовать не только для поиска по файлу, но и для изменения информации. Для такого поиска с заменой можно воспользоватья утилитой sed (stream editor — поточный редактор). sed имеет свой встроенный простой язык, с помощью которого можно задать правила модифицирования файла.

 

Все команды встроенного языка sed состоят из одной буквы. Например, поиск с заменой выполняет команда «s» (search). Синтаксис у нее следующий:

s/что_искать/на_что_заменять/

 

Например:

[user@localhost ~]$ ls -l / | sed 's/^d[^ ]\+/directory/'

total 6

directory 2 root root 40 Feb 10 17:57 bin

directory 2 root root 172 Feb 10 20:23 boot

directory 8 root root 3200 Feb 10 17:58 dev

directory 50 root root 480 Feb 10 18:00 etc

directory 3 root root 60 Feb 10 18:00 home

...

 

Эта команда заменяет в информации о корневом каталоге все строки, начинающиеся с символа d и все, следующие за ним непробельные символы, на слово directory.

 

Кроме команды поиска, sed имеет команды удаления, копирования и замены строк. Также команды могут иметь модификаторы, например, символ «g» в конце команды поиска указывает делять замену для всех найденных по регулярному шаблону подстрок, а не только для первого.

 

Попробуем разобраться подробнее, как работает редактор sed. Входной текст sed считывает построчно. К считанной строке он по очереди пробует применить каждую команду сценария. Применив все возможные команды к строке, sed выводит на стандартный вывод то, что от нее осталось. Команда сценария может начинаться с т.н. контекстного адреса, определяющего свойства строк, к которым эту команду можно применять. Простой контекстный адрес — это номер строки (команда применяется к единственной — совпадающей по номеру — строке входного потока) или регулярное выражение (команда применяется ко всем строкам, в которых найдено соответствие этому РВ). Например, команда sed "1s/_/ /g" заменит в первой строке все подчеркивания на пробелы, а sed "/^a/d" удалит (delete) все строки, начинающиеся с «a».

 

У sed очень широкие возможности, но довольно непривычный синтаксис. Чтобы в нем разобраться, нужно обязательно прочесть руководство sed и знать регулярные выражения.

 

Резюме

 

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

 

Ключевые термины: pwd, cd, ls, mkdir, rmdir, touch, rm, cp, mv, ln, du, tar, find, mkfifo, echo, cat, less, head, tail, cut, paste, sort, uniq, iconv, wc, dd, grep, регулярное выражение, sed

 

Дополнительные материалы

 

Курячий Г.В., Маслинский К.А. Операционная система Linux. — М.: Интуит.Ру, 2005. — 392 с.: ил.

Курячий Г.В. Операционная система UNIX. — М.: Интуит.Ру, 2004. — 292 с.: ил.

Рейчардс К., Фостер-Джонсон Э. UNIX: справочник. — СПб.: Питер Ком, 1




Дата добавления: 2014-12-19; просмотров: 114 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.088 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав