head -num entspricht head -n num anstelle von head -n -num (wobei num eine beliebige Zahl ist)

Beispiel:

$ echo -e "a\nb\nc\nd"|head -1 a $ echo -e "a\nb\nc\nd"|head -n 1 a $ echo -e "a\nb\nc\nd"|head -n -1 a b c 

Diese head -1 scheint nirgendwo dokumentiert zu sein.

$ head --help

Usage: head [OPTION]... [FILE]... Print the first 10 lines of each FILE to standard output. With more than one FILE, precede each with a header giving the file name. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -c, --bytes=[-]NUM print the first NUM bytes of each file; with the leading "-", print all but the last NUM bytes of each file -n, --lines=[-]NUM print the first NUM lines instead of the first 10; with the leading "-", print all but the last NUM lines of each file -q, --quiet, --silent never print headers giving file names -v, --verbose always print headers giving file names -z, --zero-terminated line delimiter is NUL, not newline --help display this help and exit --version output version information and exit NUM may have a multiplier suffix: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y. GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Full documentation at: <https://www.gnu.org/software/coreutils/head> or available locally via: info "(coreutils) head invocation" 

Manpage für head (auf Fedora 28):

HEAD(1) User Commands HEAD(1) NAME head - output the first part of files SYNOPSIS head [OPTION]... [FILE]... DESCRIPTION Print the first 10 lines of each FILE to standard output. With more than one FILE, precede each with a header giving the file name. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -c, --bytes=[-]NUM print the first NUM bytes of each file; with the leading "-", print all but the last NUM bytes of each file -n, --lines=[-]NUM print the first NUM lines instead of the first 10; with the leading "-", print all but the last NUM lines of each file -q, --quiet, --silent never print headers giving file names -v, --verbose always print headers giving file names -z, --zero-terminated line delimiter is NUL, not newline --help display this help and exit --version output version information and exit NUM may have a multiplier suffix: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y. AUTHOR Written by David MacKenzie and Jim Meyering. REPORTING BUGS GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report head translation bugs to <https://translationproject.org/team/> COPYRIGHT Copyright © 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO tail(1) Full documentation at: <https://www.gnu.org/software/coreutils/head> or available locally via: info "(coreutils) head invocation" GNU coreutils 8.29 December 2017 HEAD(1) 

Antwort

Die Infoseite und das Online-Handbuch für GNU head enthält diesen Teil:

Aus Kompatibilitätsgründen head unterstützt auch eine veraltete Optionssyntax -[NUM][bkm][cqv], die nur erkannt wird, wenn sie zuerst angegeben wird.

Die Idee dass head -1 dasselbe ist wie head -n 1, dass der Bindestrich keine mi ist Nus-Zeichen, aber eine Markierung für eine Befehlszeilenoption. Das ist die übliche Gewohnheit: Dinge, die mit Bindestrichen beginnen, sind Optionen, die die Verarbeitung steuern, andere Dinge in der Befehlszeile sind Dateinamen oder andere tatsächliche Ziele, die verarbeitet werden müssen. In diesem Fall handelt es sich nicht um eine Einzelzeichenoption. aber eine Abkürzung für -n, aber es ist im Grunde immer noch eine Option und kein Dateiname. In head +1 oder head 1, +1 oder 1 werden jedoch als Dateinamen verwendet.

Ein doppelter Strich -- oder --something hat ebenfalls eine eindeutige Bedeutung (--) Es stoppt die Optionsverarbeitung und markiert, wenn es von etwas anderem gefolgt wird, eine lange Option im GNU-Stil. Wenn Sie also head --1 für head -n -1 haben, würde dies nicht der Fall sein passen Sie den Brauch an.

Wenn ich raten würde, würde ich annehmen, dass die kuriose Verknüpfung für -n i für positive i existiert, aber nicht für negative i, da der erstere Fall häufiger und einfacher zu implementieren ist. (Außerdem ist der Standard head ist nur für einen positiven Zeilenwert definiert.)

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.