Làm thế nào để sử dụng Brace Expansion trong Bash Shell Linux

May 12, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock [số 8]

Nẹp mở rộng là một kỹ thuật hữu ích để tạo danh sách các chuỗi có thể được sử dụng trong các tập lệnh và bí danh và trên dòng lệnh linux. Tiết kiệm thời gian và tránh những sai lầm bằng cách gõ ít hơn.

Niềng răng mở rộng.

Trước vỏ bash thực thi một lệnh Trong một cửa sổ đầu cuối hoặc một dòng trong tập lệnh, nó sẽ kiểm tra xem nó có cần thực hiện bất kỳ sự thay thế nào trên lệnh hay không. Tên biến được thay thế bằng các giá trị của chúng, các bí danh sẽ được thay thế bằng các lệnh mà họ là tốc ký và bất kỳ sự mở rộng nào được thực hiện. Mở rộng nẹp là một dạng mở rộng được hỗ trợ bởi Bash.

Mở rộng nẹp có sẵn trong vỏ hiện đại, nhưng nó có thể bị thiếu từ một số vỏ cũ. Nếu bạn sẽ sử dụng sự mở rộng nẹp trong các tập lệnh, hãy đảm bảo rằng bạn gọi một shell hỗ trợ mở rộng nẹp, chẳng hạn như bash:

Chúng tôi sẽ sử dụng Bash cho các ví dụ của chúng tôi.

Tạo danh sách các chuỗi có vẻ có vẻ mới lạ hơn một lợi ích, nhưng nó cung cấp một số chức năng có thể tiết kiệm thời gian và tổ hợp phím. Thông thường, nó có thể cung cấp một giải pháp đơn giản và thanh lịch cho một vấn đề hoặc yêu cầu.

Mở rộng đơn giản

Việc mở rộng nẹp được chứa giữa một cặp niềng răng "{}". Nó có thể là một danh sách các vật phẩm được phân tách bằng dấu phẩy hoặc một công cụ xác định phạm vi. Không gian không được phép bên trong niềng răng trừ khi bạn kết thúc chuỗi trong dấu ngoặc kép " " . "

Đối với một danh sách được phân tách bằng dấu phẩy, quá trình mở rộng sẽ lấy từng phần tử lần lượt và chuyển nó sang lệnh gọi. Trong ví dụ này, nó là echo. đó đơn giản in chúng trong cửa sổ đầu cuối . Lưu ý rằng dấu phẩy bị bỏ qua.

 echo {một, hai, ba, bốn} 

Một danh sách có thể là từ hoặc chữ số.

 echo {1,2,3,4} 

Thứ tự của các yếu tố danh sách là hoàn toàn tùy ý.

 Echo (4,2,3,1) 

Phạm vi mở rộng có một sự khởi đầu và một ký tự kết thúc được kết nối với hai giai đoạn .. "Không có bất kỳ khoảng trắng nào. Tất cả các phần tử danh sách còn thiếu được cung cấp tự động bởi sự mở rộng để toàn bộ phạm vi từ ký tự bắt đầu đến ký tự kết thúc được tạo.

Điều này sẽ in các chữ số từ 1 đến 10.

 echo {1.10} 

Việc đánh số là tùy ý. Nó không phải bắt đầu tại một.

 echo {3.12} 

Phạm vi có thể được chỉ định để chúng chạy về phía sau. Điều này sẽ tạo một danh sách từ năm xuống một.

 echo {5..1} 

Phạm vi có thể bao gồm số âm.

 echo {4 ..- 4} 

Như chúng ta đã chỉ ra, một phạm vi có một sự khởi đầu và kết thúc tính cách . Nó không phải là một số. Nó có thể là một lá thư.

 echo {q....v} 

Các chữ cái có thể chạy về phía sau, quá.

 echo {f..đa} 

Sử dụng sự mở rộng nẹp với các vòng lặp

Bạn có thể sử dụng sự mở rộng nẹp với phạm vi trong các vòng lặp trong các tập lệnh.

 đối với tôi trong {3..7}
làm
   echo $ I.
thực hiện 

Phạm vi mở rộng nẹp cho phép bạn sử dụng các ký tự như biến vòng lặp.

 cho tôi trong {m..q}
làm
   echo $ I.
thực hiện 

Vòng lặp thường được sử dụng trong các tập lệnh, nhưng không có gì để ngăn bạn gõ chúng vào dòng lệnh để xem điều gì sẽ xảy ra.

 đối với tôi trong {3..7}; Do echo $ i; thực hiện 

 cho tôi trong {m..q}; Do echo $ i; thực hiện 

Nối và làm tổ

Hai bản mở rộng liền kề không hành động độc lập lần lượt. Họ tương tác. Mỗi phần tử trong lần mở rộng đầu tiên được thực hiện bởi từng yếu tố trong lần mở rộng thứ hai.

 echo {q..v} {1..3} 

Mở rộng cũng có thể được lồng nhau. Một sự mở rộng lồng nhau sẽ hoạt động trên phần tử ngay trước nó.

 echo {pc-1, part-2 {a, b, c, d}, phần 3} 

Bạn cũng có thể làm tổ mở rộng bằng cách tạo một danh sách các bản mở rộng phạm vi được phân tách bằng dấu phẩy.

 echo {{5...0}, {1.5}} 

Lời mở đầu và Postcript.

Bạn có thể đặt văn bản trước và sau khi mở rộng nẹp để có văn bản đó có trong kết quả mở rộng. Văn bản đặt trước sự mở rộng được gọi là lời mở đầu, trong khi văn bản được đặt phía sau sự mở rộng của nẹp được gọi là PostScript.

Lệnh này sử dụng một phần mở đầu.

 echo chương {1..3} 

Ví dụ này sử dụng PostScript:

 echo {nội dung, giấy, bilbiography} .md 

Và lệnh này sử dụng cả hai.

 echo chương- {1..4} .md 

Mở rộng tên tệp và thư mục

Như bạn có thể đoán bây giờ, một trong những cách sử dụng chính của việc mở rộng nẹp là tạo tên tệp và thư mục có thể được truyền cho các lệnh khác. Chúng tôi đã sử dụng echo. Là một cách thuận tiện để xem chính xác những gì xảy ra khi việc mở rộng được kích hoạt. Bạn có thể thay thế bất kỳ lệnh nào có tên tệp hoặc tên thư mục dưới dạng đầu vào và sử dụng sự mở rộng nẹp với nó.

Nhanh chóng Tạo một số tệp , sử dụng chạm vào :

 Chạm vào tệp- {1..4} .txt 
 ls * .txt 

Nếu bạn có nhiều tệp có cùng tên cơ sở nhưng các phần mở rộng tệp khác nhau và bạn muốn thực hiện thao tác trên một tập hợp con của chúng, việc mở rộng nẹp có thể giúp ích. Tại đây, chúng tôi đang nén một tập hợp con của các tệp có "chương trình" dưới dạng basename thành một tệp zip có tên là "nguồn-code.zip."

Các thư mục phát triển chứa nhiều tệp sẽ có cùng một basename như chương trình chính của bạn. Thông thường, bạn không muốn sao lưu hoặc phân phối các tệp như tệp đối tượng ".o". Đây là một cách gọn gàng để chỉ bao gồm các loại tiền lãi.

 Chương trình mã nguồn ZIP {.c, .h, .css} 

Lệnh này sẽ tạo một bản sao của một tệp và nối thêm ".bak" với nó, tạo một bản sao lưu của tệp gốc. Một điểm thú vị cần lưu ý là việc mở rộng nẹp chứa danh sách được phân tách bằng dấu phẩy, nhưng phần tử đầu tiên trống. Nếu chúng tôi không bao gồm dấu phẩy, việc mở rộng sẽ không diễn ra.

 cp nẹp / mới / prog-1.c {,. Bak} 
 ls nẹp / mới / prog-1.c.bak 

Để thực hiện một số hành động trên hai tệp trong các thư mục khác nhau, chúng ta có thể sử dụng mở rộng nẹp trên đường dẫn đến các tệp.

Trong ví dụ này, thư mục "nẹp" chứa hai thư mục con, một tên gọi là "mới" và một cái gọi là "cũ". Chúng chứa các phiên bản khác nhau của cùng một tập hợp các tệp mã nguồn. Chúng tôi sẽ sử dụng. khác nhau chương trình để xem sự khác biệt giữa hai phiên bản của "prog-1.c".

 Nẹp khác nhau / {mới, cũ} / prog-1.c 

Nếu bạn có một bộ xương tiêu chuẩn của các thư mục mà bạn cần tạo khi bắt đầu một dự án, bạn có thể tạo chúng nhanh chóng bằng cách sử dụng brace expansion. Các mkdir. -P (phụ huynh) tùy chọn tạo bất kỳ thư mục cha mẹ bị mất khi một thư mục con được tạo ra.

 MKDIR -P {nguồn, xây dựng, man, trợ giúp {/ trang, / yelp, / hình ảnh}} 
 Cây 

Bạn có thể sử dụng mở rộng nẹp với wget. đến Tải xuống nhiều tệp .

Trong lệnh này, chúng ta sẽ tải xuống các tệp từ hai thư mục, được gọi là "Test1" và "Test2". Mỗi thư mục chứa hai tệp có tên là "Picture1" và "Ảnh2".

 wget https://www.url-of-your-choice.com/test {2,21/picture <001.0021.jpg

Liệt kê các tệp hiển thị cho bạn các tệp đã được lấy và cách wget. Đổi tên tệp để tránh tên xung đột với các tệp hiện có.

 ls hình ảnh *. * 

Ôm lấy nẹp.

Có vẻ như sự mở rộng của niềng răng là một trong những khác Những bí mật được giữ tốt nhất của Linux . Nhiều người nói với tôi rằng họ chưa bao giờ nghe nói về việc mở rộng nẹp, trong khi những người khác thông báo cho tôi rằng đó là một trong những thủ thuật dòng lệnh yêu thích của họ.

Hãy thử và nó chỉ có thể tìm đường vào các thủ thuật Go-Line-Line của bạn.


Linux - Các bài báo phổ biến nhất

Cách khôi phục các tệp đã xóa trên Linux với TestDisk

Linux Nov 18, 2024

Fatmawati Achmad Zaenuri / Shutterstock [số 8] Bạn đã bao giờ xóa một tập tin và ngay lập tức hối hận? Bạn cần nó trở lại, v..


Làm thế nào để khóa máy Mac của bạn sử dụng Terminal

Linux Feb 16, 2025

Một trong những quy tắc đầu tiên của an ninh mạng luôn luôn khóa máy tính của bạn trước khi bước ra khỏi nó. Mặc dù nó có thể không phải là cá..


Làm thế nào để Hide All Desktop Icons trên Mac

Linux Jun 23, 2025

Krisda / Shutterstock. [số 8] Máy tính để bàn Mac của bạn là một mớ hỗn độn? Đừng thực sự muốn tổ chức tất cả mọi ..


The Best Linux Máy tính xách tay của năm 2021 cho nhà phát triển và người nhiệt tình

Linux Sep 27, 2025

tomeqs / shutterstock.com. [số 8] Những gì cần tìm trong một máy tính xách tay Linux vào năm 2021 Bạn có thể mua gần như..


Máy tính xách tay Gaming Gaming mới này có thông số kỹ thuật để chạy bất cứ thứ gì

Linux Oct 20, 2025

Máy tính Juno [số 8] Linux và Gaming đang bắt đầu đến với nhau rất nhiều gần đây. Các Dàn Steam. đang trên đường với Lin..


Cách cài đặt Linux trên M1 Mac với Apple Silicon

Linux Nov 11, 2024

Hỗ trợ Linux bản địa cho kiến ​​trúc dựa trên cánh tay mới của Apple vẫn chưa sẵn sàng, nhưng bạn có thể chạy Linux trên một M1. , M1 Pr..


UNIX EPOCH là gì và thời gian UNIX hoạt động như thế nào?

Linux Nov 10, 2024

Mikhail Leonov / Shutterstock [số 8] Unix lưu trữ thời gian là số giây kể từ ngày 1 tháng 1 năm 1970. Và điều đó có nghĩa là Lin..


Cách thêm người dùng vào tệp sudoers trong Linux

Linux Oct 30, 2025

Nếu một sudo Lệnh trên Linux mang đến cho bạn một thông báo rằng người dùng không có trong tệp sudoers, bạn sẽ cần phải có trong danh sách của S..


Thể loại