Поиск по сайту:

Эффективно управляйте файлами с помощью команд head, Tail и Cat в Linux


В Linux имеется несколько команд и программ для просмотра содержимого файла. Работа с файлами — одна из сложных задач, которую выполняет большинство пользователей компьютеров, будь то новичок, обычный пользователь, опытный пользователь, разработчик, администратор и т. д. Эффективная и результативная работа с файлами – это искусство.

Сегодня в этой статье мы обсудим самые популярные команды: head, tail и cat, большинство из нас уже знают о таких командах. но очень немногие из нас реализуют это, когда это необходимо.

1. руководитель команды

Команда head считывает первые десять строк любого имени файла. Основной синтаксис команды head:

head [options] [file(s)]

Например, следующая команда отобразит первые десять строк файла с именем «/etc/passwd».

head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

Если указано более одного файла, head покажет первые десять строк каждого файла отдельно. Например, следующая команда покажет десять строк каждого файла.

head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

Если требуется получить большее количество строк, чем десять по умолчанию, тогда используется опция «-n» вместе с целым числом, указывающим количество извлекаемых строк. Например, следующая команда отобразит первые 5 строк из файла «/var/log/yum.log».

head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

На самом деле нет необходимости использовать опцию «-n». Просто поставьте дефис и укажите целое число без пробелов, чтобы получить тот же результат, что и приведенная выше команда.

head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

Команда head также может отображать любое желаемое количество байтов, используя параметр «-c», за которым следует количество отображаемых байтов. Например, следующая команда отобразит первые 45 байт данного файла.

head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. Команда хвоста

Команда Tail позволяет отображать последние десять строк любого текстового файла. Подобно команде head, приведенной выше, команда Tail также поддерживает параметры  «n» количества строк и «n» количества символов.

Основной синтаксис команды Tail:

tail [options] [filenames]

Например, следующая команда напечатает последние десять строк файла с именем «access.log».

tail access.log 

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 
1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Если предоставлено более одного файла, Tail напечатает последние десять строк каждого файла, как показано ниже.

tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

Аналогичным образом вы также можете распечатать последние несколько строк, используя опцию «-n», как показано ниже.

tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Вы также можете распечатать количество символов, используя аргумент «-c», как показано ниже.

tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. Команда кошки

Команда «cat» является наиболее широко используемым универсальным инструментом. Он копирует стандартный ввод в стандартный вывод. Команда поддерживает прокрутку, если текстовый файл не помещается на текущий экран.

Основной синтаксис команды cat:

cat [options] [filenames] [-] [filenames]

Чаще всего cat используется для чтения содержимого файлов. Все, что требуется, чтобы открыть файл для чтения, — это ввести cat, а затем пробел и имя файла.

cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
…

Команда cat также используется для объединения нескольких файлов.

echo 'Hi Tecmint-Team' > 1 
echo 'Keep connected' > 2 
echo 'Share your thought' > 3 
echo 'connect us [email ' > 4
cat 1 2 3 4 > 5
cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email 

Его также можно использовать для создания файлов. Это достигается путем выполнения команды cat, за которой следует оператор перенаправления вывода и имя создаваемого файла.

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

У нас может быть собственный создатель концов для команды «кошка». Вот это реализовано.

cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

Никогда не недооценивайте силу команды «cat», она может быть полезна для копирования файлов.

cat avi.txt

I am a Programmer by birth and Admin by profession
cat avi.txt > avi1.txt
cat avi1.txt

I am a Programmer by birth and Admin by profession

А что противопоставляется кошке? Да, это «tac». «tac» — это команда в Linux. Лучше показать пример «тактичности», чем говорить о нем что-либо.

Создайте текстовый файл с названиями всех месяцев так, чтобы в строке появлялось одно слово.

cat month

January
February
March
April
May
June
July
August
September
October
November
December
tac month

December
November
October
September
August
July
June
May
April
March
February
January

Дополнительные примеры использования команды cat см. в разделе 13 Использование команды cat.

Это все на данный момент. Я буду здесь снова с еще одной интересной статьей, которую стоит знать. А до тех пор следите за обновлениями и подключайтесь к Tecmint. Не забудьте оставить нам свой ценный отзыв в разделе комментариев.