Wie aktiviere ich die Paginierung für den Befehl ls?

34

Was ist die äquivalente Option für den lsBefehl, um die Paginierung zu aktivieren, wie dies unter DOS der dir /pFall ist?

NES
quelle

Antworten:

54

Es gibt kein einfaches Äquivalent an lssich, aber es gibt das lessDienstprogramm, das die Ausgabe eines Befehls als separate Seiten formatiert, die zeilen- oder seitenweise gescrollt werden können:

ls -C | less

Wobei -Cdie Spaltenanzeige auslöst. Verwendung lahals Argumente ( ls -lah) , um ein zu bekommen l ine durch zeiliges Display mit einer ll - Dateien angezeigt werden (einschließlich unsichtbare) und h uman lesbar Dateigrößen.

  • Damit Farben richtig angezeigt werden , müssen Sie das --color=alwaysArgument lsund das -RArgument auf less * hinzufügen :

    ls -C --color=always | less -R

    Alt-Text
    dies zeigt 'ls -ah --color = always | weniger -R '

Im Gegensatz zu morekönnen lessSie durch die Ausgabe scrollen. Es ist auch ein bisschen schneller für sehr große Inserate.

Die Pipe funktioniert so:

Jedes Programm hat Eingabe und Ausgabe, eine Pipe leitet die Ausgabe eines Programms (ls) an die Eingabe eines anderen Programms (weniger) weiter. Und erwartet weniger einfach Eingaben, die es dann formatiert.

  • Ein altmodischeres Dos-Äquivalent wäre pg:

    ls | pg
    

Du kannst auch

  • Verwenden Sie ls | headoder ls | tail, um nur den ersten oder letzten Teil der Ausgabe anzuzeigen
  • Verwenden Sie watch "ls"die Anzeige offen zu halten, ist es alle paar Sekunden zu aktualisieren Änderungen zu sehen
  • Verwenden banner $(ls)Sie diese Option, wenn Sie sehr weit vom Bildschirm entfernt sitzen. (;

  • Wenn Sie all das zu lange im Gedächtnis behalten, können Sie einen Alias dafür einrichten :

    Öffne es ~/.bash_aliasesmit einem Texteditor und füge etwas hinzu:

    alias lsp="ls -ah --color=always | less -R"
    

    (Dies ist ein Skript, das jedes Mal ausgeführt wird, wenn ein neues virtuelles Terminal gestartet wird. Sie sollten alle permanenten Aliase dort einrichten.)

    Jetzt können Sie einfach einen lspbeliebigen Namen eingeben.

    Wenn Sie weitere Argumente an Ihren Alias ​​übergeben möchten, müssen Sie stattdessen eine Funktion definieren :

    lsp(){ ls -ah --color=always "$@" | less -R; }
    

    Eine Funktion, hauptsächlich wie folgt aussehen: name(){ commands; };kann Argumente akzeptieren $1, $2, $3und so weiter. $@bedeutet "jedes Argument, falls vorhanden" .

    Sie können nun so etwas wie laufen lsp *.py, lsp -Cund so weiter. Wir fügen die Argumente an der Stelle ein, an der sie an ls übergeben werden. Wir hätten auch $ * für weniger einfügen können, wenn es der wichtige Befehl wäre. Sie können alle Argumente von ls unter man ls(lesenswert) sehen.


*: Der Grund dafür ist, dass bei jedem Pipe-Vorgang ein Terminal (eigentlich das andere Programm) erkannt wird, das keine Farbe anzeigen kann. "--color = always" zwingt ls, dies zu ignorieren. Mit der Option -R wird der Bildschirm weniger neu gestrichen , und die Farben werden ordnungsgemäß ausgeblendet.

Stefano Palazzo
quelle
danke tolle antwort, genau der teil mit dem alias ist mir eingefallen, als ich die lange kommandozeile sah. der einzige nachteil beim erstellen des alias ist, dass mit einem wildcard filter wie * .pdf dies nicht möglich ist? gibt es vielleicht auch eine lösung dafür?
NES
Alles ist möglich ;-) Ich habe das bisschen über Argumente hinzugefügt, irgendwie habe ich früher nicht darüber nachgedacht.
Stefano Palazzo
2
du hast mehr gegeben als erwartet :) danke für die ausführliche antwort. PS Weißt du, ob es Unterschiede zwischen Bash und Fish gibt, die irgendwie verhindern, dass diese Methode zur Übergabe von Alias-Argumenten in Fischen funktioniert? Ich habe den Alias ​​ohne die Argument-Option, um hier zu arbeiten.
NES
1
Ok, hier beginnt askubuntu.com/questions/19728/… die neue Frage, nochmals vielen Dank für Ihre bisher hilfreichen Antworten.
NES
1
$*und $@genau das Gleiche tun. Sie erweitern um $1 $2 $3 .... Das Anführungszeichen "$@"erweitert sich jedoch zu "$1" "$2" "$3" ...while ( "$*"dh "$1 $2 $3 ..."alle Argumente in einer Zeichenfolge, wobei das erste Zeichen von IFSals Trennzeichen verwendet wird). mywiki.wooledge.org/BashGuide/Parameters
geirha
3

Ich bin nicht sicher, ob es einen Befehl zur Paginierung gibt. Sie können jedoch eine Pipe verwenden und lesswie folgt vorgehen:

ls | less

Und mit q beenden.

Ragnar123
quelle
1

Versuchen Sie ls | lessoder ls | more. Der zweite ist in der Nähe der DOS-Version.

FUZxxl
quelle
1
Gibt es vielleicht eine andere Methode? weil der nachteil für mich ist, dass die färbung der schale bei der verwendung einer pfeife nicht aktiv ist?
NES
2
Versuchen Siels --color=always -C | less -R
FUZxxl