Bagaimana cara mengaktifkan perintah pagination for ls?

34

Apa opsi yang setara untuk lsperintah untuk mengaktifkan pagination seperti pada DOS the dir /pdo?

NES
sumber

Jawaban:

54

Tidak ada persamaan langsung dalam lsdirinya sendiri, tetapi ada lessutilitas, yang akan memformat output dari perintah apa pun sebagai halaman terpisah, dapat digulirkan dengan baris atau halaman:

ls -C | less

Di mana -Cmemicu tampilan kolom. Gunakan lahsebagai argumen ( ls -lah) untuk mendapatkan l ine oleh layar sejalan dengan sebuah file ll yang ditampilkan (termasuk yang tersembunyi), dan h Uman filesizes dibaca.

  • Agar warna ditampilkan dengan benar , Anda perlu menambahkan --color=alwaysargumen ls, dan -Rargumen pada less *:

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

    teks alternatif
    ini menunjukkan 'ls -ah --color = always | kurang -R '

Berbeda dengan more, lessakan membiarkan Anda menggulir output. Ini juga sedikit lebih cepat untuk daftar yang sangat besar.

Pipa bekerja seperti ini:

Setiap program memiliki input dan output, sebuah pipa mengalihkan output dari satu program (ls) ke input program lain (kurang). Dan kurang hanya mengharapkan input yang kemudian format.

  • Setara dengan dos sekolah yang lebih lama adalah pg:

    ls | pg
    

Anda juga bisa

  • Gunakan ls | headatau ls | tailuntuk hanya menampilkan bagian pertama atau terakhir dari output
  • Gunakan watch "ls"untuk menjaga layar tetap terbuka, memperbarui setiap beberapa detik untuk menonton perubahan
  • Gunakan banner $(ls)jika Anda duduk sangat jauh dari layar. (;

  • Jika terlalu lama untuk diingat, Anda dapat mengatur alias untuknya:

    Buka ~/.bash_aliasesdengan editor teks dan tambahkan sesuatu seperti ini ke dalamnya:

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

    (ini adalah skrip yang dijalankan setiap kali terminal virtual baru dijalankan, Anda harus mengatur semua alias permanen Anda di sana)

    Sekarang Anda bisa mengetik lsp, atau nama apa pun yang Anda pilih.

    Jika Anda ingin dapat meneruskan argumen lebih lanjut ke alias Anda, kami perlu mendefinisikan fungsi sebagai gantinya:

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

    Sebuah fungsi, terutama tampak seperti ini: name(){ commands; };bisa menerima argumen, $1, $2, $3dan sebagainya. $@berarti "setiap argumen, jika ada" .

    Anda sekarang dapat menjalankan sesuatu seperti lsp *.py, lsp -C, dan sebagainya. Kami menyisipkan argumen pada titik di mana mereka diteruskan ke ls. Kita juga bisa memasukkan $ * dengan harga lebih murah, jika itu adalah perintah penting. Anda dapat melihat semua argumen ls di man ls(layak dibaca).


*: Alasan untuk ini adalah, bahwa setiap kali Anda melakukan sesuatu Pipe, ia mendeteksi Terminal (sebenarnya program lain) tidak mampu menampilkan warna. "--color = always" memaksa ls untuk mengabaikan ini. Saklar -R membuat pengecatan layar menjadi lebih sedikit, keluar dari warna dengan benar.

Stefano Palazzo
sumber
terima kasih jawaban yang bagus, persis bagian dengan alias muncul di benak saya ketika saya melihat perintah yang panjang. satu-satunya kelemahan dengan membuat alias adalah menggunakan wildcard filter seperti * .pdf ini tidak mungkin? mungkin ada solusi untuk hal ini?
NES
Segalanya mungkin ;-) Saya menambahkan sedikit tentang argumen, saya entah bagaimana tidak memikirkannya sebelumnya.
Stefano Palazzo
2
Anda memberi lebih dari yang diharapkan :) terima kasih atas jawaban terinci. T: Apakah Anda tahu jika ada perbedaan antara bash dan ikan yang entah bagaimana mencegah metode alias argumen passing dari bekerja di ikan? saya mendapat alias tanpa opsi argumen untuk bekerja di sini.
NES
1
Ok, di sini askubuntu.com/questions/19728/… pertanyaan baru dimulai, terima kasih lagi atas jawaban Anda yang sangat membantu sejauh ini.
NES
1
$*dan $@melakukan hal yang sama persis. Mereka berkembang menjadi $1 $2 $3 .... Dikutip, bagaimanapun, "$@"mengembang ke "$1" "$2" "$3" ...sementara "$*"mengembang ke "$1 $2 $3 ..."(yaitu, semua argumen menjadi satu string, menggunakan karakter pertama IFSsebagai pemisah). mywiki.wooledge.org/BashGuide/Parameters
geirha
3

Saya tidak yakin apakah ada perintah ls untuk pagination. Namun, Anda dapat menggunakan pipa dan less, seperti ini:

ls | less

Dan gunakan q untuk keluar.

Ragnar123
sumber
1

Coba ls | lessatau ls | more. Yang kedua dekat dengan versi DOS.

FUZxxl
sumber
1
Apakah mungkin ada metode lain? karena kerugiannya bagi saya bahwa pewarnaan shell tidak aktif ketika menggunakan pipa?
NES
2
Cobals --color=always -C | less -R
FUZxxl