Làm thế nào để kích hoạt phân trang cho lệnh ls?


34

Tùy chọn tương đương cho lslệnh kích hoạt phân trang như trong DOS là dir /pgì?

Câu trả lời:


54

lsBản thân nó không có tương đương đơn giản , nhưng có lesstiện ích, sẽ định dạng đầu ra của bất kỳ lệnh nào dưới dạng các trang riêng biệt, có thể cuộn theo dòng hoặc trang:

ls -C | less

Nơi -Ckích hoạt cột hiển thị. Sử dụng lahnhư các đối số ( ls -lah) để có được một l ine bởi màn hình phù hợp với một file ll được hiển thị (bao gồm những ẩn), và h Uman kích thước file có thể đọc được.

  • Để có được màu sắc hiển thị đúng , bạn cần thêm --color=alwaysđối số vào ls-Rđối số trên ít *:

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

    văn bản thay thế
    cái này hiển thị 'ls -ah --color = always | ít hơn -R '

Ngược lại more, lesssẽ cho phép bạn cuộn qua đầu ra. Nó cũng nhanh hơn một chút cho các danh sách rất lớn.

Các đường ống hoạt động như thế này:

Mỗi chương trình có đầu vào và đầu ra, một đường ống chuyển hướng đầu ra của một chương trình (ls) sang đầu vào của một chương trình khác (ít hơn). Và ít hơn chỉ đơn giản là mong đợi đầu vào mà sau đó định dạng.

  • Một liều tương đương trường học cũ hơn sẽ là pg:

    ls | pg
    

Bạn cũng có thể

  • Sử dụng ls | headhoặc ls | tailchỉ hiển thị phần đầu tiên hoặc phần cuối của đầu ra
  • Sử dụng watch "ls"để giữ cho màn hình mở, cập nhật vài giây một lần để xem các thay đổi
  • Sử dụng banner $(ls)nếu bạn đang ngồi cách xa màn hình. (;

  • Nếu bạn thấy tất cả những điều đó quá dài để nhớ, bạn có thể thiết lập bí danh cho nó:

    Mở ~/.bash_aliasesbằng trình soạn thảo văn bản và thêm một cái gì đó như thế này vào nó:

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

    (đây là tập lệnh được chạy mỗi khi thiết bị đầu cuối ảo mới được khởi động, bạn nên thiết lập tất cả các bí danh vĩnh viễn của mình ở đó)

    Bây giờ bạn có thể chỉ cần gõ lsp, hoặc bất cứ tên nào bạn chọn.

    Nếu bạn muốn có thể truyền thêm các đối số cho bí danh của mình, chúng ta cần xác định một hàm thay thế:

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

    Một chức năng, chủ yếu tìm kiếm như thế này: name(){ commands; };có thể chấp nhận đối số, $1, $2, $3và vân vân. $@có nghĩa là "mọi đối số, nếu có" .

    Bây giờ bạn có thể chạy một cái gì đó giống như lsp *.py, lsp -Cvà vân vân. Chúng tôi chèn các đối số tại điểm mà chúng được chuyển đến ls. Chúng tôi cũng có thể đã chèn $ * với giá rẻ hơn, nếu đó là lệnh quan trọng. Bạn có thể thấy tất cả các đối số của ls tại man ls(đáng đọc).


*: Lý do cho điều này là, bất cứ khi nào bạn Đặt một cái gì đó, nó sẽ phát hiện một Terminal (thực ra là chương trình khác) không có khả năng hiển thị màu. "--color = always" buộc ls bỏ qua điều này. Công tắc -R giúp làm lại màn hình ít hơn, thoát màu đúng cách.


cảm ơn câu trả lời tuyệt vời, chính xác là phần có bí danh xuất hiện trong đầu tôi khi tôi thấy dòng lệnh dài. nhược điểm duy nhất bằng cách tạo bí danh là sử dụng bộ lọc ký tự đại diện như * .pdf điều này là không thể? có lẽ có tồn tại một giải pháp cho điều này?
NES

Mọi thứ đều có thể ;-) Tôi đã thêm một chút về các đối số, bằng cách nào đó tôi đã không nghĩ về nó sớm hơn.
Stefano Palazzo

2
bạn đã đưa ra nhiều hơn mong đợi :) cảm ơn câu trả lời chi tiết. PS bạn có biết nếu có sự khác biệt giữa bash và cá bằng cách nào đó ngăn cản phương thức truyền đối số bí danh này hoạt động trong cá không? tôi có bí danh mà không có tùy chọn đối số để làm việc ở đây.
NES

1
Ok, ở đây Askubfox.com/questions/19728/ , câu hỏi mới bắt đầu, cảm ơn lần nữa vì câu trả lời hữu ích của bạn cho đến nay.
NES

1
$*$@làm điều tương tự chính xác. Họ mở rộng đến $1 $2 $3 .... Tuy nhiên, được trích dẫn "$@"mở rộng "$1" "$2" "$3" ...trong khi "$*"mở rộng thành "$1 $2 $3 ..."(nghĩa là tất cả các đối số thành một chuỗi, sử dụng ký tự đầu tiên IFSlà dấu phân cách). mywiki.wooledge.org/BashGuide/Parameters
geirha

3

Tôi không chắc chắn nếu có một số lệnh ls cho phân trang. Tuy nhiên, bạn có thể sử dụng một đường ống và less, như thế này:

ls | less

Và sử dụng q để thoát.


1

Hãy thử ls | lesshoặc ls | more. Cái thứ hai gần với phiên bản DOS.


1
Có lẽ có một phương pháp khác? bởi vì nhược điểm đối với tôi là màu sắc của vỏ không hoạt động khi sử dụng đường ống?
NES

2
Hãy thửls --color=always -C | less -R
FUZxxl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.