head -num to to samo co head -n num zamiast head -n -num (gdzie num to dowolna liczba)

Przykład:

$ 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 

To head -1 nie wydaje się być nigdzie udokumentowane.

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

Strona podręcznika dla head (w Fedorze 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) 

Odpowiedź

Strona informacyjna i podręcznik online dla GNU head zawiera tę część:

Dla zgodności head obsługuje również przestarzałą składnię opcji -[NUM][bkm][cqv], która jest rozpoznawana tylko wtedy, gdy zostanie określona jako pierwsza.

Pomysł że head -1 to to samo co head -n 1 to że myślnik nie jest mi znak nus, ale znacznik opcji wiersza poleceń. To zwyczajny zwyczaj: rzeczy zaczynające się od myślników to opcje kontrolujące sposób przetwarzania, inne rzeczy w wierszu poleceń to nazwy plików lub inne rzeczywiste cele do przetworzenia. W tym przypadku nie jest to opcja jednoznakowa, ale skrót dla -n, ale nadal jest to w zasadzie opcja, a nie nazwa pliku. W head +1 lub head 1, +1 lub 1 byłyby jednak traktowane jako nazwy plików.

Podwójny myślnik -- lub --something również ma samo przez się odrębne znaczenie (--) zatrzymuje przetwarzanie opcji, a gdy następuje po nim coś innego, oznacza długą opcję w stylu GNU. Zatem head --1 dla head -n -1 nie „t dopasuj niestandardowe.

Gdybym miał zgadywać, założyłbym, że osobliwy skrót do -n i istnieje dla dodatniego i, ale nie dla negatywów i, ponieważ pierwszy przypadek jest przydatny częściej i łatwiejszy do wdrożenia. (Poza tym standard head jest zdefiniowane tylko dla dodatniej wartości wierszy.)

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *