Jak aktywować paginację dla polecenia ls?

34

Jaka jest równoważna opcja dla lspolecenia aktywacji paginacji, tak jak dir /probi to w DOS ?

NES
źródło

Odpowiedzi:

54

lsSam w sobie nie ma bezpośredniego odpowiednika , ale jest lessnarzędzie, które sformatuje dane wyjściowe dowolnego polecenia jako osobne strony, przewijane według linii lub strony:

ls -C | less

Gdzie -Cwyzwala wyświetlanie kolumny. Zastosowanie lahjako argumenty ( ls -lah), aby uzyskać l ine przez wyświetlacz linii z A są wyświetlane pliki LL (zawierają ukrytych) i h Uman czytelnych filesizes.

  • Aby uzyskać kolory, aby pokazać się prawidłowo , trzeba dodać --color=alwaysargumentu ls, a -Rargument, na mniej *:

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

    alternatywny tekst
    pokazuje to ls -ah --color = always | mniej -R ”

W przeciwieństwie do more, lesspozwala przewijać dane wyjściowe. Jest również nieco szybszy w przypadku bardzo dużych ofert.

Rura działa w następujący sposób:

Każdy program ma wejście i wyjście, potok przekierowuje wyjście jednego programu (ls) na wejście innego programu (mniej). I mniej po prostu oczekuje danych wejściowych, które następnie formatuje.

  • Bardziej oldskulowym odpowiednikiem dos byłoby pg:

    ls | pg
    

Również możesz

  • Użyj ls | headlub, ls | tailaby wyświetlić tylko pierwszą lub ostatnią część wyniku
  • Użyj, watch "ls"aby utrzymać wyświetlacz otwarty, aktualizując go co kilka sekund, aby oglądać zmiany
  • Użyj, banner $(ls)jeśli siedzisz naprawdę daleko od ekranu. (;

  • Jeśli znajdziesz to wszystko za długo, by je zapamiętać, możesz ustawić dla nich alias :

    Otwórz ~/.bash_aliasesza pomocą edytora tekstu i dodaj do niego coś takiego:

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

    (jest to skrypt uruchamiany za każdym razem, gdy uruchamiany jest nowy terminal wirtualny, powinieneś skonfigurować tam wszystkie swoje stałe aliasy)

    Teraz możesz po prostu wpisać lspdowolną nazwę.

    Jeśli chcesz mieć możliwość przekazania dalszych argumentów do swojego aliasu, musimy zamiast tego zdefiniować funkcję :

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

    Funkcja, głównie patrząc tak: name(){ commands; };może przyjmować argumenty, $1, $2, $3i tak dalej. $@oznacza „każdy argument, jeśli istnieje” .

    Teraz można uruchomić coś podobnego lsp *.py, lsp -Ci tak dalej. Wstawiamy argumenty w punkcie, w którym są przekazywane do ls. Moglibyśmy również wstawić $ * za mniej, gdyby było to ważne polecenie. Możesz zobaczyć wszystkie argumenty ls na man ls(warte przeczytania).


*: Powodem tego jest to, że za każdym razem, gdy coś potokujesz, wykrywa on Terminal (właściwie inny program), który nie jest w stanie wyświetlać kolorów. „--color = zawsze” zmusza ls do zignorowania tego. Przełącznik -R sprawia, że ​​ekran jest mniej odmalowany, dzięki czemu kolory są odpowiednio pomijane.

Stefano Palazzo
źródło
dzięki świetna odpowiedź, dokładnie ta część aliasu przyszła mi do głowy, kiedy zobaczyłem długą linię poleceń. jedyną wadą tworzenia aliasu jest to, że użycie filtra wieloznacznego, takiego jak * .pdf, nie jest możliwe? może istnieje też rozwiązanie tego problemu?
NES
Wszystko jest możliwe ;-) Dodałem trochę o argumentach, jakoś wcześniej o tym nie myślałem.
Stefano Palazzo
2
dałeś więcej niż oczekiwano :) dzięki za szczegółową odpowiedź. PS, czy wiesz, czy istnieją różnice między uderzeniem a rybą, które w jakiś sposób uniemożliwiają działanie tej metody przekazywania argumentu aliasu na ryby? Mam alias bez opcji argumentu do pracy tutaj.
NES
1
Ok, tutaj askubuntu.com/questions/19728/ ... zaczyna się nowe pytanie, jeszcze raz dziękuję za pomocne odpowiedzi.
NES
1
$*i $@rób dokładnie to samo. Rozwijają się do $1 $2 $3 .... Cytuje jednak "$@"rozwija się do "$1" "$2" "$3" ...while "$*"rozwija się do "$1 $2 $3 ..."(czyli wszystkie argumenty w jednym ciągu, używając pierwszego znaku IFSjako separatora). mywiki.wooledge.org/BashGuide/Parameters
geirha
3

Nie jestem pewien, czy istnieje polecenie ls do paginacji. Możesz jednak użyć potoku i less:

ls | less

I użyj q, aby wyjść.

Ragnar123
źródło
1

Spróbuj ls | lesslub ls | more. Drugi jest zbliżony do wersji DOS.

FUZxxl
źródło
1
Czy jest może inna metoda? ponieważ dla mnie wadą jest to, że zabarwienie skorupy nie jest aktywne podczas używania rury?
NES
2
Spróbujls --color=always -C | less -R
FUZxxl,