Пример 7.1. Выявление каталогов, занимающих много места на диске, при помощи команды du
du -b | sort -nr
Фильтры
Фильтры — это программы, которые читают данные со стандартного ввода, преобразуют их и выводят на стандартный вывод. Использование программ-фильтров позволяет организовывать конвейер: производить несколько последовательных операций над данными в одной команде. Подробнее о перенаправлении стандартного ввода/вывода и конвейере можно прочитать в документации по bash или другой командной оболочке. Многие из команд, приведённых в этом разделе, могут работать и с файлами.
Cat
объединяет файлы и выводит их на стандартный вывод;
Tac
объединяет файлы и выводит их на стандартный вывод, начиная с конца;
Sort
сортирует строки;
Uniq
удаляет дублирующиеся строки из отсортированных файлов;
tr
выполняет замену определенных символов в стандартном вводе на другие определенные символы в стандартном выводе, может быть использована для транслитерации, удаления лишних символов и для более сложных подстановок;
Cut
систематизированные данные в текстовом формате можно обрабатывать при помощи утилиты cut, которая выводит заданную часть каждой строки файла; cut позволяет выводить только заданные поля (данные из некоторых колонок таблицы, в которой содержимое ячеек разделено стандартным символом — знаком табуляции или любым другим), а также символы, стоящие на определённом месте в строке;
Paste
объединяет данные из нескольких файлов в одну таблицу, в которой данные из каждого исходного файла составляют отдельную колонку;
Csplit
делит файл на части по шаблону;
Expand
преобразует знаки табуляции в пробелы;
Unexpand
преобразует пробелы в знаки табуляции;
Fmt
форматирует текст по ширине;
Fold
переносит слишком длинные текстовые строки на следующую строку;
nl
нумерует строки файла;
od
выводит файл в восьмеричном, шестнадцатеричном и других подобных формах;
Tee
дублирует стандартный вывод программы в файле на диске;
Пример 7.2. Получение списка адресов писавших вам людей с помощью команд cat, sort и uniq
cat *| grep ^From: |sort |uniq
Пример 7.3. Получение списка слов, встречающихся в тексте, с указанием количества употреблений
cat big.text.file | tr '[:space:][:punct:]' "\n" |sort |uniq -c |sort -n -r |less
Прочее
Head
выводит начальную часть файла заданного размера;
Tail
выводит конечную часть файла заданного размера, поскольку может выводить данные по мере их добавления в конец файла, используется для слежения за файлами журналов и проч.;
Echo
выводит текст аргумента на стандартный вывод;
False
ничего не делает, выходит с кодом возврата 1 (ошибка), может быть использована в сценариях оболочки, если треуется неудачно завершающаяся команда;
True
ничего не делает, выходит с кодом возврата 0 (удачное завершение), может быть использована в сценариях, если требуется удачно завершающаяся команда;
Yes
бесконечно выводит одну и ту же строку (по умолчанию — yes) пока не будет прервана.
Seq
выводит ряд чисел в заданном диапазоне последовательно возрастающих или убывающих на заданную величину;
Sleep
приостанавливает выполнение на заданное число секунд;
Usleep
приостанавливает выполнение на заданное число милисекунд;
Comm
построчно сравнивает 2 предварительно отсортированных (командой sort) файла, выводит таблицу из трёх колонок, где в первой — строки, уникальные для первого файла, во второй — уникальные для второго, в третьей — общие для обоих файлов;
Join
объединяет строки двух файлов по общему полю;
Paste
Для каждой пары входных строк с одинаковыми общими полями выводит строку на стандартный вывод. По умолчанию общее поле считается первым, поля разделяются пробельными знаками.
Split
разбивает файл на части заданного размера.
Вычисления
Помимо простых операций со строками (ввод/вывод и объединение) нередко требуется выполнять некоторые вычисления над имеющимися данными. Ниже перечислены утилиты, которые выполняют вычисления над числами, датами, строками.
Test
возвращает значения «истина» или «ложь» в зависимости от значения аргументов; команду test удобно использовать в сценариях для проверки условий;
Date
выводит и устанавливает системную дату, кроме того может быть использована для вычислений над датами;
Expr
вычисляет выражения;
Md5sum
подсчитывает контрольную сумму по алгоритму MD5;
Sha1sum
подсчитывает контрольную сумму по алгоритму SHA1;
wc
подсчитывает количество строк, слов и символов в файле;
Factor
разлагает числа на простые множители;
Пример 7.4. Проверка наличия файла при помощи команды test
if test -e /bin/bash; then echo "bash присутствует"; else echo "bash отсутствует, странно"; fi;
Пример 7.5. Сравнение чисел при помощи команды test
if test 5 -gt 7; then echo "5 > 7"; else echo "7 > 5"; fi;
Пример 7.6. Подсчёт суммы строк во всех файлах на языке C в текущем каталоге при помощи команды wc
cat *.[ch] | wc -l
Пример 7.7. Получение вчерашней даты при помощи команды date
date -d yesterday Ну и в завершение не будет лишним почитать полную документацию по всем утилитам, входящим в пакет coreutils:
rpm -ql coreutils | grep man | xargs -n1 basename | sed 's/.1.gz//' | xargs man
Поиск
Антон Бояршинов
Поиск информации в файловой системе можно условно разделить на поиск по атрибутам файла (понимая их расширительно, то есть включая имя, путь и т. п.) и поиск по содержимому. Для этих видов поиска как правило используются программы find и grep соответственно. Благодаря удобным средствам межпроцессного взаимодействия, эти два вида поиска легко объединить, то есть искать нужную информацию только в файлах с нужными атрибутами[28].
Поиск по атрибутам
Основным средством поиcка по атрибутам файла является программа find. Обобщенный вызов find выглядит так: findпутьвыражение, где путь — это список каталогов, в которых надо искать, а выражение — набор выражений, описывающих критерии отбора файлов и действия, которые надо произвести над найденными файлами. По умолчанию имена найденных файлов просто выводятся на стандартный вывод, но это можно переопределить и передавать список имён найденных файлов любой команде для обработки. По умолчанию find ищет во всех подкаталогах каталогов, заданных в списке путей.
Выражения
Выражения, определяющие критерии поиска файлов, состоят из пар ключ — значение. Ниже перечислены некоторые из возможных параметров поиска:
-amin, -anewer, -atime
Время последнего доступа к файлу. Позволяет искать файлы, которые были открыты в некоторый период времени, или наоброт, файлы, к которым никто не обращался в течение некоторого периода.
-cmin, -cnewer, -ctime
Время последнего изменения статуса файла.
-fstype
Тип файловой системы, на которой расположен файл.
-gid, -group
Пользователь и группа, которым принадлежит файл.
-name, -iname
Соответствие имени файла заданному шаблону.
-regex, -iregex
Соответствие имени файла регулярному выражению.
-path, -ipath
Соответствие полного имени файла (с путём) заданному шаблону.
-perm
Права доступа.
-size
Размер файла.
-type
Тип файла.
Действия
Программа find может выполнять различные действия над найденными файлами. Наиболее важные из них:
-print
Вывести имя файла на стандартный выход (действие по умолчанию);
-delete
удалить файл;
-exec
выполнить команду, передав ей в качестве параметра имя файла.
Об остальных можно прочитать в экранной документации по команде find, отдав команду man find.
Параметры
Параметры влияют на общее поведение find. Наиболее важные из них:
-maxdepth
максимальная глубина поиска в подкаталогах;
-mindepth
минимальная глубина поиска в подкаталогах;
-xdef
поиск только в пределах одной файловой системы.
Об остальных можно прочитать в экранной документации по команде find.
Пример 7.8. Перекодировка имён файлов и каталогов из koi8-r в cp1251
find ./ -print | tac | sed -e 's/"/\\"/' | while read name; do mv "$name" "`dirname "$name"`/`basename "$name" | iconv -f koi8-r -t cp1251`"; done
Терминалы
Терминал в Linux — это программа, которая предоставляет пользователю возможность вести диалог с системой при помощи интерфейса командной строки. Терминалы позволяют передавать системе и получать от неё только текстовые данные. Стандартный терминал к системе Linux можно получить на любой текстовой виртуальной консоли, а для того, чтобы получить доступ к командной стоке из графической оболочки, требуются специальные программы — эмуляторы терминала. Ниже перечислены некоторые из эмуляторов терминала и подобных программ, вошедших в дистрибутив ALT Linux 2.4 Master.
Xterm
Программы: resize, uxterm, xterm.
Стандартный эмулятор терминала для X Window System. Этот эмулятор совместим с терминалами DEC VT102/VT220 и Tektronix 4014 и предназначен для программ, не использующих графическую среду напрямую. Если операционная система поддерживает изменение окна терминала (например, сигнал SIGWINCH в системах, произошедших от 4.3bsd), xterm может использовать сообщать программам, запущенным в нем, что размер окна изменился.
Aterm
Aterm — это цветной эмулятор терминала rxvt версии 2.4.8, дополненный полосами прокрутки в стиле NeXT от Альфредо Кодзима (Alfredo Kojima). Он предназначен для замены xterm в случае, если не нужна эмуляция терминала Tektronix 4014.
Console-tools
Программы: charset, chvt, codepage, consolechars, convkeys, deallocvt, dumpkeys, fgconsole, fix_bs_and_del, font2psf, getkeycodes, kbd_mode, loadkeys, loadunimap, mapscrn, mk_modmap, openvt,psfaddtable, psfgettable, psfstriptable, resizecons, saveunimap, screendump, setfont, setkeycodes, setleds, setmetamode, setvesablank, showcfont, showkey, splitfont, unicode_stop, vcstime, vt-is-UTF8,writevt.
Этот пакет содержит инструменты для загрузки консольных шрифтов и раскладок клавиатуры. Он также включает набор разнообразных шрифтов и описаний раскладок.
В случае, если он установлен, его инструменты используются во время загрузки/входа в систему для установления системной/персональной конфигурации консоли.
Screen
Утилита screen позволяет исполнять консольные программы, когда вы не можете контролировать их выполнение все время (к примеру, если вы ограничены сеансовым доступом к удалённой машине).
Например, вы можете выполнять несколько интерактивных задач на одном физическом терминале (сеанс удалённого доступа) посредством переключения между виртуальными терминалами с помощью screen, установленной на удалённой машине. Или эта программа может быть использована для запуска программ, не требующих непосредственного подключения к физическому терминалу.
Установите пакет screen, если вам могут понадобиться виртуальные терминалы.
Vlock
Программа vlock позволяет заблокировать ввод при работе в консоли. Vlock может блокировать текущий терминал (локальный или удалённый) или всю систему виртуальных консолей, что позволяет полностью закрыть доступ ко всем консолям. Разблокировка происходит только после успешной авторизации того пользователя, который инициировал блокировку консоли.
Работа с файлами
Binutils
Это коллекция утилит для работы с бинарными файлами. Она включает в себя:
· addr2line: преобразование адресов в пару файл-строка;
· ar: создание, изменение архивов и извлечение файлов из них;
· nm: чтение символов из объектных файлов;
· objcopy: копирование и трансляция объектных файлов;
· objdump: вывод информации из объектных файлов;
· ranlib: создание индексов для содержимого архива;
· size: вывод размеров блоков объекта или архивного файла;
· strings: вывод печатаемых строк из файлов;
· strip: отбрасывание символов.
Diffutils
Набор утилит проекта GNU для сравнения файлов. Пакет diffutils включает четыре утилиты:
· diff: сравнивает два файла и выводит различающиеся строки;
· cmp: сравнивает файлы не построчно, а побайтово;
· diff3: сравнивает три файла и может использоваться, когда два человека редактируют исходный файл независимо друг от друга; при этом программа может создавать файл, содержащий исправления из обоих вариантов, а также предупреждения о коллизиях;
· sdiff: предназначен для интерактивного слияния двух файлов.
Установите diffutils, если вам нужно сравнивать текстовые файлы.
Patch
Программа patch предназначена для внесения исправлений, созданных командой diff, в исходные файлы. Команда diff используется для сравнения изменённого и исходного файлов и создания на основе полученной информации файла исправлений. Человек, нуждающийся в изменении исходного файла, может использовать для этого команду patch.
Установите программу patch, так как это общепринятый способ обновления приложений, собираемых из исходных кодов.
File
Команда file используется для определения типа данных, содержащихся в файле. file различает множество типов файлов, включая бинарные файлы формата ELF, системные библиотеки, пакеты RPM и множество различных графических форматов.
Gnupg
Программы: gpg, gpgsplit, gpgv, lspgpot.
Инструмент для защиты обмена данными и хранилищ данных. Может использоваться для шифрования информации и создания цифровых подписей. Пакет включает в себя инструменты управления ключами. GnuPG использует криптографию с открытым ключом. Каждый пользователь имеет пару ключей, состоящую из секретного (закрытого) и публичного (открытого) ключей. Секретный ключ доступен только пользователю и не может быть передан другому лицу ни при каких обстоятельствах. Публичный ключ передаётся всем людям, с которыми пользователь будет обмениваться сообщениями.
Kgpg
Kgpg — простой интерфейс к мощной утилите шифрования GnuPG.
Slocate
Программы: locate, slocate, mklocatedb, updatedb.
Более безопасная версия программы locate. Как и locate, slocate отыскивает файлы, совпадающие с заданным шаблоном в центральной базе данных файлов (которая обычно обновляется каждую ночь). Позволяет значительно сократить время поиска файла по сравнению с find, особенно при большом количестве файлов.
Stmpclean
Программы: stmpclean, tmpwatch.
Утилита stmpclean удаляет старые файлы (и старые пустые каталоги) из указанного каталога. Эта программа обычно используется для очистки каталогов временных файлов (например, /tmp), где обычно накапливаются ненужные файлы.
Tree
Утилита tree рекурсивно отображает содержимое каталогов в виде дерева. tree базируется на портированной в UNIX из MS-DOS программе tree. Установите этот пакет, если вам нужно просматривать каталоги в таком виде.
[24] Командная строка — приглашение командной оболочки, обозначающее готовность системы принимать команду пользователя, — в наиболее явной форме демонстрирует идею диалога пользователя с системой. На каждую введённую команду пользователь получает ответ от системы: либо очередное приглашение, обозначающее, что команда выполнена и можно вводить следующую, либо сообщение об ошибке, представляющее собой высказывание системы о произошедших в ней событиях, адресованное пользователю.
[25] Существует исключение для файловой системы ext2, программа recover.
[26] С этой формой команды следует быть особенно осторожным, особенно при использовании шаблонов в качестве аргументов: например, .. подходит под шаблон .*.
[27] В частности, так работает команда man
[28] Необходимость искать файлы с нужными атрибутами среди файлов с нужным содержимым возникает реже, так как поиск по атрибутам в общем случае работает намного быстрее.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|