was macht tail + number Was ist mit Kopf


0

Ich habe gerade diesen Befehl aufgerufen ls -l | tail +3. Erstens erzeugt ls -s 3 Zeilen, fügt in der ersten Zeile Piping Strips hinzu und druckt dann jeden Dateinamen in eine separate Zeile. Wie macht es das? Das ergibt keinen Sinn.

Außerdem dachte ich, dass der Schwanzdateiname die letzten 10 Zeilen anzeigt. Wie geht das? + (und minus) spielt in diese Gleichung?

Gleiches über den Kopf? Wie funktioniert es?


10
Was macht dein man Seite sagen? Wenn Sie tippen man tail, welche antwort bekommst du Welchen Teil davon brauchen Sie zum Verständnis?

Antworten:


6

Von dem tail Manpage :

Das Schwanz Dienstprogramm zeigt den Inhalt von Datei oder standardmäßig seine Standardeingabe an die Standardausgabe.

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

Also in deinem Fall, tail +3 (das -n ist impliziert) bedeutet Start in der 3. Zeile der Eingabe ( ls -l ) und drucke den Rest aus. 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 Zeilen entfernt.


4

Aus der Manpage:

Wenn das erste Zeichen von N (die Anzahl der Bytes oder Zeilen) ein "+" ist,          Druckbeginn mit dem N-ten Punkt vom Anfang jeder Datei an,          In diesem Fall drucken Sie die letzten N Elemente in der Datei. N kann einen Multiplikator haben,          Fix: b 512, k 1024, m 1024 · 1024.


Von Carl geschlagen, aber die Formulierung in meiner Manpage hat mir besser gefallen, also lass es wie es ist.

2

Beantwortung:

Erstens erzeugt ls -s 3 Zeilen, fügt in der ersten Zeile Piping Strips hinzu und druckt dann jeden Dateinamen in eine separate Zeile. Wie macht es das? Das ergibt keinen Sinn.

Die Antwort ist, dass die ls befehle prüft anhand der Standardausgabe, ob eine Verbindung zu einem tty besteht. Wenn ja, wird es zu Anzeigezwecken formatiert. Ist dies nicht der Fall (die Ausgabe ist beispielsweise eine Datei oder eine Pipe), wird ein Eintrag pro Zeile gedruckt.

  • Die Option ' -C 'erzwingt mehrspaltige Ausgabe (als würde man zu einem Terminal gehen).
  • Die Option ' -1 'erzwingt eine einspaltige Ausgabe (als würde man zu einer Pipe gehen).
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.