head -num este același lucru cu head -n num în loc de head -n -num (unde num este orice număr)

Exemplu:

$ 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 

Acest head -1 nu pare să fie documentat oriunde.

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

Pagina manuală pentru head (pe 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) 

Răspuns

Pagina cu informații și manualul online pentru GNU head conține această parte:

Pentru compatibilitate head acceptă, de asemenea, o sintaxă a opțiunii învechite -[NUM][bkm][cqv], care este recunoscută numai dacă este specificată mai întâi.

Ideea că head -1 este același lucru cu head -n 1 este că liniuța nu este o mi semn nus, dar un marker pentru o opțiune de linie de comandă. Acesta este obiceiul obișnuit: lucrurile care încep cu liniuțe sunt opțiuni care controlează modul de procesare, alte lucruri din linia de comandă sunt nume de fișiere sau alte ținte reale de procesat. În acest caz, nu este o opțiune cu un singur caracter, dar o prescurtare pentru -n, dar este în continuare o opțiune și nu un nume de fișier. În head +1 sau head 1, +1 sau 1 ar fi totuși luate ca nume de fișiere.

O liniuță dublă -- sau --something are, de asemenea, o semnificație distinctă (--) oprește procesarea opțiunilor și, atunci când este urmat de altceva, marchează o opțiune lungă în stil GNU. Deci, având head --1 pentru head -n -1 se potrivește cu obiceiul.

Dacă ar fi să ghicesc, aș presupune că scurtătura ciudată pentru -n i există pentru i pozitiv, dar nu pentru i negativ, deoarece primul caz este util mai des și mai ușor de implementat. (În plus, standardul standard head este definit doar pentru o valoare pozitivă a liniilor.)

Comentarii

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *