Đường dẫn toàn cầu python

Shell của bạn có tính năng so khớp tên đường dẫn (ký tự đại diện) giúp thao tác trên số lượng lớn tên đường dẫn trở nên dễ dàng

$ cp  a*  .       # copy all names starting with 'a' to the parent directory

Tên Unix cho khớp mẫu ký tự đại diện là GLOBbing, xuất phát từ ý tưởng rằng mẫu khớp với danh sách tên “toàn cầu”. Các hệ điều hành khác có thể gọi các ký tự đại diện này

Các mẫu GLOB không chỉ khớp với tên tệp. Các tên được so khớp bởi một mẫu GLOB có thể là bất cứ thứ gì. tập tin, thư mục, liên kết tượng trưng, ​​v.v. Đôi khi chúng tôi nói rằng các mẫu GLOB khớp với "tên tệp", nhưng ý chúng tôi thực sự muốn nói là chúng khớp với bất kỳ loại tên nào

Shell sẽ cố gắng mở rộng bất kỳ mã thông báo nào trên dòng lệnh chứa các ký tự GLOB không được trích dẫn thành các tên đường dẫn hiện có trong hệ thống tệp. Trình bao sẽ cố gắng khớp các mẫu GLOB trong các mã thông báo đó với các tên đường dẫn hiện có trong hệ thống tệp để tạo danh sách các tên đường dẫn hiện có

Các mẫu GLOB không thể tạo bất kỳ tên nào không tồn tại. Các mẫu GLOB phải luôn khớp với các tên hiện có

Các mẫu GLOB hoặc các mẫu ký tự đại diện Các ký tự mà trình bao sẽ cố gắng mở rộng để khớp với các tên đường dẫn hiện có trong hệ thống tệp. Các ký tự này đôi khi được gọi là các ký tự "ký tự đại diện" trong các hệ thống khác. metacharacter (hoặc meta-character)Một ký tự có ý nghĩa đặc biệt đối với shell. Chữ cái
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
5 hoặc chữ số
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
6 không có ý nghĩa đặc biệt đối với shell và chúng không phải là siêu ký tự của shell. Biểu tượng dấu hoa thị (hoặc ngôi sao)
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
7 là một siêu ký tự, và dấu chấm phẩy, khoảng trống/dấu cách và nhiều ký hiệu khác cũng vậy. Bạn thường có thể biến một siêu ký tự thành một ký tự bình thường không đặc biệt bằng cách trích dẫn nó. (Xem phần “trích dẫn” bên dưới. )token hoặc wordMột phần không trống của dòng lệnh không thể tách rời thành các token khác bằng shell. Chuỗi hai từ không được trích dẫn
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
8 chứa hai mã thông báo (được phân tách bằng dấu trống). Chuỗi không được trích dẫn
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
9 chứa ba mã thông báo, bởi vì trình bao xử lý dấu chấm phẩy siêu ký tự
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
0 một cách đặc biệt và chia chuỗi thành ba phần. từ
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
1, siêu ký tự
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
0 và từ
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
3. Chuỗi bốn ký tự
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
4 chỉ chứa một mã thông báo. (Shell không tách phần
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
5 ra khỏi phần
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
6 – tất cả được coi là một từ vì cả chữ cái và dấu chấm đều không phải là siêu ký tự đối với shell. ) trích dẫn

Tắt ý nghĩa đặc biệt của siêu ký tự bằng cách bao quanh chúng bằng dấu ngoặc đơn hoặc kép hoặc đặt dấu gạch chéo ngược trước chúng

  • $ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
    $ echo [[:lower:]]
    a b c
    $ echo [[:upper:]]
    A B C
    $ echo [[:alpha:]]
    A B C a b c
    $ echo [[:alpha:]]*
    ABC B C a abc b c x1 y2 z3
    $ echo *[[:alpha:]]
    ABC B C a abc b c 1a 2b 3c
    7
  • $ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
    $ echo [[:lower:]]
    a b c
    $ echo [[:upper:]]
    A B C
    $ echo [[:alpha:]]
    A B C a b c
    $ echo [[:alpha:]]*
    ABC B C a abc b c x1 y2 z3
    $ echo *[[:alpha:]]
    ABC B C a abc b c 1a 2b 3c
    8
  • $ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
    $ echo [[:lower:]]
    a b c
    $ echo [[:upper:]]
    A B C
    $ echo [[:alpha:]]
    A B C a b c
    $ echo [[:alpha:]]*
    ABC B C a abc b c x1 y2 z3
    $ echo *[[:alpha:]]
    ABC B C a abc b c 1a 2b 3c
    9
tên ẩn Các tên bắt đầu bằng dấu chấm ở đầu (dấu chấm – ________ 160) không được hiển thị theo mặc định bởi một số lệnh (e. g.
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
61) và các khoảng thời gian đầu không bao giờ được so khớp bởi các siêu ký tự GLOB, ngay cả các danh sách GLOB có chứa một khoảng thời gian như
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
62. Tên bắt đầu bằng dấu chấm được gọi là tên “ẩn”, e. g. tập tin ẩn và thư mục ẩn

Đây là các siêu ký tự GLOB được shell nhận dạng và xử lý

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
9

Shell luôn xử lý các ký tự GLOB mà nó tìm thấy trên dòng lệnh, ngay cả đối với các lệnh không có tên đường dẫn. (Shell không biết lệnh nào có hoặc không có tên đường dẫn. ) Ví dụ

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
0

sẽ gọi chương trình thư và cung cấp cho nó tất cả các tên không ẩn trong thư mục hiện tại, điều này vô nghĩa vì chương trình thư muốn địa chỉ email, không phải tên đường dẫn. Shell không thể biết chương trình nào muốn tên đường dẫn và chương trình nào không, vì vậy nó luôn mở rộng các mẫu GLOB

Các siêu ký tự GLOB không bao giờ khớp với dấu chấm đầu trên bất kỳ tên ẩn nào, vì vậy bạn không phải lo lắng về việc vô tình khớp các tên

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
60 hoặc
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
6

Là một siêu ký tự GLOB, dấu hoa thị

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
7 khớp với 0 hoặc nhiều hơn bất kỳ ký tự nào trong tên, kể cả khoảng trắng hoặc các ký tự lạ khác.
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
7 không bao giờ khớp với dấu chấm ở đầu trên một tên ẩn, vì vậy
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
67 không bao giờ hiển thị bất kỳ tên nào bắt đầu bằng dấu chấm

Mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
68 khớp với các tên không ẩn kết thúc bằng
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
69, bao gồm
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
69,
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
91 và
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
92

Mẫu GLOB ________ 293 khớp với các tên bắt đầu bằng ________ 169, bao gồm ________ 169, ________ 296 và

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
97

Mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
98 khớp với các tên không ẩn có chứa
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
69 ở bất kỳ đâu, bao gồm
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
69,
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
96 và
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
92 và
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
13

Là một siêu ký tự GLOB, dấu chấm hỏi

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
14 khớp chính xác với một trong bất kỳ ký tự nào trong tên, bao gồm khoảng trắng hoặc ký tự lạ khác.
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
14 không bao giờ khớp với dấu chấm đầu trên một tên ẩn, vì vậy
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
16 không bao giờ hiển thị tên thư mục hiện tại
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
60 là một dấu chấm

Mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
18 khớp với các tên không ẩn dài chính xác ba ký tự

Mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
19 khớp với các tên không ẩn dài từ ba ký tự trở lên

Là một cặp siêu ký tự GLOB, dấu ngoặc vuông

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
80____481
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
82 khớp chính xác một ký tự trong tên từ danh sách ký tự. Danh sách các ký tự không bao giờ có thể khớp với dấu chấm đầu tiên trên một tên ẩn, vì vậy
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
83 không bao giờ hiển thị tên thư mục hiện tại
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
60 là một dấu chấm

Mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
85 không khớp với tên ba ký tự
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
86;

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
8

Bất kể có bao nhiêu ký tự trong danh sách, mẫu

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
80
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
81
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
82 sẽ chỉ khớp chính xác với một trong các ký tự trong danh sách, không nhiều hơn một, không ít hơn

Các mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
903 và
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
904 rất khác nhau

  • Mẫu GLOB
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    903 là một danh sách, vì vậy nó chỉ khớp với các tên có một ký tự. Nó khớp với bất kỳ một ký tự nào trong danh sách
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    903, do đó, nó khớp với bất kỳ tên một ký tự nào là
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    5 hoặc
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    908
  • Mẫu GLOB lẻ
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    904 được tạo thành từ hai danh sách, do đó, nó chỉ khớp với các tên có hai ký tự. Nó chỉ khớp với tên gồm hai ký tự
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    910 được tạo thành từ
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    5 (lấy từ danh sách đầu tiên) theo sau là
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    908 (lấy từ danh sách thứ hai). Nó chỉ phù hợp với
    $ touch abc aBc aBC ABc ABC Abc
    $ echo abc*
    abc
    $ echo [aA]bc
    Abc abc
    $ echo [aA][bB]c
    ABc Abc aBc abc
    $ echo [aA][bB][cC]
    ABC ABc Abc aBC aBc abc
    910

Có một danh sách dấu ngoặc vuông GLOB chỉ có một ký tự trong đó, e. g.

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
914, thường không hữu ích, vì nó khớp chính xác với một ký tự
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
5, vì vậy, thay vì viết
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
916, hãy sử dụng tương đương và đơn giản hơn nhiều
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
917 khớp chính xác các tên giống nhau

Qua một bên. Có các tùy chọn trình bao ảnh hưởng đến cách đánh giá các mẫu GLOB và một số tùy chọn trình bao này (e. g.

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
918) có thể làm cho danh sách một ký tự trở nên hữu ích trong những trường hợp đặc biệt. Đừng lo lắng về điều đó cho đến khi bạn tiến bộ hơn

Bất kể có bao nhiêu ký tự trong danh sách, mẫu

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
919 sẽ chỉ khớp chính xác với một trong các ký tự, không nhiều hơn một, không ít hơn

Bạn có thể sử dụng dấu gạch ngang

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
920 để biểu thị dãy chữ số bên trong danh sách
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
919, e. g.
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
922, nhưng không sử dụng dãy chữ cái, e. g.
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
923 trừ khi bạn hoàn toàn hiểu tác động của cài đặt ngôn ngữ quốc tế hóa trên máy của bạn

Đối với nhiều máy Linux hiện đại (hầu hết?) có cài đặt ngôn ngữ hiện đại (e. g. ________ 1924), phạm vi ký tự tầm thường ________ 1923 thực sự khớp với năm ký tự.

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
926. Không sử dụng phạm vi ký tự

Để được giải thích đầy đủ hơn, hãy xem http. //giảng bài. idallen. com/cst8177/15w/notes/000_character_sets. html

Thông thường, các mẫu GLOB phân biệt chữ hoa chữ thường để

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
927 không khớp với bất kỳ tên nào trong số các tên
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
928,
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
929,
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
930, v.v. Nếu bạn muốn khớp cả chữ hoa và chữ thường trong tên, hãy đặt mỗi chữ cái vào danh sách
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
919 nhỏ gồm hai ký tự của riêng nó để danh sách khớp với chữ hoa hoặc chữ thường

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc

Nếu bạn khớp bất kỳ chữ cái nào, không phải những chữ cái cụ thể, bạn có thể sử dụng các lớp ký tự POSIX chẳng hạn như

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
932,
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
933 hoặc
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
934 bên trong danh sách
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
919

$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c

Bất kể có bao nhiêu ký tự trong danh sách, mẫu

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
919 sẽ chỉ khớp chính xác với một trong các ký tự, không nhiều hơn một, không ít hơn

Cho đến khi bạn chắc chắn rằng mình biết cách trình bao sử dụng các mẫu GLOB để khớp tên, hãy sử dụng lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
937 hoặc
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
61 để xem tên nào đang được khớp (nếu có). Trước khi bạn thực hiện bất kỳ lệnh nào trong số này bằng cách sử dụng mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
6

thử một trong các lệnh hiển thị vô hại này để xác minh rằng mẫu GLOB khớp với tên chính xác

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
9

(Tùy chọn

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
939 làm cho
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
61 chỉ hiển thị tên của bất kỳ thư mục nào, không hiển thị nội dung của chúng như thường lệ. )

Nếu một trong hai lệnh vô hại này hiển thị trên màn hình của bạn danh sách chính xác các tên phù hợp, thì bạn có thể thay thế nó bằng lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
941 (hoặc bất kỳ lệnh nào bạn thực sự muốn sử dụng)

Nếu có quá nhiều tên đường dẫn để xem thoải mái trên màn hình của bạn, bạn có thể sử dụng các lệnh khác để giới hạn hiển thị hoặc đếm tên

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
1

Đảm bảo rằng mẫu GLOB chính xác trước khi bạn sử dụng

Không giống như ký tự đại diện DOS/Windows, các tính năng GLOB được thực hiện bởi trình bao chứ không phải bởi các chương trình riêng lẻ được gọi bởi trình bao

Shell sẽ thực hiện việc mở rộng GLOB này bất kể tên của lệnh đang được sử dụng, ngay cả khi lệnh đang được sử dụng không chấp nhận hoặc xử lý tên đường dẫn. Shell không biết lệnh nào mong đợi tên đường dẫn; . Đánh máy

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
8

đếm các dòng trong tất cả các tên không ẩn trong thư mục hiện tại và sử dụng tên đường dẫn với

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
942 rất hữu ích. Nhập các lệnh sau (sẽ nhận được cùng một danh sách tên đường dẫn được mở rộng GLOB như
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
942, nhưng lệnh đó không hoạt động trên tên đường dẫn) có thể sẽ không hoạt động tốt

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
90

Trong tất cả các dòng lệnh ở trên, bản mở rộng Shell GLOB cung cấp cùng tên đường dẫn cho lệnh được nhập. Hai trong số các lệnh có thể sẽ không hoạt động vì các lệnh này không lấy tên đường dẫn làm đối số

Nếu bạn không muốn quá trình xử lý GLOB diễn ra, hãy ẩn các ký tự GLOB khỏi trình bao bằng cách sử dụng trích dẫn – bao quanh mã thông báo bằng dấu ngoặc đơn hoặc kép hoặc đặt trước mỗi siêu ký tự GLOB bằng dấu gạch chéo ngược

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
91

Đối số đầu tiên của lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
944 là một mẫu biểu thức chính quy và hầu như không bao giờ được shell mở rộng dưới dạng mẫu GLOB, vì vậy bạn phải trích dẫn đối số đầu tiên để dừng mở rộng GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
92

Nếu bạn không muốn trình bao sử dụng GLOB trên các đối số lệnh của mình, bạn phải trích dẫn các đối số cho các lệnh để trình bao không nhìn thấy các siêu ký tự. Dưới đây là một số ví dụ sử dụng trích dẫn để ẩn các ký tự GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
93

Shell sẽ luôn cố gắng mở rộng các ký tự GLOB không được trích dẫn

Theo mặc định, các mẫu GLOB sẽ khớp với bất kỳ thành phần tên đường dẫn hiện có nào – tên đường dẫn có thể là một tệp, thư mục hoặc một số loại tên đường dẫn Unix khác (e. g. liên kết tượng trưng, ​​ổ cắm, fifo)

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
94

Hãy cẩn thận rằng mẫu GLOB mở rộng thành tên đường dẫn tương thích với lệnh bạn đang sử dụng

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
95

Các mẫu GLOB khớp với bất kỳ tên nào

Mỗi mã thông báo riêng biệt được trình bao tìm thấy trong dòng lệnh được kiểm tra các ký tự GLOB và các ký tự đó được mở rộng riêng. Một mã thông báo chứa các mẫu GLOB không bao giờ tạo ra các tên trùng lặp; . Cách duy nhất để cùng một tên đường dẫn xuất hiện hai lần là trình bao tìm hai mã thông báo riêng biệt chứa các ký tự GLOB và mở rộng chúng một cách riêng biệt

Một số dòng lệnh bên dưới tạo ra đầu ra trùng lặp hoặc ba lần;

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
96

Các dòng lệnh bên dưới tạo ra đầu ra giống hệt nhau;

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
97

Theo mặc định, các siêu ký tự GLOB không bao giờ khớp với một khoảng thời gian đầu trong thành phần tên đường dẫn. (Bạn có thể thay đổi hành vi này bằng các tùy chọn trình bao, nhưng không ai làm như vậy vì các tác dụng phụ được ghi chú bên dưới. )

Để khớp một thành phần tên đường dẫn bắt đầu bằng dấu chấm, bạn phải đặt dấu chấm thực ở đầu mẫu một cách rõ ràng. (Đây là lý do tại sao các mẫu GLOB không bao giờ khớp với các mục nhập thư mục

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
60 hoặc
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
6 trừ khi bạn bắt đầu mẫu bằng một khoảng thời gian. ) Quy tắc không có dấu chấm ở đầu thậm chí còn áp dụng cho danh sách ký tự GLOB chứa dấu chấm (
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
62) – chúng vẫn là các mẫu GLOB và không khớp với dấu chấm ở đầu trong tên đường dẫn

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
98

Việc từ chối khớp các tên ẩn là có để những người nhập những thứ như

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
951 không vô tình khớp và xóa nội dung của tên thư mục ẩn
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
6 khỏi tài khoản của họ

Lưu ý rằng các mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
953 và
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
954 khớp với tên đường dẫn
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
6 và do đó,
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
956 sẽ xóa đệ quy thư mục mẹ của bạn (nếu lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
941 không kiểm tra trước). Mẫu an toàn hơn là
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
958 dài ít nhất ba ký tự và do đó không khớp với
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
60 hoặc
$ touch a b c A B C abc ABC 1 2 3 123 1a 2b 3c x1 y2 z3
$ echo [[:lower:]]
a b c
$ echo [[:upper:]]
A B C
$ echo [[:alpha:]]
A B C a b c
$ echo [[:alpha:]]*
ABC B C a abc b c x1 y2 z3
$ echo *[[:alpha:]]
ABC B C a abc b c 1a 2b 3c
6 (hoặc bất kỳ tên có hai ký tự nào bắt đầu bằng dấu chấm)

Trong vỏ kiểu Bourne (e. g. BASH trên Linux), nếu shell không thể khớp mẫu GLOB trên dòng lệnh với bất kỳ tên đường dẫn hiện có nào, mẫu GLOB sẽ được shell âm thầm giữ nguyên và được chuyển không thay đổi cho lệnh đang được sử dụng

Không có thông báo lỗi nào được tạo bởi trình bao bởi GLOB bị lỗi; . Đây gần như không bao giờ là những gì bạn muốn. Ví dụ

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
99

Nếu khớp GLOB không thành công, vì không có tên nào khớp với mẫu, mẫu GLOB được chuyển không thay đổi cho lệnh. Thông thường, mẫu GLOB chưa được mở rộng không phải là thứ bạn muốn. Lệnh có thể tạo ra một thông báo lỗi cho tên đường dẫn không tồn tại được shell truyền cho nó

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
00

Một ví dụ khác về mẫu GLOB không thành công và được chuyển sang lệnh không thay đổi (không hữu ích)

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
01

C-Shell tạo thông báo lỗi khi các mẫu GLOB không thành công và từ chối chạy lệnh. Bạn cũng có thể tùy chọn làm cho BASH hoạt động theo cách này bằng cách đặt tùy chọn BASH

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
961 bằng cách sử dụng lệnh tích hợp sẵn
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
962 (rất khuyến khích. ). Tùy chọn đó sẽ gây ra lỗi khi sử dụng mẫu GLOB không khớp với bất kỳ thứ gì

Bởi vì trình bao thường không cho bạn biết rằng việc mở rộng GLOB bị lỗi, nên bạn có thể không nhận thấy rằng GLOB đang bị lỗi một cách lặng lẽ cho đến một ngày nào đó nội dung của hệ thống tệp thay đổi, khiến mẫu mở rộng

Dưới đây là hai ví dụ, một sử dụng ________ 1963 và một sử dụng ________ 1964

Ví dụ này đặt văn bản

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
965 trong một tệp và sử dụng lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
963 để tìm kiếm chuỗi GLOB không an toàn, không được trích dẫn
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
967 trong tệp

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
02

Ở trên, mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
967 không được trích dẫn không khớp với bất kỳ tên tệp nào, do đó, nó được chuyển không thay đổi dưới dạng một chuỗi cho lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
963, tìm kiếm nó trong tệp và in dòng chứa nó. cái này tốt

Bây giờ hãy xem điều gì xảy ra với lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
963 giống hệt nhau khi chúng ta chỉ tạo một tệp kích hoạt mẫu GLOB không được trích dẫn để mở rộng

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
03

Bạn có thể sử dụng lại

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
937 để chẩn đoán sự cố

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
04

GLOB mới mở rộng biến một lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
963 đang hoạt động thành một lệnh không thành công. Lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
963 có thể đã hoạt động chính xác trong nhiều năm, cho đến một ngày ai đó tạo một tệp kích hoạt mẫu GLOB gây ra lỗi

Nếu bạn không muốn thứ gì đó trông giống như mẫu GLOB được mở rộng bởi trình bao, hãy nhớ trích dẫn nó để ẩn các ký tự GLOB khỏi trình bao

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
05

Shell sẽ luôn cố gắng mở rộng các mã thông báo trông giống như các mẫu GLOB được sử dụng trên các dòng lệnh. Đừng dựa vào GLOB không thành công nếu bạn không muốn các ký tự GLOB mở rộng. Luôn trích dẫn các đối số chứa các ký tự mà trình bao có thể coi là phần mở rộng TOÀN CẦU (đặc biệt là các đối số cho lệnh ________ 1963 và ________ 1944)

Đây là ví dụ thứ hai sử dụng biểu thức GLOB không an toàn, không được trích dẫn

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
06

Ở trên, mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
976 không được trích dẫn không khớp với bất kỳ tên tệp nào, do đó, nó được chuyển không thay đổi dưới dạng mẫu cho lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
964, sử dụng nó (một mẫu) để tìm và hiển thị tất cả các tên có chứa
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
978 trong thư mục
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
979

Bây giờ hãy xem điều gì xảy ra với lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
964 giống hệt nhau khi chúng tôi tạo một số tệp kích hoạt mẫu GLOB không được trích dẫn để mở rộng

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
07

Bạn có thể sử dụng lại

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
937 để chẩn đoán sự cố

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
08

GLOB mới mở rộng biến một lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
964 đang hoạt động thành một lệnh không thành công. Lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
964 có thể đã hoạt động chính xác trong nhiều năm, cho đến một ngày ai đó tạo tệp kích hoạt mẫu GLOB gây ra lỗi

Nếu bạn không muốn thứ gì đó trông giống như mẫu GLOB được mở rộng bởi trình bao, hãy nhớ trích dẫn nó để ẩn các ký tự GLOB khỏi trình bao

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
09

Shell sẽ luôn cố gắng mở rộng các mã thông báo trông giống như các mẫu GLOB được sử dụng trên các dòng lệnh. Đừng dựa vào GLOB không thành công nếu bạn không muốn các ký tự GLOB mở rộng. Luôn trích dẫn các đối số chứa các ký tự mà trình bao có thể coi là bản mở rộng GLOB (đặc biệt là các đối số cho lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
964)

Các mẫu GLOB được shell khớp và mở rộng trước khi lệnh được chạy

Lệnh dưới đây với hai ký tự GLOB tạo hai tệp trong một thư mục trống vì không ký tự GLOB nào khớp với bất kỳ tệp nào tại thời điểm trình bao tìm kiếm chúng

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
80

Bộ hai lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
985 có vẻ giống nhau bên dưới chỉ tạo một tệp vì mẫu GLOB của lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
985 thứ hai khớp với tệp được tạo bởi lệnh
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
985 đầu tiên

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
81

Các mẫu GLOB được shell mở rộng trên dòng lệnh trước khi lệnh được chạy

Các mẫu GLOB áp dụng trong thư mục được chỉ định bởi vị trí trong tên đường dẫn nơi chúng xuất hiện. Ví dụ (hãy tự mình thử)

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
82

Mẫu GLOB xuất hiện ở bên trái của bất kỳ dấu gạch chéo nào phải khớp với một hoặc nhiều tên thư mục (hoặc liên kết tượng trưng đến tên thư mục); . Trong các ví dụ bên dưới, mẫu GLOB phải khớp với…

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
83

Các ký tự GLOB có thể khớp với bất kỳ ký tự nào trong thành phần tên đường dẫn, bao gồm khoảng trắng, dòng mới và ký tự không in được, nhưng chúng không khớp hoặc vượt qua dấu gạch chéo phân tách các thành phần tên đường dẫn. Các mẫu GLOB shell thông thường không khớp với dấu gạch chéo trong tên đường dẫn. (Lệnh

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
964 có thể gạch chéo, cũng như các mẫu GLOB có thể sử dụng tùy chọn shell
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
989
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
990. )

Nếu mã thông báo chứa các mẫu GLOB có hai dấu gạch chéo không liền kề, thì tất cả các tên đường dẫn hiện có phù hợp cũng phải có chính xác hai dấu gạch chéo

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
84

Mẫu GLOB không gạch chéo trong tên đường dẫn

Nếu mã thông báo chứa mẫu GLOB có N dấu gạch chéo không liền kề, thì tất cả các tên đường dẫn hiện có phù hợp cũng sẽ có cùng số dấu gạch chéo

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
85

Để khớp nhiều cấp độ tên đường dẫn trong hệ thống phân cấp thư mục, bạn phải sử dụng mẫu GLOB riêng biệt giữa mỗi dấu gạch chéo

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
86

Danh sách tên đường dẫn được tạo bởi các mẫu GLOB

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
991 và
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
992 không có tên đường dẫn chung. Danh sách đầu tiên chỉ chứa tên đường dẫn với một dấu gạch chéo; . Mẫu GLOB
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
7 không khớp với dấu gạch chéo phân tách các thành phần tên đường dẫn

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
87

Các mẫu GLOB cơ bản khớp với các tên không ẩn trong thư mục hiện tại

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
88

Các mẫu vỏ này khớp với tất cả các tên không ẩn trong thư mục

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
994

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
89

Các mẫu này khớp với tất cả các tên không ẩn trong thư mục

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
995 (cha mẹ)

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
0

Các mẫu này khớp với tất cả các tên không ẩn trong thư mục ROOT (thư mục mẹ của thư mục mẹ của

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
994)

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
1

Đưa ra một thư mục hiện có

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
997, đối số tên đường dẫn này là hợp lệ

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
2

Đã cho tên tệp

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
998, đối số tên đường dẫn tương tự này không hợp lệ

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
3

Không thể sử dụng tên tệp

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
998 như thể nó là một thư mục. Chỉ tên thư mục có thể xuất hiện ở bên trái dấu gạch chéo trong tên đường dẫn Unix hợp lệ

Nếu chúng tôi thay thế tên

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
997 trong mã thông báo
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
001 bằng mẫu GLOB, như trong
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
002, kết quả chỉ có thể mở rộng thành tên đường dẫn hợp lệ nếu mẫu GLOB khớp với thư mục

Câu hỏi. Đầu ra của

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
003 là gì và nó khác với mẫu
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
67 như thế nào? . Làm thế nào để sử dụng
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
002 thay đổi điều này?

Dấu. Ký tự đại diện (mẫu GLOB) chỉ mở rộng để khớp với tên hợp lệ, do đó, ký tự đại diện

$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
002 chỉ khớp với tên trong đó
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
002 là tên đường dẫn hợp lệ. Mẫu
$ touch abc aBc aBC ABc ABC Abc
$ echo abc*
abc
$ echo [aA]bc
Abc abc
$ echo [aA][bB]c
ABc Abc aBc abc
$ echo [aA][bB][cC]
ABC ABc Abc aBC aBc abc
002 chỉ có thể hợp lệ nếu mẫu GLOB ở bên trái dấu gạch chéo khớp với một loại tên cụ thể. Nó là gì?