Khai Dân Trí
  • Home
  • Sức khỏe
    • All
    • Các bệnh

    Đau thận có phải là triệu chứng của COVID-19 không?

    Thủ tục ERCP là gì?

    Mức độ phổ biến của chứng động kinh sau chấn động?

    Thuốc kháng histamine có thể gây hôi miệng không?

    • Các bệnh
  • Công nghệ
    • Điện thoại & Máy tính
  • Bách khoa toàn thư
No Result
View All Result
  • Home
  • Sức khỏe
    • All
    • Các bệnh

    Đau thận có phải là triệu chứng của COVID-19 không?

    Thủ tục ERCP là gì?

    Mức độ phổ biến của chứng động kinh sau chấn động?

    Thuốc kháng histamine có thể gây hôi miệng không?

    • Các bệnh
  • Công nghệ
    • Điện thoại & Máy tính
  • Bách khoa toàn thư
No Result
View All Result
Khai Dân Trí
No Result
View All Result
Home Công nghệ Điện thoại & Máy tính

Cách sử dụng Brace Expansion trong Linux’s Bash Shell

by Trọng Hiếu
23/05/2021
in Điện thoại & Máy tính
0
Fatmawati Achmad Zaenuri / Shutterstock

Mở rộng dấu ngoặc nhọn 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 sai sót bằng cách gõ ít hơn.

Mở rộng Brace

Trước khi trình bao Bash thực thi một lệnh trong 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ỳ thay thế nào trên lệnh hay không. Tên biến được thay thế bằng giá trị của chúng, bí danh được thay thế bằng lệnh viết tắt của chúng và bất kỳ mở rộng nào được thực hiện. Mở rộng Brace là một hình thức mở rộng được hỗ trợ bởi Bash.

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

#!/bin/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ẻ mới lạ hơn là 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à số lần gõ 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

Một mở rộng dấu ngoặc nhọn được chứa giữa một cặp dấu ngoặc nhọn “{}”. Nó có thể là một danh sách các mục được phân tách bằng dấu phẩy hoặc một số chỉ định phạm vi. Không cho phép khoảng trắng bên trong dấu ngoặc nhọn trừ khi bạn đặt chuỗi trong dấu ngoặc kép “". ”

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

echo {one,two,three,four}

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

echo {1,2,3,4}

Thứ tự của các phần tử trong danh sách là hoàn toàn tùy ý.

echo (4,2,3,1)

Phạm vi mở rộng có ký tự bắt đầu và ký tự kết thúc được kết nối bằng hai dấu chấm ” .. ”Mà không có bất kỳ khoảng trắng nào. Tất cả các phần tử danh sách bị thiếu được cung cấp tự động bởi phần 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.

Thao tác 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ừ một.

echo {3..12}

Phạm vi có thể được chỉ định để chúng chạy lùi. Điều này sẽ tạo ra 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 tôi đã chỉ ra trước đây, một phạm vi có bắt đầu và kết thúc tính cách. Nó không nhất thiết phải là một con số. Nó có thể là một lá thư.

echo {q..v}

Các chữ cái cũng có thể chạy lùi.

echo {f..a}

Sử dụng Brace Expansion with Loops

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

for i in {3..7}
do
   echo $i
done

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

for i in {m..q}
do
   echo $i
done

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 nhập chúng vào dòng lệnh để xem điều gì sẽ xảy ra.

for i in {3..7}; do echo $i; done

for i in {m..q}; do echo $i; done

Kết nối và làm tổ

Hai phần mở rộng liền kề không hoạt động độc lập với nhau. Chúng tương tác với nhau. Mỗi phần tử trong phần mở rộng đầu tiên được tác động bởi mỗi phần tử trong phần mở rộng thứ hai.

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

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

echo {part-1,part-2{a,b,c,d},part-3}

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

echo {{5..0},{1..5}}

Mở đầu và Tái bút

Bạn có thể đặt văn bản trước và sau phần mở rộng dấu ngoặc nhọn để đưa văn bản đó vào kết quả của phần mở rộng. Văn bản đặt trước phần mở rộng được gọi là phần mở đầu, trong khi phần văn bản đặt phía sau phần mở rộng được gọi là phần tái bút.

Lệnh này sử dụng lời mở đầu.

echo chapter{1..3}

Ví dụ này sử dụng một đoạn tái bút:

echo {contents,paper,bilbiography}.md

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

echo chapter-{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ông dụng chính của mở rộng dấu ngoặc nhọn là tạo tên tệp và thư mục có thể được chuyển cho các lệnh khác. Chúng tôi đã và đang sử dụng echo như một cách thuận tiện để xem chính xác điều gì sẽ xảy ra khi kích hoạt mở rộng. Bạn có thể thay thế bất kỳ lệnh nào lấy tên tệp hoặc tên thư mục làm đầu vào và sử dụng mở rộng dấu ngoặc nhọn với nó.

Để tạo nhanh một số tệp, hãy sử dụng touch:

touch file-{1..4}.txt
ls *.txt

Nếu bạn có nhiều tệp có cùng tên cơ sở nhưng 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, thì mở rộng dấu ngoặc nhọn có thể hữu ích. Ở đây, chúng tôi đang nén một tập hợp con các tệp có “chương trình” làm tên cơ sở thành một tệp ZIP có tên là “source-code.zip”.

Thư mục phát triển chứa nhiều tệp sẽ có cùng tên cơ sở với 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 tệp quan tâm.

zip source-code program{.c,.h,.css}

Lệnh này sẽ tạo một bản sao của một tệp và thêm “.bak” vào 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à phần mở rộng dấu ngoặc nhọn chứa danh sách được phân tách bằng dấu phẩy, nhưng phần tử đầu tiên lại 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 brace/new/prog-1.c{,.bak}
ls brace/new/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 dấu ngoặc nhọn trong đường dẫn đến tệp.

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

diff brace/{new,old}/prog-1.c

Nếu bạn có một khung thư mục tiêu chuẩn mà bạn cần tạo khi bắt đầu dự án, bạn có thể tạo chúng nhanh chóng bằng cách sử dụng mở rộng dấu ngoặc nhọn. Các mkdir -p (cha) tùy chọn tạo bất kỳ thư mục mẹ nào bị thiếu khi một thư mục con được tạo.

mkdir -p {source,build,man,help{/pages,/yelp,/images}}
tree

Bạn có thể sử dụng mở rộng dấu ngoặc nhọn với wget để 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 gọi là “picture1” và “picture2”.

wget https://www.URL-of-your-choice.com/test{1,2}/picture{001,002}.jpg

Liệt kê các tệp cho bạn biết các tệp đã được truy xuất và cách wget đổi tên tệp để tránh xung đột tên với các tệp hiện có.

ls picture*.*

Ôm giá đỡ

15 ký tự đặc biệt bạn cần biết cho Bash

LIÊN QUAN15 ký tự đặc biệt bạn cần biết cho Bash

Có vẻ như việc mở rộng dấu ngoặc kép là một trong những bí mật được giữ kín 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ề mở rộng dấu ngoặc kép, trong khi những người khác nói với 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ó có thể tìm thấy đường vào tập hợp các thủ thuật sử dụng dòng lệnh của bạn.

Tags: bashBraceCáchdungExpansionLinuxsShellsựtrong
Trọng Hiếu

Trọng Hiếu

Xem thêm

Điện thoại & Máy tính

Cách đếm các ký tự trong một ô trong Google Trang tính

27/06/2022
Điện thoại & Máy tính

Cách tìm địa chỉ IP của iPhone của bạn

27/06/2022
Điện thoại & Máy tính

Cách chia sẻ vị trí trực tiếp của bạn với bạn bè trên Snapchat vào năm 2022

27/06/2022
Điện thoại & Máy tính

Các ứng dụng web JavaScript không đi đâu cả

27/06/2022
Điện thoại & Máy tính

Cách để Trợ lý Google đọc to mọi trang web

27/06/2022
Điện thoại & Máy tính

Tại sao game thủ nên nâng cấp từ màn hình 60Hz

26/06/2022
Điện thoại & Máy tính

Card đồ họa giá rẻ của Nvidia, GTX 1630 có thể sẽ ra mắt vào ngày 28 tháng 6

26/06/2022
Điện thoại & Máy tính

Ethernet Splitter so với Switch: Sự khác biệt là gì?

26/06/2022
Điện thoại & Máy tính

OnePlus có thể ra mắt TWS & thiết bị đeo mới vào quý 3 năm 2022

26/06/2022

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Bài viết mới

Đau thận có phải là triệu chứng của COVID-19 không?

27/06/2022

Cách đếm các ký tự trong một ô trong Google Trang tính

27/06/2022

Thủ tục ERCP là gì?

27/06/2022

Mức độ phổ biến của chứng động kinh sau chấn động?

27/06/2022
Khai Dân Trí

Website phổ biến kiến thức, tin tức và bình luận, nhằm nâng cao dân trí.

No Result
View All Result
  • Home
  • Sức khỏe
    • Các bệnh
  • Công nghệ
    • Điện thoại & Máy tính
  • Bách khoa toàn thư

© 2022 JNews - Premium WordPress news & magazine theme by Jegtheme.