khớp mẫu ls


7

Tôi biết rằng []đang làm việc trong lsmô hình phù hợp:

$ ls
foo.c  foo.h
$ ls foo.[ch]
foo.c  foo.h

nhưng tôi không thể tìm thấy nơi này được ghi lại.

Tôi muốn biết cú pháp phù hợp với những điều này:

$ ls
foo.asd  foo.qwe

Đây là dự đoán tốt nhất tôi đã có : ls foo.[{asd}{qwe}]. Nó không hoạt động.


4
Nó không phải là "khớp mẫu" từ lsmà là "vỏ toàn cầu"; xem tài liệu vỏ cho tất cả các chi tiết. lschỉ để xem những gì vỏ mở rộng.
Janis

Câu trả lời:


10

Tôi nghĩ rằng bạn đang tìm kiếm mở rộng cú đúp {asd,qwe}:

$ ls foo.{asd,qwe}
foo.asd  foo.qwe

Đây là những gì tôi đang tìm kiếm. Nhận xét @Janis đã giúp tôi tìm tài liệu, ví dụ tại đây: linux.die.net/Linux-CLI/x11655.htm
Gauthier

Lưu ý rằng đây không phải là khớp mẫu, mà là mở rộng dấu ngoặc; ngay cả khi nó hoạt động cho trường hợp cụ thể này, bạn không thể khớp các mẫu tùy ý với nó.
Janis

@Janis: Tôi nghĩ OP thực sự đang tìm kiếm điều này, các ví dụ về câu hỏi cũng gợi ý như vậy..có thể anh ấy / cô ấy không thể làm rõ truy vấn đủ..xem nhận xét của OP ở trên ..
heemayl

@heemayl; như đã nói, nó dường như đủ cho nhu cầu của anh ta. Nhưng trong câu hỏi của mình, anh ấy đã nói rõ ràng về "khớp mẫu" và "cú pháp phù hợp".
Janis

Theo điều này: linux.die.net/Linux-CLI/x11655.htm, bản mở rộng dấu ngoặc này đủ điều kiện là ký tự đại diện tiêu chuẩn hoặc mẫu hình cầu. Tôi không chắc chắn "khớp mẫu" khác với "mẫu hình cầu" như thế nào. Kỳ lạ, man 7 globmô tả []nhưng không {}.
Gauthier

2

Các mẫu hình cầu sẽ là ls foo.@(asd|qwe). Những công việc này

  • ra khỏi hộp trong ksh;
  • trong bash cũng nếu "kích hoạt toàn cầu" được kích hoạt với shopt -s extglob;
  • trong zsh nếu các khối kiểu ksh được kích hoạt setopt ksh_glob.

1
liên kết đến Bash Extended Globbing
Peter.O
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.