Website-Suche

Verwalten Sie Dateien effektiv mit den Befehlen head, tail und cat unter Linux


Es gibt mehrere Befehle und Programme, die Linux zum Anzeigen des Dateiinhalts bereitstellt. Die Arbeit mit Dateien ist eine der entmutigendsten Aufgaben, die die meisten Computerbenutzer, egal ob Neuling, normaler Benutzer, fortgeschrittener Benutzer, Entwickler, Administrator usw., ausführen. Effektives und effizientes Arbeiten mit Dateien ist eine Kunst.

Heute werden wir in diesem Artikel die beliebtesten Befehle namens head, tail und cat besprechen. Die meisten von uns kennen solche Befehle bereits. Aber nur sehr wenige von uns setzen es bei Bedarf um.

1. Oberbefehlshaber

Der Befehl head liest die ersten zehn Zeilen eines beliebigen Dateinamens. Die grundlegende Syntax des Head-Befehls lautet:

head [options] [file(s)]

Der folgende Befehl zeigt beispielsweise die ersten zehn Zeilen der Datei mit dem Namen „/etc/passwd“ an.

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

Wenn mehr als eine Datei angegeben ist, zeigt head die ersten zehn Zeilen jeder Datei separat an. Der folgende Befehl zeigt beispielsweise zehn Zeilen jeder Datei an.

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:::

Wenn mehr Zeilen als die standardmäßigen zehn Zeilen abgerufen werden sollen, wird die Option „-n“ zusammen mit einer Ganzzahl verwendet, die die Anzahl der abzurufenden Zeilen angibt. Der folgende Befehl zeigt beispielsweise die ersten 5 Zeilen der Datei „/var/log/yum.log“ an.

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

Tatsächlich besteht keine Notwendigkeit, die Option „-n“ zu verwenden. Geben Sie einfach den Bindestrich ein und geben Sie die Ganzzahl ohne Leerzeichen an, um das gleiche Ergebnis wie beim obigen Befehl zu erhalten.

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

Der Head-Befehl kann auch jede gewünschte Anzahl von Bytes anzeigen, indem er die Option „-c“ gefolgt von der Anzahl der anzuzeigenden Bytes verwendet. Der folgende Befehl zeigt beispielsweise die ersten 45 Bytes einer bestimmten Datei an.

head -c45 /var/log/yum.log

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

2. Schwanzbefehl

Mit dem Befehl tail können Sie die letzten zehn Zeilen einer beliebigen Textdatei anzeigen. Ähnlich wie der Head-Befehl oben unterstützt auch der Tail-Befehl die Optionen „n“ Anzahl Zeilen und „n“ Anzahl Zeichen.

Die grundlegende Syntax des Tail-Befehls lautet:

tail [options] [filenames]

Der folgende Befehl druckt beispielsweise die letzten zehn Zeilen einer Datei namens „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

Wenn mehr als eine Datei bereitgestellt wird, druckt tail die letzten zehn Zeilen jeder Datei wie unten gezeigt.

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

Ebenso können Sie die letzten paar Zeilen auch mit der Option „-n“ drucken, wie unten gezeigt.

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

Sie können die Anzahl der Zeichen auch mit dem Argument „-c“ drucken, wie unten gezeigt.

tail -c5 access.log

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

3. Katzenbefehl

Der Befehl „cat“ ist das am weitesten verbreitete, universelle Werkzeug. Es kopiert die Standardeingabe in die Standardausgabe. Der Befehl unterstützt das Scrollen, wenn die Textdatei nicht auf den aktuellen Bildschirm passt.

Die grundlegende Syntax des Befehls cat lautet:

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

Die häufigste Verwendung von cat besteht darin, den Inhalt von Dateien zu lesen. Um eine Datei zum Lesen zu öffnen, müssen Sie lediglich cat gefolgt von einem Leerzeichen und dem Dateinamen eingeben.

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 
…

Der Befehl cat wird auch zum Verketten mehrerer Dateien verwendet.

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 

Es kann auch zum Erstellen von Dateien verwendet werden. Dies wird erreicht, indem cat gefolgt vom Ausgabeumleitungsoperator und dem zu erstellenden Dateinamen ausgeführt wird.

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Wir können einen benutzerdefinierten End-Maker für den Befehl „cat“ haben. Hier wird es umgesetzt.

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

Unterschätzen Sie niemals die Leistungsfähigkeit des Befehls „cat“, der beim Kopieren von Dateien nützlich sein kann.

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

Was ist nun das Gegenteil von Katze? Ja, es ist „tac“. „tac“ ist ein Befehl unter Linux. Es ist besser, ein Beispiel für „Tac“ zu zeigen, als darüber zu reden.

Erstellen Sie eine Textdatei mit den Namen aller Monate, sodass in einer Zeile ein Wort erscheint.

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

Weitere Beispiele für die Verwendung von Cat-Befehlen finden Sie unter 13 Verwendung von Cat-Befehlen

Das ist alles für den Moment. Ich werde wieder hier sein und einen weiteren interessanten und wissenswerten Artikel veröffentlichen. Bleiben Sie bis dahin auf dem Laufenden und bleiben Sie mit Tecmint in Verbindung. Vergessen Sie nicht, uns Ihr wertvolles Feedback in unserem Kommentarbereich mitzuteilen.