Текстовые файлы играют важную роль в Linux. Это могут быть различные файлы конфигурации, логи и т.д. И Linux предоставляет инструментарий для работы с текстовыми файлами. Распространенные команды для вывода содержимого файлов:
cat: отображает содержимое файла.
tac: делает то же самое, что и cat, но отображает содержимое в обратном порядке.
tail: показывает только последние строки текстового файла.
head: отображает первые строки файла.
less: открывает расширенную программу просмотра файлов.
more: то же самое, что и less, только с меньшими возможностями.
Например, выведем с помощью команды cat файл /etc/hosts:
eugene@Eugene:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 Eugene # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Команда tac отобразит все строки в обратном порядке:
eugene@Eugene:~$ tac /etc/hosts ff02::2 ip6-allrouters ff02::1 ip6-allnodes ff00::0 ip6-mcastprefix fe00::0 ip6-localnet ::1 ip6-localhost ip6-loopback # The following lines are desirable for IPv6 capable hosts 127.0.1.1 Eugene 127.0.0.1 localhost
Команда tail отображает последние строки файла (по умолчанию 10 последних). Но также ей можно передать конкретное количество строк (с конца). Например, вывелем три последние строки:
eugene@Eugene:~$ tail -3 /etc/hosts ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Команда head аналогична tail
, только отображает первые строки файла (по умолчанию 10 первых). И она также может принимать конкретное количество строк (с конца). Например, вывелем три первых строки:
eugene@Eugene:~$ head -3 /etc/hosts 127.0.0.1 localhost 127.0.1.1 Eugene
Комбинируя команды head
и tail
, можно получить определенную строку или опеределенный набор строк с начала или конца. Например, получим только 2-ю строку:
eugene@Eugene:~$ head -n 2 /etc/hosts | tail -n 1 127.0.1.1 Eugene
В данном случае выражение head -n 2 /etc/hosts
сначала выбирает из файла 2 первых строки. Далее эти 2 строки передаются команде tail -n 1
, которая выбирает из них последнюю
(то есть фактически 2-ю строку).
Команда less открывает файл в специальном окружении, которое напоминает встроенный текстовый редактор vi:
eugene@Eugene:~$ less /etc/hosts 127.0.0.1 localhost 127.0.1.1 Eugene # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters /etc/hosts (END)
Для выхода из окружения просмотра файла нажмем на q.
Стоит отметить, что вывод других команд также по сути представляет собой текст, и этот текст мы также можем обрабатывать с помощью текстовых команд. Например, при выводе списока файлов и каталогов получим только последние 2 строки:
eugene@Eugene:~$ ls -l | tail -n 2 drwxrwxr-x 2 eugene eugene 4096 Mar 9 10:41 Templates drwxrwxr-x 2 eugene eugene 4096 Mar 9 09:49 Videos eugene@Eugene:~$