Tôi có thể giữ và .. ra khỏi. * mở rộng?


10

Tôi thường thấy khó chịu (hoặc tệ hơn) khi tôi gõ

command .*

trong bash và lệnh áp dụng cho thư mục mẹ và thư mục hiện tại. Có một số tùy chọn shell hoặc cấu hình khác mà tôi có thể điều chỉnh để loại trừ bash ...từ việc mở rộng .*?

Câu trả lời:


13

Trong bash, theo thứ tự này:

GLOBIGNORE=.
shopt -u dotglob

Khi GLOBIGNORE được đặt ,. và .. được tự động bỏ qua, vì vậy bạn thực sự không cần phải đặt chúng trong GLOBIGNORE, nhưng nếu bạn không có gì khác để bỏ qua thì bạn sẽ không có gì để đặt.

Mỗi khi bạn đặt GLOBIGNORE thành giá trị khác null, bash sẽ bật tùy chọn dotglob, do đó bạn sẽ cần tắt nó sau đó; nếu không, bash sẽ mở rộng *để bao gồm các tệp bắt đầu bằng dấu chấm.


Tuyệt thật, cảm ơn nhé! Tôi thực sự muốn dotglobbật, vì vậy thiết lập GLOBIGNOREâm thanh hoàn hảo.
David Z

Khi GLOBIGNORE được đặt, Bash sẽ bỏ qua ...không foo/.foo/... Bạn có thể muốn sử dụng GLOBIGNORE=.:*/.:*/..để làm cho công việc này với tên đường dẫn quá.
dùng123444555621

3

Trên một hệ thống lạ, nơi tôi có quá ít thời gian để kiểm tra các cài đặt đang sử dụng (như GLOBIGNORE), tôi sử dụng mẫu hoàn hảo sau đây:

command .??*
  • Nhanh chóng gõ và đảm bảo để loại trừ ...bất kể môi trường.

1
Tôi luôn thích cách tiếp cận này, nhưng lưu ý rằng nó không khớp với các tệp 1-char.a
MestreLion
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.