Der Head-Befehl wird verwendet, um die ersten paar Zeilen einer Textdatei zu drucken. Standardmäßig gibt der Befehl head die ersten 10 Zeilen jeder Datei auf der Standardausgabe aus, die der Anzeigebildschirm ist. Es kann mit anderen Befehlen verwendet werden, um spezifischere und Ergebnisse aus dem System bereitzustellen.
In einem früheren Artikel haben wir gelernt, wie man den tail-Befehl und seine verschiedenen Optionen verwendet. In diesem Artikel lernen wir, wie man den Linux-Head-Befehl verwendet, um die ersten paar Zeilen einer Textdatei zu lesen, und die gebräuchlichsten Optionen.
1) Kopf mit Standardeingabe verwenden
Wenn keine Datei angegeben ist oder wenn die Datei als - angegeben ist, liest der Head-Befehl aus dem Standardeingabestream (stdin) und nicht aus einer Datei. Dies bedeutet, dass alles, was Sie über Ihre Tastatur eingegeben haben, zurückgeworfen wird. In diesem Beispiel gebe ich Wörter ein und dann zeigt head an, was ich eingegeben habe. Nach der Eingabe drücke ich STRG + C, um zu beenden.
$ head -
this
this
is
is
an
an
example
example
of
of
head
head
with no file specified
with no file specified
2) Anzeigen der ersten 10 Zeilen einer Datei
Die Angabe eines Dateinamens mit Kopf gibt die ersten 10 Zeilen aus.
$ head /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
3) Anzeigen der ersten N Zeilen einer Datei
Sie können die genaue Anzahl der anzuzeigenden Zeilen außer den ersten 10 angeben. Sie können dies tun, indem Sie -n
verwenden oder --lines
wechseln und dann die Anzahl der Zeilen, die Sie drucken möchten.
$ head -n11 /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
4) Mehrere Dateien anzeigen
Wenn mehrere Dateien als Argument angegeben werden, werden die ersten 10 Zeilen angezeigt und jeder wird eine Kopfzeile vorangestellt, die den Namen der Datei anzeigt.
$ head /etc/crontab /etc/group
==> /etc/crontab <==
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
==> /etc/group <==
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,eyramm
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
Wenn Sie keine Kopfzeilen drucken möchten, können Sie das -q
verwenden , --quite
, oder --silent
Schalter.
$ head --silent /etc/crontab /etc/group
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,eyramm
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
Um Kopfzeilen immer zu drucken, können Sie den Dateinamen unverändert lassen oder den -v
verwenden oder --verbose
wechseln.
Um die ersten N Zeilen mehrerer Dateien anzuzeigen, können Sie den folgenden Befehl verwenden.
$ head -3 /etc/group /etc/fuse.conf /etc/passwd
==> /etc/group <==
root:x:0:
daemon:x:1:
bin:x:2:
==> /etc/fuse.conf <==
# /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE)
# Set the maximum number of FUSE mounts allowed to non-root users.
==> /etc/passwd <==
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
Sie können den Platzhalter * verwenden, um Zeilen jeder Datei auszugeben, deren Name mit einer bestimmten Erweiterung endet.
$ head -1 -q /etc/*.conf
# /etc/adduser.conf: `adduser' configuration.
# this file sets defaults for apg if apg is called without parameters
#
# Documents/brltty.conf. Generated from brltty.conf.in by configure.
# This file lists certificates that you wish to use or to ignore to be
# This is the main config file for debconf. It tells debconf where to
# /etc/deluser.conf: `deluser' configuration.
# /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE)
[fwupd]
# Konfiguration für getaddrinfo(3).## Dies ist die Standardkonfiguration für hdparm für Debian. Es ist ein # Die "order"-Zeile wird nur von alten Versionen der C-Bibliothek verwendet für libaudit Tunables.
5) Drucken der letzten N Bytes einer Datei
Um die letzten N Bytes einer Datei zu drucken, sollten Sie den -c
verwenden oder --bytes
switch gefolgt von der Anzahl der Bytes. Dies druckt die ersten 50 Bytes der Datei. Sie können auch
$ head -c 70 /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,eyramm
tty:x:5:
Um eine andere Größe als Byte anzuzeigen, z. B. Kilobyte, können Sie kB
angeben , MB
, M
, usw.
$ head -c 2kB /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,eyramm
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
Alternativ können Sie -c +N
verwenden um Bytes auszugeben, die mit dem N-ten jeder Datei beginnen
$ head -c +50 /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:sy
Um die letzten N Zeilen zu entfernen und alles andere auszugeben, verwenden wir den Befehl:
$ head -n -20 /var/log/syslog
6) Kopf mit Rohren verwenden
Der Head-Befehl kann zu oder von anderen Befehlen geleitet werden. Dieser Befehl listet den Inhalt einer Protokolldatei auf, leitet ihn an head weiter, um die ersten 5 Zeilen mit einem Header anzuzeigen, und dann zeigt der sort-Befehl die Ergebnisse in umgekehrter Reihenfolge an.
$ cat /var/log/dpkg.log | head -n 5 -v | sort -r
==> standard input <==
2017-02-15 20:18:59 status unpacked base-passwd:amd64 3.5.39
2017-02-15 20:18:59 status unpacked base-passwd:amd64 3.5.39
2017-02-15 20:18:59 status half-installed base-passwd:amd64 3.5.39
2017-02-15 20:18:59 startup archives install
2017-02-15 20:18:59 install base-passwd:amd64 <none> 3.5.39
Das folgende Beispiel gibt einen Teil der Datei bootstrap.log aus, d. h. von der 10. bis zur 20. Zeile. Das bedeutet -n20
switch druckt die ersten 20 Zeilen, während -n10
switch gibt die letzten 10 der ersten 20 Zeilen aus.
$ head -n20 /var/log/bootstrap.log | tail -n 10
dpkg: warning: parsing file '/var/lib/dpkg/status' near line 4 package 'dpkg':
missing maintainer
dpkg: warning: parsing file '/var/lib/dpkg/status' near line 4 package 'dpkg':
missing architecture
Selecting previously unselected package base-passwd.
(Reading database ... 0 files and directories currently installed.)
Preparing to unpack .../base-passwd_3.5.39_amd64.deb ...
Unpacking base-passwd (3.5.39) ...
dpkg: base-passwd: dependency problems, but configuring anyway as you requested:
base-passwd depends on libc6 (>= 2.8); however:
Sie sollten jetzt verstehen, wie der Befehl head und seine Argumente bei der Anzeige der ersten paar Zeilen einer Datei funktionieren. Es funktioniert genau umgekehrt wie tail und kann mit Pipes auch mit anderen Befehlen verwendet werden. Weitere Informationen finden Sie in den Manpages des Head-Befehls.
Lesen Sie auch:
- Linux more Befehl mit Beispielen erklärt