GNU/Linux >> Znalost Linux >  >> Linux

Ocas a zástupné znaky

Řešení 1:

Věřím, že byste chtěli:

tail -n 10 *-access.log

Pokud jde o proč :
Nemyslím si, že to má nic společného s globbingem:

tail -10 foo-access.log arf-access.log 
tail: option used in invalid context -- 1

Myslím, že se stane, že se váš glob rozšíří do jednoho souboru. Pravděpodobně to má něco společného s některými archaickými možnostmi analýzy, které jsem příliš líný se pokoušet číst, ale pokud to opravdu chcete vědět, podívejte se do tail.c ve zdroji coreutils a rozeberte následující funkci:

parse_obsolete_option (int argc, char * const *argv, uintmax_t *n_units)

Řešení 2:

I když je tato otázka trochu stará, stále je aktuální. Setkal jsem se s podobným problémem

ssh myserver.com 'tail -2 file-header*'

to mi zobrazilo chybu

tail:volba použitá v neplatném kontextu -- 2

nicméně tailing pouze jeden soubor, jako

ssh myserver.com 'tail -2 file-header-file-one'

funguje dobře. Podívejte se na zdroj tail.c ukazuje tento ocas začíná analýzou zastaralé možnosti, poté analyzovat zbytek (tj. možnosti ještě nezpracované), běžné možnosti. Nicméně parse_obsolete_option() očekává "zastaralé" použití s ​​pouze jedním souborem jako argumentem.
Takže při poskytnutí více souborů se funkce okamžitě vrátí a nechá běžný analyzátor, aby se udusil -2 (očekává se -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;

Na závěr je lepší vždy používat -n běžná forma s vědomím, že "zastaralý" kód přijímá pouze jeden soubor.


Linux
  1. [Průvodce] příkazy apt vs apt-get a který z nich použít?

  2. Kódovat obsah souboru a echovat jej jako jeden řádek?

  3. Grep And Tail -f?

  1. Vztah mezi řídicími znaky, signály a terminálem?

  2. unix - hlava A konec souboru

  3. linuxové použití zástupných znaků v cp a mv

  1. Příkazy hlavy a ocasu v Linuxu vysvětleny s příklady

  2. Co je TAM a proč byste jím mohli chtít být?

  3. Vyvolání a sledování využití paměti jedním procesem