Кроме основных команд для работы с файлами и каталогами в Linux, нужно уметь использовать вспомогательные команды:
- grep - позволяет найти строки в файлах, соответсвующие заданному фильтру;
- less - удобный постраничный просмотр в консоли больших текстовых файлов;
- pwd - печать текущей рабочей директории;
- diff - команда сравнения двух текстовых файлов;
- find - поиск файлов в дереве каталогов;
- locate;
- head;
- tail;
- sort.
Команда grep
grep - это мощная вспомогательная команда, имеющая много настроек. Она позволяет в заданных файлах или входном потоке найти строки, соответствующие настройкам фильтра.
Команда
grep root /etc/passwd > rootpass.txt
найдет и запишет в файл rootpass.txt строки, содержащеие слово root.
Команда
grep root -v /etc/passwd > norootpass.txt
Запишет в файл norootpass.txt строки, в которых отсутствоет слово root.
Команда
grep karasi /home/kok/fish/*
отобразит на экране все строки, содержащие слово karasi во всех файлах, лежащих в каталоге /home/kok/fish.
Чтобы использовать всю мощь grep рекомендуется хорошо изучить и проработать тему "Регулярные выражения". Например, по книге Джефри Фридла " Регулярные выражения" издательства "Питер". Сайт автора книги находится по адресу http://regex.info.
Команда less
Если открыть в терминале большой файл или на стандартный вывод поступает много строк информации, читать ее становиться неудобно, она не вмещается на экран консоли. В этом случае поможет команда less.
less позволяет отобразить в удобно читаемом виде вывод большого количества информации на экран терминала. Получается что-то типа страниц книги, которые можно листать. Управление просмотром:
- клавиша пробела - листать вперед;
- клавиша B - листать назад;
- Q - закончить просмотр.
В окне вывода less работает внутренний поиск по тексту. Команды поиска:
- /root - искать слово root далее в тексте;
- ?root - искать слово root в направлении к началу текста.
- N - начать новый поиск.
Команда
less /usr/share/dict/words
выведет постранично на экран терминала содержимое файла words.
На вход less можно перенаправлять вывод других программ командой |.
Команда
grep mos /usr/share/dict/words | less
позволит постранично посмотреть на экране терминала список слов, содержащих выражение mos.
Команда pwd
Команда pwd - это сокращенное "print work directory". Переводится, как печать текущей рабочей директории. Ее вывод показывает каталог, в котором пользователь находится в данный момент.
Команда diff
Иногда требуется сравнить два текстовых файла (например, файла настройки) и быстро выяснить в чем отличия в них. Это можно сделать командой diff:
diff grub.cfg grub.cfg.back
Вывод программы покажет в чем отличия между двумя файлами конфигурации загрузчика grub/
Команда file
file показывает тип файла. Пример команды:
file grub.cfg.back
Команда find
find - это мощный инструмент системного администратора, который имеет большое число параметров поиска и позволяет найти все файлы, отвечающие им. С найденными файлами, можно совершить следущие действия:
- cp - скопировать;
- rm - удалить;
- mv - переместить.
Общий вид команды find:
find StartDirektoryToSearch CriteriiSearch Deistvie
где:
- StartDirektoryToSearch - стартовая директория дерева каталогов для поиска. Если не указана, то поиск будет начинаться в текущей директории;
- CriteriiSearch - критерии поиска. Можно задать поиск по имени файла, по владельцу файла и группе, по дате и времени изменения, по размеру и типу файла, по дате и времени последнего доступа.
- Deistvie - определяет действие, которое нужно выполнить с найденными файлами.
Критерии поиска команды find:
- -name - поиск по имени (ищет все файлы с именем, начинающимся исключительно в нижнем регистре, файл, имя которого начинается с большой буквы будет пропущен);
- -iname - выполнить поиск по имени файла без учета регистра;
- -size - поиск по размеру файлов;
- -type - поиск по типу файла;
- -empty - использование этого параметра поможет найти все пустые файлы;
- -cmin +T - поиск файлов, c момента изменения прошло более T мин;
- -сmin -T - поиск файлов, с момента изменения которых прошло менее T мин;
- -user NameUser - дает указание найти файлы, принадлежащие NameUser;
- -atime +N - найти файлы, к которым не обращались N дней;
- -perm - поиск файлов по заданному типу разрешений (Например, -perm 777).
Примеры команды find
Найти все файлы с расширением jpg в директории пользователя User
find /home/User/ -name "*.jpg"
Найти файлы now.txt во всех папках директории /home/user
find /home/user -name now.txt
Найти все пустые файлы b удалить их
find . -empty -delete
Найти файлы, измененные за последние 60 минут
find -cmin -60
Поиск файлов по размеру
Критерий поиска файлов по размеру имеет аргументы, указывающие на размер файла и единицу измерения. Единицы измерения:
- 1G - один гигабайт;
- 100М - сто мегабайт;
- 100к - 100 килобайт;
- 1с - 1 байт.
Чтобы выполнить поиск файлов больше указанного размера, перед размером файла ставят знак плюс. Например, конструкция
find -size +1G
дает команду найти все файлы размером больше 1 Гбайт.
Для поиска файлов размером меньше заданного, перед размером ставят знак "-". Если необходимо найти все файлы размером меньше 1 Мбайт, нужно ввести команду
find -size -1M
Чтобы найти файл строго заданного размера, то знаки "-" и "+" перед размерностью не пишут. Например, поиск файлов размером 100 килобайт выполняется командой
find -size 100K
Поиск всех файлов, принадлежащих пользователю unixoid
find /home -user unixoid
Сложные запросы
При построении сложных поисковых запросов команды find можно использовать логические конструкции:
Примеры сложных запросов
Найти все файлы, принадлежащие пользователю rza, размером больше 1Гб:
find -user rza and -size 1Gb
Найти все pdf файлы в папках директории /home/mx, принадлежащие пользователю mx, размером не менее 200 Мбайт и не более 100 Мбайт
find /home/mx/ -user mx -and -size +100M -and -size -200M -and -name '*.pdf' 2> /dev/null
Найти все файлы в форматах pdf или djvu в папках директории, принадлежащие пользователю kv, ошибки вывода отправить в /dev/null, результаты выдачи команды find, отправить на вход команды less
find /home/kv/ -user kv -and \( -name '*.pdf' -or -name '*.djvu' \) 2> /dev/null | less
Очистка вывода от ошибок
Команда
2> /dev/null
очищает вывод find от ошибок, отправляя все ошибки в файл /dev/null.
Операции с результатами поиска
Результаты поиска команды find можно:
- -print - распечатать (действие по умолчанию);
- -delete - удалить найденные файлы;
- -ls - рассмотреть результаты поиска подробней;
- -exec - передать поток вывода указанной команде.
-exec
Действие -exec выполнить любую команду с результатами поиска.
Конструкция -exec
-exec команда {} \;
Здесь команда - это:
{} - результаты поиска.
\; - окончание действия -exec.
Команда
find /home/user/Image -name '*.jpg' -exec cp {} /arxiv/photo \;
находит находит все ipg файлы в папках директории /home/user/Image и копирует их в папку /arxiv/photo.
Рекомендую хорошенько изучить параметры find и основательно попрактиковаться в составлении поисковых запросов.
Вот еще информация по команде find
Программа locate
locate - команда поиска файлов в индексе файлов, запись в который периодически осуществляет система. locate работает быстрее find и тоже имеет много настраиваемых параметров поиска. Важно помнить, что locate обращается к индексу файлов. Если последняя запись в индекс была относительно давно, то эта команда не сможет найти все недавно созданные файлы.
Команда head
head - команда, позволяющая по умолчанию быстро посмотреть первые 10 строк текстового файла. Чтобы увидеть n первых строк, необходимо набрать:
head -n /etc/passwd
Посмотреть первые 5 строк файла /boot/grub/grub.cfg:
head +5 /boot/grub/boot.cfg
Команда tail
tail - команда, которая позволяет быстро увидеть последние строки файла. По умолчанию показывает 10 последних строк.
Если нужно увидеть строки начиная с номера n, необходимо использовать параметр +n. Например,
tail +25 /etc/passwd
выведет строки файла /etc/passwd начиная с 25 строки.
Команда sort
sort - команда, позволяющая отсортировать строки в файле в алфавитно-числовом порядке. Имеет дополнительные параметры:
- -n - выстраивает строки, начинающиеся с цифр;
- -r - меняет порядок сортировки строк на обратный.
Команда clear
Команда clear используется для очистки окна терминала от введенных ранее команд и их вывода в окно терминала.