Сведения о документе

Путеводитель по coreutils

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


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

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

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

cp

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

mv

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

rm

удаляет файлы и каталоги;

df

выводит отчёт об использовании дискового пространства;

du

оценивает место на диске занимаемого файлами и каталогами;

ln

создаёт ссылки между файлами;

ls

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

mkdir

создаёт каталоги;

touch

изменяет метки времени (последняя модификация, последний доступ) файла;

realpath

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

basename

удаляет из полного имени файла путь;

dirname

удаляет из полного имени файла имя файла;

pwd

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

Пример 1. Использование команды du для проверки выявления каталогов, занимающих много места на диске

du -b | sort -n

Вычисления

Команды test, date и expr совершают вычисления над своими аргументами, остальные могут быть также использованы как фильтры в потоке.

test

сравнивает типы файлов и значения;

date

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

expr

вычисляет выражения;

md5sum

подсчитывает контрольную сумму по алгоритму MD5;

sha1sum

подсчитывает контрольную сумму по алгоритму SHA1;

wc

подсчитывает количество строк, слов и символов в файле;

factor

разлагает числа на простые множители;

Пример 2. Использование команды test для проверки существования файла

if test -e /bin/bash; then echo "bash существует"; else echo "bash не существует, странно"; fi;

Пример 3. Использование команды test для сравнения чисел

if test 5 -gt 7; then echo "5 > 7"; else echo "7 > 5"; fi;

Пример 4. Использование команды wc для подсчёта суммы строк во всех файлах на языке C в текущем каталоге

cat *.[ch] | wc -l

Пример 5. Использование команды date для получения вчерашней даты

date -d yesterday/

Фильтры

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

cat

объединяет файлы и выводит их на стандартный вывод;

tac

объединяет файлы и выводит их на стандартный вывод, начиная с конца;

sort

сортирует строки;

uniq

удаляет дублирующиеся строки из отсортированных файлов;

tr

выполняет транслитерацию, сжатие и/или удаление символов из файла;

cut

вырезает части из каждой строки файла;

csplit

делит файлы на части по шаблону;

expand

преобразует табуляции в пробелы;

unexpand

преобразует пробелы в табуляции;

fmt

форматирует текст по ширине;

fold

переносит слишком длинные текстовые строки на следующую строку;

nl

нумерует строки файла;

od

выводит файл в восьмеричном, шестнадцатеричном и других подобных формах;

tee

читает стандартный вход и выводит и в стандартный выход и в файлы;

Пример 6. Использование команд cat, sort и uniq для получения списка адресов писавших вам людей

 cat *| grep ^From: |sort |uniq

Пример 7. Получение списка слов, содержащихся в тексте с количеством вхождений

 cat big.text.file | tr '[:space:][:punct:]' "\n" |sort |uniq -c |sort -n -r |less

Прочее

head

выводит часть файла заданного размера, начиная с начала;

tail

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

echo

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

false

всегда возвращает код ошибки;

true

всегда возвращает код успеха;

yes

выводит строку (по умолчанию - «yes») бесконечно, пока не прервут.

seq

выводит последовательность номеров;

sleep

создаёт паузу заданной продолжительности (в секундах);

usleep

создаёт паузу заданной продолжительности (в миллисекундах);

comm

построчно сравнивает 2 отсортированных файла;

join

объединяет строки двух файлов по общему полю;

paste

объединяет строки двух файлов по порядку;

split

разбивает файл на части по размеру;

Ну и в завершение:

rpm -ql coreutils | grep man | xargs -n1 basename | sed 's/.1.gz//' | xargs man

Сведения о документе