GNU/Linux >> Znalost Linux >  >> Linux

Příkaz linuxové hlavy s příklady

Příkaz head se používá k tisku prvních několika řádků textového souboru. Ve výchozím nastavení příkaz head vytiskne prvních 10 řádků každého souboru na standardní výstup, což je obrazovka. Lze jej použít s jinými příkazy k poskytnutí konkrétnějších výsledků ze systému.

V předchozím článku jsme se naučili používat příkaz ocas a jeho různé možnosti. V tomto článku se naučíme, jak používat příkaz linuxový head ke čtení prvních několika řádků libovolného textového souboru, a to jsou nejběžnější možnosti.

1) Použití hlavy se standardním vstupem

Není-li zadán žádný soubor nebo je-li soubor zadán jako -, příkaz head čte ze standardního vstupního proudu (stdin), nikoli ze souboru. To znamená, že vrátí vše napsané z klávesnice. V tomto příkladu zadám slova a pak hlava zobrazí, co jsem napsal. Po zadání ukončím stisknutím CTRL + C.

$ head -
this
this
is
is
an
an
example
example
of
of
head
head
with no file specified 
with no file specified

2) Zobrazení prvních 10 řádků souboru

Zadáním názvu souboru s hlavičkou se vytiskne prvních 10 řádků.

$ 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) Zobrazení prvních N řádků souboru

Můžete zadat přesný počet řádků, které se mají zobrazit, kromě prvních 10. To lze provést pomocí -n  nebo --lines přepínač a poté počet řádků, které chcete vytisknout.

$ 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) Zobrazení více souborů

Pokud je jako argument zadáno více souborů, zobrazí se prvních 10 řádků a před každým se objeví záhlaví s názvem souboru.

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

Pokud nechcete tisknout záhlaví, můžete použít -q , --quite , nebo --silent přepínače.

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

Chcete-li vždy tisknout záhlaví, můžete ponechat název souboru tak, jak je, nebo použít -v nebo --verbose přepínač.

Chcete-li zobrazit prvních N řádků několika souborů, můžete použít příkaz níže.

$ 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

Zástupný znak * můžete použít k tisku řádků každého souboru, jehož název končí určitou příponou.

$ 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]

# Konfigurace pro getaddrinfo(3).## Toto je výchozí konfigurace pro hdparm pro Debian. Je to # Řádek "objednávka" je používán pouze starými verzemi knihovny C.## Správa bitových kopií jádra přepíše#include /etc/ld.so.conf.d/*.confdefault_driver=pulse# Toto je konfigurační soubor pro laditelné libaudit.

5) Tisk posledních N bajtů souboru

Chcete-li vytisknout posledních N bajtů souboru, měli byste použít -c nebo --bytes přepínač následovaný počtem bajtů. Tím se vytiskne prvních 50 bajtů souboru. Můžete také použít

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

Chcete-li zobrazit jinou velikost než bajty, např. kilobajty, můžete zadat kB , MB , M , atd

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

Případně můžete použít -c +N pro výstup bajtů začínajících N-tou každého souboru

$ head -c +50 /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:sy

K odstranění posledních N řádků a vytištění všeho ostatního použijeme příkaz:

$ head -n -20 /var/log/syslog

6) Použití hlavy s trubkami

Příkaz head lze přenést do nebo z jiných příkazů. Tento příkaz vypíše obsah souboru protokolu, převede jej do záhlaví, aby se zobrazilo prvních 5 řádků se záhlavím, a poté příkaz sort zobrazí výsledky v opačném pořadí.

$ 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

Následující příklad vytiskne část souboru bootstrap.log, tj. od 10. řádku do 20. řádku. To znamená -n20  přepínač vytiskne prvních 20 řádků, zatímco -n10 přepínač vytiskne posledních 10 z počátečních 20 řádků.

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

Nyní byste měli pochopit, jak funguje příkaz head a jeho argumenty při zobrazení prvních několika řádků souboru. Funguje přesně opačně než ocas a lze jej použít i s jinými příkazy pomocí potrubí. Další informace naleznete na manuálových stránkách příkazu head.

Přečtěte si také:

  • Příkaz Linux more s příklady

Linux
  1. wc Linux Command s příklady

  2. Linux Tee Command s příklady

  3. JQ Command v Linuxu s příklady

  1. Linux řazení příkazů s příklady

  2. Echo Command v Linuxu (s příklady)

  3. man Command v Linuxu s příklady

  1. Příkaz AWK v Linuxu s příklady

  2. 8 Příklady příkazů hlavy v Linuxu

  3. Curl Command v Linuxu s příklady