116
Bash
Bảng 5.4: Các ký tự tạo mẫu
Ký tự
Quy luật thay thế
*
Tương ứng với bất kỳ dòng ký tự nào, kể cả dòng rỗng. Ví dụ, v*.txt
sẽ được thay thế bởi vnoss.txt, vnlinux.txt và vntex.txt
(nếu các tập tin này tồn tại), và *.png sẽ tương ứng tất cả các tập tin có
phần mở rộng png (tập tin đồ họa hai chiều).
?
Tương
ứng
bất
ký
một
ký
tự
đơn
nào.
Ví
dụ,
mẫu
file?.txt
sẽ
được
thaythế
bởi
các
tên
tệp
sau
file1.txt, file2.txt, file3.txt
,
và
filea.txt
(nếu chúng tồn tại), nhưng file23.txt thì không.
[...]
Tương ứng bất kỳ ký tự nào trong số các ký tự nằm trong dấu ngoặc
vuông này. Cặp ký tự, phân cách nhau bởi dấu trừ (-), ví dụ c-f, biểu
thị một dãy; bất ký ký tự nào, theo từ điển, nằm giữa hai ký tự này, kể cả
hai ký tự tạo ra dãy (c và f trong ví dụ) cũng tương ứng với mẫu. Nếu
ký tự đầu tiên trong ngoặc vuông là hay ˆ, thì mẫu (ở vị trí này) sẽ tương
ứng tất cả các ký tự, không được chỉ ra trong ngo
Mẫu tên tập tin rất thường xuyên sử dụng trong dòng lệnh có chứa ls. Hãy
tưởng tượng là bạn muốn xem thông tin của một thư mục, trong đó có chứa một
số lượng lớn các tập tin đủ các dạng, ví dụ, tập tin hình ảnh, phim với dạng gif,
jpeg, avi, v.v. . . . Để thu được thông tin chỉ của tập tin dạng jpeg, có thể dùng
câu lệnh
[user]$ ls *.jpg
Nếu trong thư mục có nhiều tập tin, mà tên của chúng là các số gồm bốn chữ
số (thư mục /proc là một ví dụ+), thì lệnh sau chỉ đưa ra danh sách các tập tin
có số từ 0500 đến 0999:
[user]$ ls -l 0[5-9]??
5.7.8
Xóa các ký tự đặc biệt
Sau khi làm xong tất cả các phép thế, các ký tự \, ‘ và " còn lại trong dòng
lệnh (chúng được sử dụng để huỷ bỏ giá trị đặc biệt của các ký tự khác) sẽ bị xóa
hết.
5.8
Shell - một ngôn ngữ lập trình
Như đã nói ở trên, để có thể xây dựng bất kỳ giải thuật nào, cũng cần có các toán
tử kiểm tra điều kiện. Hệ vỏ bash hỗ trợ các toán tử lựa chọn if...then...else
và case, cũng như các toán tử vòng lặp for, while, until, nhờ đó nó (bash)
trở thành một ngôn ngữ lập trình mạnh.