Tôi đã bắt gặp các mẫu hình đại diện và ký tự đại diện và đặc biệt quan tâm đến tôi [!]
.
Cấu trúc này tương tự như
[!]
cấu trúc, ngoại trừ thay vì khớp bất kỳ ký tự nào trong ngoặc, nó sẽ khớp với bất kỳ ký tự nào, miễn là nó không được liệt kê giữa[
và]
.
rm myfile [!192]
Ở trên tôi tin rằng sẽ xóa bất kỳ / tất cả các tệp, ngoại trừ bất kỳ / tất cả các tệp có 192 trong tên của chúng.
Tuy nhiên, tôi lo ngại về việc sử dụng hợp lý phần này với phần mở rộng tệp và đặc biệt là nhiều điều kiện.
Điều gì sẽ là cú pháp thích hợp trong tình huống như vậy?
rm myfile [!.gif .csv. mp3]
hoặc là
rm myfile [!.gif !.csv !.mp3]
Lo lắng của tôi là khoảng thời gian có thể bị đặt sai vị trí, và vì vậy bất kỳ tệp nào có .
(chắc chắn là bất kỳ tệp nào trong số chúng?) Sau đó sẽ bị thao túng, khi tôi đang tìm cách gây ra thao tác với các tệp cụ thể.
Cấu trúc này tương tự như [ ]
cấu trúc, ngoại trừ thay vì khớp bất kỳ ký tự nào trong ngoặc, nó sẽ khớp với bất kỳ ký tự nào, miễn là nó không được liệt kê giữa [
và ]
.
(trích dẫn từ http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm )
Hiện nay; với tôi điều đó cho thấy một số ít !
là đủ và tất cả các giá trị trong đó sau đó được chứa trong phạm vi.
[!]
là tương tự nhưng không giống như[!]
^
có ý nghĩa chính xác như !
trong bối cảnh này, do đó [^a]
loại trừ a
chính xác như [!a]
: Nếu ký tự đầu tiên theo sau [là a! hoặc một ^ sau đó bất kỳ ký tự không kèm theo được khớp. ( man bash
)
rm myfile [!192]
sẽ loại bỏ myfile
, cũng như bất kỳ tập tin duy nhất nhân vật không có tên 1
, 9
hoặc 2
.
ls my-pattern
hoặcecho my-command
để kiểm tra xem việc tạo hình có được thực hiện theo cách bạn muốn hay không, trước khi chạyrm