head -num
es lo mismo que head -n num
en lugar de head -n -num
(donde num
es cualquier número)
Ejemplo:
$ 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
Este head -1
no parece estar documentado en ninguna 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"
Página de manual para head
(en 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)
Responder
La página de información y el manual en línea para GNU head
contiene esta parte:
Para compatibilidad
head
también admite una sintaxis de opción obsoleta-[NUM][bkm][cqv]
, que solo se reconoce si se especifica primero.
La idea que head -1
es lo mismo que head -n 1
es que el guión no es mi nus, pero un marcador para una opción de línea de comando. Esa es la costumbre habitual: las cosas que comienzan con guiones son opciones que controlan cómo hacer el procesamiento, otras cosas en la línea de comandos son nombres de archivos u otros objetivos reales para procesar. En este caso, no es una opción de un solo carácter, pero una abreviatura de -n
, pero sigue siendo básicamente una opción, y no un nombre de archivo. En head +1
o head 1
, sin embargo, +1
o 1
se tomarían como nombres de archivo.
Un guión doble --
o --something
también tiene un significado distinto, por sí mismo (--
) detiene el procesamiento de opciones y, cuando va seguido de algo más, marca una opción larga de estilo GNU. Por lo tanto, tener head --1
para head -n -1
no sería «t coincidir con la costumbre.
Si tuviera que adivinar, asumiría que el pintoresco atajo para -n i
existe para i
positivo pero no para i
negativos, ya que el primer caso es más útil y más fácil de implementar. (Además, el estándar head
solo se define para un valor positivo de líneas.)
Comentarios
- Ver también el manual original de UNIX página: schillix.sourceforge.net/man/man1/head.1.html