Ý nghĩa của dấu hoa thị, dấu gạch chéo ngược, dấu hai chấm và hai trong (* \: 2) là gì?


14

Ý nghĩa của lslệnh sau là gì?

ls -l *\:2,*T
  • ls = danh sách
  • -l = dài (danh sách)
  • *Tcó lẽ có nghĩa là Tở cuối

Nhưng những gì về điều đó *\:2và dấu phẩy?

Câu trả lời:


25

*\:2,*Tlà mô hình toàn cầu của các tập tin để liệt kê. Để hiểu nó, chúng ta cần nhớ một vài điều:

  • : phải thoát ra khỏi vỏ, trở thành \:
  • Tên tệp có thể dễ dàng chứa dấu phẩy

Vì vậy, *\:2,*Tví dụ như phù hợp với một tập tin được gọi làTranscationNumber:2,EventType:XYT

BIÊN TẬP

Từ những ý kiến, sự cần thiết (hoặc không) để thoát khỏi những :cần một vài lời: Đó là không thực sự cần thiết để thoát khỏi :dấu hiệu, nhưng bash chính nó cho thấy nó khi tự động điền.


3
Cảm ơn bạn, cả Eugen và HBruijn. Tôi đã nghi ngờ một số mẫu hình cầu phức tạp, nhưng thực sự nó chỉ phù hợp với dấu hai chấm và dấu phẩy, điều mà tôi không nghĩ đến khi làm việc với các tệp. Bây giờ, lệnh hoàn toàn có ý nghĩa: liệt kê tất cả các tệp email trong thư mục Maildir, được đánh dấu là "Đã xóa" (T). Btw. Số 2 có nghĩa là Maildir trong phiên bản 2 (cf wiki2.dovecot.org/MailboxFormat/Maildir ).
jugmac00

11
Từ khi nào :phải trốn thoát?
Barmar

7
:không cần phải trốn thoát. Nó chỉ đặc biệt trong các trường hợp cụ thể (khi được sử dụng như một lệnh), không phải trong các mẫu toàn cầu. Điều \:này tương đương với :, thoát ra không có sự khác biệt.
terdon

1
@Aaron, nó không chính xác là không có op: shell vẫn sẽ xử lý các thay thế biến, đặc biệt là loại gán (nghĩa là đặt giá trị mặc định):unset var; : ${var:=x}; echo $var
glenn jackman

3
@terdon & @Aaron Dấu hai chấm :là một phần của các giá trị mặc định cho COMP_WORDBREAKSbiến môi trường. Trong tự động hoàn thành Bash, các ký tự được sử dụng làm dấu tách từ bởi thư viện dòng đọc và tên tệp chứa dấu hai chấm tất nhiên phải là một từ. Do đó, lý do mà bash autocletion yêu cầu phải thoát khỏi dấu hai chấm, mặc dù nếu không thì " phần lớn " không phải là một ký tự đặc biệt ...
HBruijn

14

Liệt kê tất cả các tệp khớp với mẫu ký tự đại diện *:2,*T

Ở đó, ký tự đại diện *khớp với bất cứ thứ gì (bất kỳ số lượng nào của tất cả các ký tự có thể)
:2,là các ký tự cần phải có trong tên tệp / thư mục.
Dấu hai chấm :là một ký tự đặc biệt cần được thoát, do đó hình thức \:2,.
Tên tệp / thư mục cần kết thúc bằng a T.

Tên tệp phù hợp sẽ là

:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T

1
Không có gì đặc biệt về :, nó không cần phải trốn thoát.
Kevin

@Kevin bash tự động hoàn thành tự động thoát dấu hai chấm trong các mẫu tên tệp / thư mục, bởi vì được bao gồm trong danh sách các COMP_WORDBREAKgiá trị môi trường được đặt theo mặc định. - Vì vậy, nó thực sự không phải là một ký tự đặc biệt thực sự, nhưng khi bạn sử dụng tự động hoàn thành trên dòng lệnh và muốn / cần khớp tên tệp với dấu hai chấm, thì nó cần phải được thoát.
HBruijn

9

Như những người khác đã lưu ý, điều này sẽ liệt kê ở định dạng dài, các tệp chứa :2và kết thúc bằngT

Điều này trông giống như một tìm kiếm trong thư mục Maildir cho các tệp đã bị xóa (bị vứt bỏ). Tuy nhiên, để mạnh mẽ *, cuối cùng nó phải có một cái khác . Các cờ mới có vị trí theo thứ tự chữ cái sau này có thể được thêm vào và ví dụ Dovecot thêm một trường khác có kích thước tệp ở cuối.

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.