was macht tail + number? Was ist mit dem Kopf?

1417
Andrei Chikatilo

Ich habe diesen Befehl gerade angerufen ls -l | tail +3. Ls -s erzeugt zunächst drei Zeilen, wobei zuerst die ersten Streifen hinzugefügt werden, und druckt dann die Dateinamen in einer separaten Zeile. Wie macht es das? Es macht keinen Sinn.

Ich dachte auch, dass der Dateiname der letzten 10 Zeilen angezeigt wird. Wie spielt + (und minus) diese Gleichung?

Gleiches über den Kopf? Wie funktioniert es?

0
Was sagt Ihre "Mann" -Seite? Wenn Sie "man tail" eingeben, welche Antwort erhalten Sie? Welchen Teil davon brauchen Sie, um Verständnis zu haben? vor 14 Jahren 10

3 Antworten auf die Frage

6
Carl Norum

Aus der tail Manpage :

Das Tail- Dienstprogramm zeigt den Inhalt der Datei oder standardmäßig die Standardeingabe der Standardausgabe an.

Die Anzeige beginnt an einer Byte-, Zeilen- oder 512-Byte-Blockstelle im Eingang. Zahlen mit einem führenden Pluszeichen ("+") beziehen sich auf den Beginn der Eingabe. Beispielsweise startet "-c +2" die Anzeige am zweiten Byte der Eingabe. Zahlen mit einem führenden Minuszeichen ("-") oder keinem expliziten Vorzeichen beziehen sich auf das Ende der Eingabe. Beispielsweise zeigt "-n 2" die letzten beiden Zeilen der Eingabe an. Die Standardstartposition ist "-n 10" oder die letzten 10 Zeilen der Eingabe.

In Ihrem Fall bedeutet tail +3(das -nist impliziert), dass Sie in der dritten Zeile der Eingabe ( ls -l) beginnen und den Rest drucken. Zum Beispiel:

ls -l Ausgabe:

total 0 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file1 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file2 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file3 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file4 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file5 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file6 

ls -l | tail +3 Ausgabe:

-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file2 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file3 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file4 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file5 -rw-r--r-- 1 carl staff 0 Oct 28 13:18 file6 

Gleiche Ausgabe, nur mit den ersten paar Zeilen.

4
Alexander Torstling

Aus der Manpage:

Wenn das erste Zeichen von N (die Anzahl der Bytes oder Zeilen) ein "+" ist, drucken Sie mit dem N-ten Element ab dem Beginn jeder Datei, andernfalls die letzten N-Elemente in der Datei. N kann einen Multiplikator-Suffix haben: b 512, k 1024, m 1024 * 1024.

Von Carl geschlagen, aber mochte die Formulierung in meiner Manpage besser, also beließ es so wie es ist. vor 14 Jahren 0
2
Jonathan Leffler

Beantwortung:

Ls -s erzeugt zunächst drei Zeilen, wobei zuerst die ersten Streifen hinzugefügt werden, und druckt dann die Dateinamen in einer separaten Zeile. Wie macht es das? Es macht keinen Sinn.

Die Antwort ist, dass der lsBefehl seine Standardausgabe betrachtet und prüft, ob er mit einem tty verbunden ist. Wenn ja, wird es für Anzeigezwecke formatiert. Ist dies nicht der Fall (die Ausgabe ist beispielsweise eine Datei oder Pipe), wird ein Eintrag pro Zeile gedruckt.

  • Die Option ' -C' erzwingt die Ausgabe in mehreren Spalten (als würde sie zu einem Terminal gehen).
  • Die Option ' -1' erzwingt eine einspaltige Ausgabe (als würde sie zu einer Pipe gehen).