Ich habe mich gefragt, ob es möglich wäre, eigene Befehle über den less
Befehl auszuführen. Damit meine ich, dass ich eine Datei öffnen less
und dann einen meiner Befehle über das ausführen kann, was ich sehe (oder sogar über die ganze Datei, falls nötig), während der Bildschirm so bleibt, wie er ist. Ich möchte zum Beispiel verschiedene Skripte ausführen können, die das, was ich gerade sehe, auf unterschiedliche Weise einfärben oder bestimmte Zeilen in der Datei ein-/ausblenden.
Ich weiß, dass ich jedes Mal einen anderen Durchlauf machen kann, cat <file> | my-script | less -R
aber das gibt mir nicht die Editor-Erfahrung, die less
es bietet.
Antwort1
|
Sie können den Befehl in Less verwenden, um die Datei durch ein anderes Programm zu leiten.
- Drücken Sie
|
. - Geben Sie einen Markierungsbuchstaben oder
^
oder$
oder ein.
. - Geben Sie den auszuführenden Shell-Befehl ein.
- Drücken Sie Enter.
Nur der Teil der Datei zwischen der aktuellen Position und der Markierung wird weitergeleitet. Die Markierung kann entweder ^
oder sein $
, was jeweils den Anfang und das Ende der Datei bedeutet, oder eine mit dem m
Befehl definierte Position. Die aktuelle Position ist die Zeile am Bildschirmrand, wenn sich die Markierung davor befindet, und andernfalls die Zeile am unteren Bildschirmrand. Um insbesondere die gesamte Datei weiterzuleiten, verwenden Sie entweder <|$mycommand
oder , >|^mycommand
um die Position an ein Ende der Datei und die Markierung an das andere Ende zu setzen. Um nur die Zeilen weiterzuleiten, die auf dem Bildschirm angezeigt werden, verwenden Sie die Markierung .
.
Die Ausgabe des Befehls bleibt nicht auf dem Bildschirm. Wenn Sie die Ausgabe mit less durchsuchen möchten, müssen Sie eine weitere Instanz starten, z. B. rot13 | less
. Wenn Sie diese zweite Instanz von less beenden, werden Sie zur ersten zurückgeführt. Es gibt keine Möglichkeit, den Inhalt der aktuellen Instanz durch von ihr weitergeleitete Daten zu ersetzen. Um Farben anzuzeigen, denken Sie daran, auszuführen less -R
.