head -num è uguale a head -n num invece di head -n -num (dove num è un numero qualsiasi)

Esempio:

$ 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 

Questo head -1 non sembra essere documentato da nessuna parte.

$ 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 man per head (su 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) 

Rispondi

La pagina delle informazioni e il manuale in linea per GNU head contiene questa parte:

Per compatibilità head supporta anche una sintassi dellopzione obsoleta -[NUM][bkm][cqv], che viene riconosciuta solo se specificata per prima.

Lidea che head -1 è uguale a head -n 1 è che il trattino non è un mi segno nus, ma un indicatore per unopzione della riga di comando. Questa è la solita abitudine: le cose che iniziano con i trattini sono opzioni che controllano come eseguire lelaborazione, altre cose nella riga di comando sono nomi di file o altri obiettivi effettivi da elaborare. In questo caso, non è unopzione di un solo carattere, ma una scorciatoia per -n, ma è ancora fondamentalmente unopzione e non un nome di file. In head +1 o head 1, i nomi di file +1 o 1 verranno tuttavia presi come nomi di file.

Anche un doppio trattino -- o --something ha un significato distinto (--) interrompe lelaborazione delle opzioni e, quando seguito da qualcosaltro, contrassegna unopzione lunga in stile GNU. Quindi, avere head --1 per head -n -1 non lo farebbe “t abbinare lusanza.

Se dovessi indovinare, presumo che la caratteristica scorciatoia per -n i esista per i positivo ma non per i negativo poiché il primo caso è utile più spesso e più facile da implementare (inoltre, lo standard head è definito solo per un valore di righe positivo.)

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *