Khai triển các mẫu tên tập tin và thư mục (Pathname Expansion)

Một phần của tài liệu Giáo an Bài giảng: Công nghệ thông tin về cài đặt HDH Linux và windows trên cùng một máy tính (Trang 39 - 40)

40 Bash • /usr/ucb/edit

3.7.7Khai triển các mẫu tên tập tin và thư mục (Pathname Expansion)

Phép thế tên đường dẫn và tập tin (Pathname expansion) sử dụng để chỉ nhờ một mẫu nhỏ gọn mà có thể chỉ ra vài tập tin (hay thư mục), tương ứng vối mẫu này. Sau khi phân chia từ, và nếu như không đưa ra tùy chọn - f , thì b a s h sẽ tìm kiếm trong từng từ của dòng lệnh các ký tự *, ? , và [. Nếu tìm thấy từ với một hay vài ký tự như vậy, thì từ này sẽ được xem như một mẫu, và càn thay thế bời các từ trong danh sách đường dẫn, tương ứng với mẫu này. Nếu như không tìm thấy tên tương ứng với mẫu, và biến nullglob không được đưa ra, thì từ sẽ không thay đổi, tức là các ký tự đặc biệt bị mất giá trị và hiểu như các ký tự thường. Nếu như biến này được xác định, mà đường dẫn tương ứng với mẫu không tìm thấy, thì từ sẽ bị xóa khỏi dòng lệnh. Các ký tự dùng để tạo mẫu có các giá trị trong bảng 3.4

42 Bash

Bàng 3.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* . t x t sẽ được thay thế bởi v n o s s . t x t , v n l i n u x . t x t và v n t e x . t x t (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).

7 Tương ứng bất ký một ký tự đơn nào. Ví dụ, mẫu f i l e 7 . t x t sẽ được thaythế bời các tên tệp sau f i l e l . t x t , f i l e 2 . t x t , f i l e 3 . t x t , và f i l e a . t x t (nếu chúng tồn tại), nhưng f i l e 2 3 . t x t 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 chi 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 l s . Hãy tưởng tượng là bạn muốn xem thông tin của một thu' 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

--- kênh giao tác --- [user] $ Is *.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 / p r o c 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:

--- kênh giao tác --- [user] $ Is - 1 0 [5-9]??

Một phần của tài liệu Giáo an Bài giảng: Công nghệ thông tin về cài đặt HDH Linux và windows trên cùng một máy tính (Trang 39 - 40)