Kiểm soát tập tin nào sẽ hiển thị


10

Gần đây tôi đã thay đổi cấu hình emacs của mình để ẩn các tệp sao lưu bằng cách thêm một dấu chấm vào tên tệp. Điều này khiến tôi phải suy nghĩ - có cách nào sẵn sàng để thay đổi hành vi trong Bash để sử dụng danh sách các khối lượng tùy ý cho các tệp nào cần ẩn không? Quét nhanh các trang bash và ls man không bật lên bất cứ điều gì.


Ý bạn là, ví dụ như đã lsbỏ qua tất cả các tệp bắt đầu bằng ignore-hoặc tất cả các tệp kết thúc bằng .bak?
Kevin

Có, tốt nhất là với khả năng thực hiện khớp mẫu ký tự đại diện, bỏ qua - *. Bak, v.v.
Tim Brigham

Câu trả lời:


9

lscó một --hide=PATTERNtùy chọn trông giống như nó làm những gì bạn muốn và có thể được ghi đè để hiển thị chúng với -ahoặc -A. Nếu bạn muốn điều này tự động xảy ra, hãy thêm một bí danh trong ~/.bashrc(hoặc, trong trường hợp có khả năng là đã có bí danh cho nó, hãy thêm nó vào bí danh đó).

$ touch {a,b,c}-{1,2,3}
$ ls
a-1  a-2  a-3  b-1  b-2  b-3  c-1  c-2  c-3
$ ls --hide=a*
b-1  b-2  b-3  c-1  c-2  c-3
$ ls --hide=*1
a-2  a-3  b-2  b-3  c-2  c-3
$ ls --hide=a*1
a-2  a-3  b-1  b-2  b-3  c-1  c-2  c-3
$ ls --hide=a*1 -A
a-1  a-2  a-3  b-1  b-2  b-3  c-1  c-2  c-3

Ngoài ra còn có một tùy chọn --ignore=PATTERNkhông bị ghi đè bởi -a-Acác tùy chọn.


Cảm ơn câu trả lời, tôi chỉ có một câu hỏi: tại sao ls --hide=*1 a*không che giấu điều gì, nhưng vẫn liệt kê cả ba a-1 a-2 a-3? Tôi có thể mong đợi nó để che giấu a-1?
sdaau

1
Các a*được mở rộng bằng vỏ và bao gồm a-1. Tùy chọn ẩn không bỏ qua các tệp được đặt tên rõ ràng là đối số.
Kevin

0

Đây là bí danh của tôi cho ls:

alias ls="ls --color=auto --hide='*~' --hide='#*#'"

Điều đó ẩn các tập tin như backup.c~#autosave.h#. (Và, quan điểm như tôi, tôi thích màu sắc, vì vậy nó cũng làm điều đó.)

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.