Работа с командной строкой

Антон Бояршинов, Кирилл Маслинский

Эффективная профессиональная работа в Linux немыслима без использования командной строки[24]. Пользователям, привыкшим работать в системах с графическим интерфейсом, работа с командной строкой может показаться неудобной: то, что можно сделать одним перетаскиванием мышью в командной строке потребует ввода с клавиатуры нескольких слов: команды с аргументами. Однако в Linux этот вид интерфейса всегда был основным, а поэтому и хорошо развитым. В командных оболочках, используемых в Linux, есть масса способов экономии усилий (нажатий на клавиши) при выполнении наиболее распространённых действий: автоматическое дополнение длинных названий команд или имён файлов, поиск и повторное выполнение команды, уже когда-то исполнявшейся раньше, подстановка списков имён файлов по некоторому шаблону и многое другое. Преимущества командной строки становятся особенно очевидны, когда требуется выполнять однотипные операции над множеством объектов. В системе с графическим интерфейсом потребуется столько перетаскиваний мышью, сколько есть объектов, в командной строке будет достаточно одной (пусть длинной и сложной) команды.

В этом разделе будут описаны основные инструменты, позволяющие при помощи командной строки решать любые задачи пользователя: от тривиальных операций с файлами и каталогами (копирование, переименование, поиск) до сложных задач, требующих массовых однотипных операций, которые возникают как в прикладной работе пользователя, при работе с большими массивами данных или текста, так и в системном администрировании. В первую очередь будут описаны инструменты, предоставляющие возможность работы с командной строкой в дистрибутиве ALT Linux 2.4 Master (командные оболочки и эмуляторы терминала), а затем основные утилиты командной строки, выполняющие важнейшие операции с файловой системой и данными.

Командные оболочки (shells)

Общая информация об оболочках

Командная оболочка (или интерпретатор команд) — это программа, задача которой состоит в том, чтобы передавать ваши команды операционной системе и прикладным программам, а их ответы — вам. По своим задачам ему соответствует command.com в MS-DOS или cmd.exe в Windows, но функционально оболочки в Linux несравненно богаче. На языке командной оболочки можно писать небольшие программы для выполнения ряда последовательных операций с файлами и содержащимися в них данными — сценарии (скрипты).

Зарегистрировавшись в системе (введя имя пользователя и пароль), вы увидите приглашение командной строки — строку, оканчивающуюся символом $ (далее этот символ будет использоваться для обозначения командной строки). В случае, если при установке был настроен запуск графического интерфейса при загрузке системы, то добраться до командной строки можно на любой виртуальной текстовой консоли (нажав Ctrl-Alt-F1 — Ctrl-Alt-F6) или при помощи любой программы эмуляции терминала, например xterm. Подробнее об эмуляторах терминала см. раздел Терминалы. В дистрибутиве ALT Linux 2.4 Master доступны следующие командные оболочки:

bash

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

pdkdh

Клон korn shell, хорошо известной в системах UNIX командной оболочки.

sash

Особенность этой оболочки состоит в том, что она не зависит ни от каких разделяемых библиотек и включает в себя упрощённые реализации некоторых важнейших утилит, таких как ls, dd и gzip. Поэтому sash особенно полезна при восстановлении после некоторых системных сбоев или при обновлении версии важнейших разделяемых библиотек.

tcsh

Улучшенная версия C shell.

zsh

Новейшая из перечисленных здесь оболочек, в ней реализованы расширенные возможности автодополнения аргументов команд и множество других функций, делающих работу с оболочкой ещё более удобной и эффективной. Однако обратите внимание, что все расширения zsh по умолчанию отключены, поэтому прежде чем начать пользоваться этой командной оболочкой, необходимо прочесть документацию к ней и включить те функции, которые вам необходимы.

Оболочкой по умолчанию является bash (Bourne Again Shell). Чтобы проверить, какую оболочку вы используете, наберите команду: echo $SHELL.

Оболочки отличаются друг от друга не только возможностями, но и синтаксисом команд. Если вы — начинающий пользователь, мы рекомендуем вам использовать bash, дальнейшие примеры описывают работу именно в этой облочке.

Командная оболочка bash

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

Ввод команды завершается нажатием клавиши Enter, после чего команда передаётся оболочке на исполнение. В результате выполнения команды на терминале пользователя могут появиться сообщения о ходе выполнения команды или об ошибках, а появление очередного приглашения командной строки (оканчивающегося символом $) — знак того, что выполнение команды завершено и можно вводить следующую.

В bash имеется несколько приёмов, облегчающих ввод и редактирование командной строки. Например, используя клавиатуру, вы можете:

Ctrl-A

перейти на начало строки, это же можно сделать, нажав клавишу Home;

Ctrl-U

удалить текущую строку;

Ctrl-C

Прервать выполнение текущей команды.

Вы можете использовать символ ; для того, чтобы ввести несколько команд в одну строку. bash записывает историю всех выполненных команд, поэтому несложно повторить или отредактировать одну из предыдущих команд. Для этого достаточно выбрать нужную команду из истории: клавиша вверх выводит предыдущую команду, вниз — последующую. Для того, чтобы найти конкретную команду среди уже выполненных, не пролистывая всю историю, наберите Ctrl-R и введите какое-нибудь ключевое слово, употребленное в той команде, которую вы ищете.

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

!номер команды

Если ввести !!, запустится последняя из набранных команд.

Иногда в Linux имена программ и команд слишком длинны. К счастью, bash сам может завершать имена. Нажав клавишу Tab, вы можете завершить имя команды, программы или каталога. Например, предположим, что вы хотите использовать программу декомпрессии bunzip2. Для этого наберите:

bu

Затем нажмите Tab. Если ничего не происходит — значит, существует несколько возможных вариантов завершения команды. Нажав клавишу Tab ещё раз, вы получите список имён, начинающихся с bu.

Например, в системе есть программы buildhash, builtin, bunzip2:

          $ bu 
          buildhash builtin bunzip2
          $ bu

Наберите n > (bunzip — это единственное имя, третьей буквой которого является n), а затем нажмите Tab. Оболочка дополнит имя и остаётся лишь нажать Enter, чтобы запустить команду!

Заметим, что программу, вызываемую из командной строки, bash ищет в каталогах, определяемых в системной переменной PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слэш). Поэтому для запуска программы prog из текущего каталога надо дать команду ./prog.

Базовые команды

Первые задачи, которые приходится решать в любой системе: работа с данными (обычно хранящимися в файлах) и управление работающими в системе программами (процессами). Ниже перечислены команды, позволяющие выполнять наиболее важные операции по работе с файлами и процессами. Только первая из них — cd — является составляющей частью собственно командной оболочки, остальные распространяются отдельно, но всегда доступны в любой системе Linux. Все команды, приведённые ниже, могут быть запущены как в текстовой консоли, так и в графическом режиме (xterm, консоль KDE). Для получения более подробной информации по каждой из команд используйте команду man, например:

man ls
cd

Позволяет сменить текущий каталог (перемещаться по файловой системе). Она работает как с абсолютными, так и с относительными путями. Предположим, что вы находитесь в своём домашнем каталоге и хотите перейти в его подкаталог tmp/. Для этого, введите относительный путь:

cd tmp/

Чтобы перейти в каталог /usr/bin, наберите (абсолютный путь):

cd /usr/bin/

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

cd ..

позволяет вам сделать текущим родительский каталог (обратите внимание на пробел между cd и ..).

cd -

позволяет вам вернуться в предыдущий каталог. Команда cd без параметров возвращает оболочку в домашний каталог.

ls

ls (list) выдаёт список файлов в текущем каталоге. Две основные опции: -a — просмотр всех файлов, включая скрытые, -l — отображение более подробной информации.

rm

Эта команда используется для удаления файлов. Внимание: удалив файл, вы не сможете его восстановить![25]. Синтаксис: rm имя_файла.

У данной программы существует ряд параметров. Самые часто используемые: -i — запрос на удаление файла, -r — рекурсивное удаление (т. е. удаление, включая подкаталоги и скрытые файлы). Пример:

rm -i ~/html/*.html

Удаляет все файлы .html, в вашем каталоге html.

mkdir, rmdir

Команда mkdir позволяет вам создать каталог, тогда как rmdir удаляет каталог при условии, что он пуст. Синтаксис:

mkdir имя_каталога
rmdir имя_каталога

Команда rmdir часто заменяется командой rm -rf, которая позволяет вам удалять каталоги, даже если они не пусты[26].

less

less позволяет вам постранично просматривать текст. Синтаксис:

less имя_файла

Бывает полезно просмотреть файл перед тем, как его редактировать; основное же применение данной команды — конечное звено цепочки программ, выводящей существенное количество текста, которое не умещается на одном экране и в противном случае слишком быстро промелькнёт[27]. Для выхода из less нажмите q (quit).

grep

Данная команда позволяет найти строку символов в файле. Обратите внимание, что grep осуществляет поиск по регулярному выражению, то есть предоставляет возможность задавать шаблон для поиска сразу целого класса слов. На языке регулярных выражений можно составлять шаблоны, описывающие6 например, такие классы строк: «четыре цифры подряд, окружённые пробелами». Очевидно, такое выражение можно использовать для поиска в тексте всех годов, записанных цифрами. Возможности поиска по регулярному выражению очень широки, за более подробными сведениями вы можете обратиться к экранной документации по grep (man grep). Синтаксис:

grep шаблон_поискафайл
ps

Отображает список текущих процессов. Колонка команд указывает имя процесса, PID (идентификатор процесса) — номер процесса (используется для операций с процессом — например, отправки сигналов командой kill). Синтаксис:

ps аргументы

Аргумент u предоставляет вам больше информации, ax позволяет вам просмотреть те процессы, которые не принадлежат вам.

kill

Если программа перестала отвечать или зависла, используйте данную команду, чтобы её завершить. Синтаксис:

kill PID_номер

PID_номер здесь — идентификационный номер процесса, вы можете узнать номер процесса для каждой выполняемой программы при помощи команды ps. Обычно команда kill отправляет процессу сигнал нормального завершения, однако иногда это не срабатывает и необходимо будет использовать kill -9 PID_number — в этом случае команда будет немедленно завершена системой без возможности сохранения данных (аварийное завершение). Список сигналов, которые команда kill может отправлять процессу можно получить, отдав команду kill -l.

Midnight Commander

Если вы многие годы работали в MS-DOS/Windows, то, наверное, ощущаете себя немного «не в своей тарелке». Для того, чтобы попасть в привычную среду, запустите Midnight Commander командой mc. Midnight Commander — это свободный аналог Norton Commander и его популярного ныне потомка — Far. Если вы в какой-то момент сочтёте, что Midnight Commander что-то не умеет, то это, скорее всего, неверно. Ознакомьтесь с его описанием в /usr/share/doc/mc-номер_версии или дайте команду man mc.

Пакет coreutils

Антон Бояршинов

Пакет coreutils содержит множество маленьких утилит для работы с файлами и каталогами (создание, копирование и проч.) и текстовыми строками (объединение, сортировка и проч.). Принцип работы этих утилит унаследован от операционной системы UNIX: все они не имеют графического интерфейса и вызываются из командной строки с различными аргументами, работают с данными в простом текстовом формате и используют механизм стандартного ввода/вывода, что позволяет передавать вывод одной команды прямо на вход другой для последующей обработки, не используя промежуточных файлов (т. н. конвейер).

Эффективная работа с этими утилитами заключается именно в их комбинировании, они позволяют производить массовые однотипные операции по работе с файлами и текстовыми данными одной (пусть достаточно длинной) командой, что экономит огромное количество человеческого времени. Утилиты из этого пакета часто используются при написании сценариев командной оболочки. Далее описана большая часть утилит, входящих в пакет coreutils, для каждой утилиты приведено краткое описание ее функций. Более подробное описание по каждой утилите на русском языке вы можете получить, вызвав эту утилиту с ключом --help, а наиболее полную документацию (к сожалению, только на английском языке) — отдав команду info утилита.

Операции над файлами и каталогами

Здесь рассмотрены утилиты, работающие с объектами файловой системы: файлами, каталогами, устройствами, а также с файловыми системами в целом.

cp

Копирует файлы и каталоги.

mv

Перемещает (переименовывает) файлы.

rm

Удаляет файлы и каталоги.

df

Выводит отчёт об использовании дискового пространства (свободном месте на всех дисках).

du

Вычисляет место на диске, занимаемое файлами или каталогами.

ln

Создаёт ссылки на файлы.

ls

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

mkdir

Создаёт каталоги.

touch

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

realpath

Вычисляет абсолютное имя файла по относительному.

basename

Удаляет из полного имени файла путь (т. е. сокращает абсолютное имя файла до относительного).

dirname

Удаляет из полного имени файла имя файла (т. е. выводит полное имя каталога, в котором расположен файл).

pwd

Выводит имя текущего каталога.

Пример 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] Необходимость искать файлы с нужными атрибутами среди файлов с нужным содержимым возникает реже, так как поиск по атрибутам в общем случае работает намного быстрее.