CƠ BẢN VỀ CHỨNG CHỈ LPI - Trang 27

18

Cơ bản về Linux

Để giải quyết vấn đề này, chúng ta có thể lợi dụng sự hỗ trợ ký tự đại diện có sẵn trên

Linux. Sự hỗ trợ này, còn gọi là "globbing" (vì lý do lịch sử), cho phép người dùng chỉ rõ
nhiều tệp tin một lúc, dùng một mẫu đại diện

27

nào đó. Bash và các câu lệnh Linux khác sẽ

biên dịch mẫu này, và tìm trên hệ thống

28

tất cả các tệp tin tương ứng nó. Nhờ vậy, nếu có

các tệp tin tep1, tep2,...i tep8 trong thư mục hiện thời, bạn có thể xóa những tệp này mà chỉ
cần gõ:

rm tep[1-8]

Hoặc nếu bạn muốn xóa tất cả các tệp tin mà bắt đầu bằng tep cũng như tệp tin nào có

tên tep, hãy gõ:

$ rm tep*

Ký tự đại diện * tương ứng bất kỳ ký tự hay chuỗi ký tự nào, và thậm thí "không có ký

tự" cũng tương ứng. Tất nhiên, có thể sử dụng đại diện "toàn cầu" (glob wildcards) để xóa
tệp tin một cách đơn giản hơn, như chúng ta sẽ thấy trong các phần tiếp theo.

2.4.2

Hiểu về không tương ứng

Nếu muốn liệt kê tất cả đối tượng của hệ thống tập tin trong /etc bắt đầu bằng g cũng như
mọi tệp tin có tên là g, bạn cần gõ:

$ ls -d /etc/g*

/etc/gaim

/etc/gnome

/etc/group-

/etc/gtk

/etc/gateways

/etc/gnome-vfs-2.0

/etc/group.org

/etc/gtk-2.0

/etc/gconf

/etc/gnome-vfs-mime-magic

/etc/gs-gpl

/etc/gdm

/etc/groff

/etc/gshadow

/etc/gimp

/etc/group

/etc/gshadow-

Bây giờ, điều gì sẽ xảy ra nếu bạn dùng một mẫu mà không có đối tượng nào tương ứng?

Không có cách kiểm ra nào tốt hơn là một ví dụ: chúng ta thử liệt kê tất cả các tệp tin trong
/usr/bin bắt đầu bằng asdf và kết thúc bằng jkl,, gồm cả tệp tin có thể có là asdfjkl:

$ ls -d /usr/bin/asdf*jkl

ls:

/usr/bin/asdf*jkl:

No such file or directory

Đó là cái đã xảy ra! Thường thì, khi chúng ta chỉ rõ một mẫu, mẫu đó tương ứng một hay

nhiều tệp tin trên hệ thống, và bash thay thế mẫu bởi một danh sách các vật thể tìm thấy,
cách nhau bởi khoảng trống

. Tuy nhiên, khi mẫu không đưa ra không có một đối tượng nào

phù hợp, thì bash coi ký tự đại diện như một ký tự bình thường. Kết quả là ls không thể tìm
thấy tệp tin /usr/bin/asdf*jkl, và đưa ra thông báo lỗi. Quy luật ở đây là mẫu toàn cầu chỉ
được khai triển nếu có đối tượng tương ứng trong hệ thống tập tin

. Trong trường hợp ngược

lại chúng được đưa nguyên văn vào câu lệnh

29

.

27

wildcard pattern

28

nói chính xác hơn là trong đường dẫn chỉ ra trong dòng lệnh

29

trong trường hợp này /usr/bin/asdf*jkl sẽ được đưa vào câu lệnh ls

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.