Mục đích của ngoại khóa shopt -s là gì


15

Tôi muốn xóa tất cả các tập tin từ thư mục ngoại trừ một. Tôi tìm thấy giải pháp của tôi ở đây . Giải pháp này đang sử dụng một lệnh

shopt -s extglob

Tôi muốn biết chính xác lệnh này đang làm gì, một số kiến ​​thức cuối cùng. Tôi cũng đã thêm một nhận xét về câu trả lời này nhưng không nhận được trả lời cho đến bây giờ. Là một người dùng mới sử dụng Ubuntu, tôi tò mò muốn biết lệnh này đang làm gì.

Câu trả lời:


16

Nói một cách đơn giản, globalbing dùng để chỉ mẫu phù hợp. Bash sử dụng như thế giới đơn giản, echo l*mở rộng ra danh sách các tệp trong thư mục hiện tại bắt đầu bằng chữ cái l. Tất nhiên, như bạn có thể đoán, nó đơn giản và hạn chế.

Nhập extglob. Như bạn có thể đoán, nó là viết tắt của extended globbing. Tùy chọn này cho phép khớp mẫu tiên tiến hơn. Từ man bash:

extglob If set, the extended pattern matching features described
        above under Pathname Expansion are enabled.

Và một chút trước đó:

If the extglob shell option is enabled using the shopt builtin, several
extended pattern matching operators are recognized.  In  the  following
description, a pattern-list is a list of one or more patterns separated
by a |.  Composite patterns may be formed using  one  or  more  of  the
following sub-patterns:

      ?(pattern-list)
             Matches zero or one occurrence of the given patterns
      *(pattern-list)
             Matches zero or more occurrences of the given patterns
      +(pattern-list)
             Matches one or more occurrences of the given patterns
      @(pattern-list)
             Matches one of the given patterns
      !(pattern-list)
             Matches anything except one of the given patterns

Có vô số cách extglobcó thể được sử dụng. Khá nhiều ví dụ hay được cung cấp trong Tạp chí Linuxwiki của Greg .

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.