GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schwanz- und Platzhalterzeichen

Lösung 1:

Ich glaube, Sie möchten:

tail -n 10 *-access.log

Zum warum :
Ich glaube nicht, dass es etwas mit Globbing zu tun hat:

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

Ich denke, es passiert einfach so, dass Ihr Glob zu einer Datei erweitert wird. Es hat wahrscheinlich etwas mit einigen archaischen Parsing-Optionen zu tun, die ich zu faul bin, um sie zu lesen, aber wenn Sie es wirklich wissen wollen, schauen Sie in tail.c nach in der Coreutils-Quelle und sezieren Sie die folgende Funktion:

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

Lösung 2:

Die Frage ist zwar schon etwas älter, aber immer noch aktuell. Ich bin auf ein ähnliches Problem gestoßen

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

das gab mir den Fehler

tail:Option in ungültigem Kontext verwendet -- 2

jedoch Tailing nur eine Datei, wie

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

funktioniert gut. Betrachten Sie die Quelle tail.c zeigt diesen Schwanz beginnt mit dem Parsen von veraltet Optionen, dann analysieren Sie den Rest (d.h. noch nicht verarbeitete Optionen), reguläre Optionen. Jedoch parse_obsolete_option() erwartet eine "veraltete" Verwendung, mit nur einer Datei als Argument.
Wenn also mehr Dateien bereitgestellt werden, kehrt die Funktion sofort zurück und lässt den regulären Parser an -2 ersticken (erwartet -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;

Zusammenfassend ist es besser, immer den -n zu verwenden reguläre Form, wohl wissend, dass der "veraltete" Code nur eine Datei akzeptiert.


Linux
  1. Head- und Tail-Befehle in Linux mit Beispielen erklärt

  2. Dateiinhalt kodieren und als eine Zeile wiedergeben?

  3. Beziehungen zwischen Steuerzeichen, Signalen und Terminal?

  4. Probleme mit Ubuntu 16.04 und AMDGPU?

  5. Upterm – Eine IDE und ein Terminal-Emulator in einer App

Wc-Befehl in Linux (Anzahl der Zeilen, Wörter und Zeichen zählen)

[Bash-Tipps] How To cd und ls in einem Befehl

[Bash-Tipps] Wie cp oder mv und cd in einem Befehl ausgeführt werden

Was ist ein Homelab und warum sollten Sie eines haben?

Platzhalter-Subdomains und DNS

Abrufen der Zeichen  und â in der Linux PuTTY-Konsole