Solución 1:
Creo que le gustaría:
tail -n 10 *-access.log
En cuanto a por qué :
No creo que tenga nada que ver con globbing:
tail -10 foo-access.log arf-access.log
tail: option used in invalid context -- 1
Creo que sucede que tu globo se expande a un archivo. Probablemente tenga algo que ver con el análisis de algunas opciones arcaicas que soy demasiado perezoso para tratar de leer, pero si realmente quieres saberlo, busca en tail.c
en la fuente de coreutils y diseccione la siguiente función:
parse_obsolete_option (int argc, char * const *argv, uintmax_t *n_units)
Solución 2:
Si bien es un poco antigua, la pregunta sigue siendo relevante. Me encontré con un problema similar
ssh myserver.com 'tail -2 file-header*'
eso me dio el error
cola:opción utilizada en contexto inválido -- 2
sin embargo, seguimiento solo un archivo, como
ssh myserver.com 'tail -2 file-header-file-one'
funciona bien. Mirando la fuente tail.c muestra esa cola comienza analizando obsoleto options, luego analice el resto (es decir, las opciones que aún no se han procesado), las opciones normales. Sin embargo, parse_obsolete_option()
espera un uso "obsoleto", con un solo archivo como argumento.
Entonces, al proporcionar más archivos, la función regresa de inmediato y deja que el analizador regular se ahogue con -2
(esperando -n 2
).
/* With the obsolete form, there is one option string and at most
one file argument. Watch out for "-" and "--", though. */
if (! (argc == 2
|| (argc == 3 && ! (argv[2][0] == '-' && argv[2][1]))
|| (3 <= argc && argc <= 4 && STREQ (argv[2], "--"))))
return false;
En conclusión, es mejor usar siempre el -n
forma regular, sabiendo que el código "obsoleto" solo acepta un archivo.