4.11. RM 25
bạn. Thường thì cả đường dẫn tương đối và đường dẫn tuyệt đối sẽ làm việc
tốt. dụ sau s làm việc thậm c sau khi cả hai tệp tin bị di chuyển:
#cd /usr/bin
#ln -s unicode_start u_s
#ls -l u_s
lrwxrwxrwx 1 root root 13 2004-09-02 23:27 u_s -> unicode_start
#mv unicode_start u_s /usr/local/bin #ls -l /usr/local/bin/unicode_start
-rwxr-xr-x 1 root staff 1061 2004-09-02 23:29 /usr/local/bin/unicode_start
#ls -l /usr/local/u_s
lrwxrwxrwx 1 root root 13 2004-09-02 23:27 /usr/local/bin/u_s ->
unicode_start
y giờ, chúng ta thể chạy chương trình unicode_start bằng cách
/usr/local/bin/u_s./usr/local/bin/u_s chỉ tới chương trình unicode_start
trong cùng thư mục với u_s.
4.11 rm
y giờ, khi đã biết cách sử dụng cp, mv, và ln, thời gian học cách xóa
vật thể khỏi hệ thống tập tin. Thông thường, điều y được thực hiện với
câu lệnh rm. Để xóa tệp tin đơn giản ch chúng trên dòng lệnh:
$cd /tmp
$touch tep1 tep2
$ls -l tep1 tep2
-rw-r–r– 1 teppi82 thang 0 2004-09-04 17:53 tep1
-rw-r–r– 1 teppi82 thang 0 2004-09-04 17:53 tep2
$rm tep1 tep2
$ls -l tep1 tep2
ls: tep1: No such file or directory
ls: tep2: No such file or directory
Chú ý rằng dưới Linux, một khi tệp tin đã bị xoá (is rm’d), "ra đi"
mãi mãi. do y, nhiều nhà quản trị mới vào nghề sẽ sử dụng tùy chọn
-i khi xóa tệp tin. Tùy chọn -i nói rm xóa tất cả tệp tin trong chế độ "hội
thoại" (interactive) đó là, hỏi nhắc trước khi xóa bất kỳ tệp tin nào. dụ:
26 CHƯƠNG 4. TO LIÊN KẾT VÀ XÓA TỆP TIN
$rm -i tep1 tep2
rm: remove regular empty file ‘tep1’? y
rm: remove regular empty file ‘tep2’? y
Trong dụ trên, câu lệnh rm nhắc "thực sự" xóa tệp tin đã chỉ hay
không. Để xóa chúng, tôi cần "y" và Enter lần hai. Nếu tôi "n", tệp
tin sẽ không bị xóa. Hoặc, nếu tôi đã thao tác sai, tôi thể Control-C
để hủy b toàn b lệnh rm -i những đã làm thể gây thiệt hại lớn cho
hệ điều hành của tôi.
Nếu bạn vẫn sử dụng câu lệnh rm, rất ích nếu bạn sử dụng trình soạn
thảo ưa thích thêm dòng sau vào tệp tin /.bashrc của bạn, và sau đó đăng
xuất và đăng nhập lại. Sau đó, mỗi khi bạn rm, v bash sẽ tự động biến
đổi thành câu lệnh rm -i. Theo đó, rm sẽ luôn luôn làm việc trong chế độ
hỏi nhắc:
alias rm="rm -i"
4.12 rmdir
Để xóa thư mục, bạn hai lựa chọn. Bạn thể xóa tất cả các vật thể bên
trong thư mục và sử dụng rmdir để xóa bản thân thư mục đó:
$mkdir thumuccuatoi
$touch thumuccuatoi/tep1
$rm thumuccuatoi/tep1
$rmdir thumuccuatoi
Phương pháp y thường ám chỉ cách "xóa thư mục cho trẻ còn
sữa". Tất cả những người dùng và quản trị năng lực dùng câu lệnh thuận
tiện hơn nhiều rm -rf, nói đến ngay sau.
4.13 rm và thư mục
Cách tốt nhất để xóa một thư mục sử dụng tùy chọn bắt buộc a toàn
b (recursive force) của câu lệnh rm để nói rm xóa thư mục bạn đã chỉ rõ,
cũng như tất cả vật thể chứa trong thư mục đó:
4.13. RM VÀ THƯ MỤC 27
$rm -rf thumuccuatoi
Nói chung, rm -rf phương pháp, để xóa một y thư mục, được ưa
chuộng hơn. Cần rất cẩn thận khi sử dụng rm -rf, sức mạnh của thể
đem đến cả điều lợi và tai họa :)
Chương 5
Sử dụng các tự đại diện (wildcard)
5.1 Giới thiệu v tự đại diện
Khi sử dụng Linux từ ngày này qua ngày khác, nhiều lần bạn muốn thực
hiện một thao tác đơn (ví dụ rm) trên nhiều vật thể hệ thống tập tin cùng
một lúc. Trong những trường hợp này, nhiều tệp tin trên một dòng lệnh
thông thường gây vướng:
$rm tep1 tep2 tep3 tep4 tep5 tep6 tep7 tep8
5.2 Giới thiệu v tự đại diện, tiếp theo
Để giải quyết vấn đề y, bạn thể lợi dụng sự hỗ trợ tự đại diện gắn
liền với Linux. Sự hỗ trợ y, còn gọi "globbing" (vì do lịch sử), cho
phép bạn chỉ nhiều tệp tin một lúc, sử dụng một mẫu đại diện (wildcard
pattern). Bash và các câu lệnh Linux khác sẽ biên dịch mẫu này, xem và tìm
trên đĩa tất cả các tệp tin tương ứng nó. thế, nếu bạn các tệp tin từ
tep1 tới tep8 trong thư mục hiện thời, bạn thể xóa những tệp này, :
$rm tep[1-8]
Hoặc nếu bạn chỉ muốn đơn giản xóa tất cả các tệp tin bắt đầu
bằng tep cũng như tệp tin nào tên tep, bạn thể gõ:
$rm tep*
28
5.3. HIỂU VỀ KHÔNG TƯƠNG ỨNG 29
tự đại diện * tương ứng bất kỳ tự hay chuỗi tự nào, hoặc thậm
thí "không tự". Tất nhiên, 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
bảng tiếp theo.
5.3 Hiểu v không ơng ng
Nếu bạn muốn liệt kê tất cả vật thể hệ thống tập tin trong /etc bắt đầu bằng
gcũng như mọi tệp tin tên 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-
y giờ, cái sẽ xảy ra nếu bạn chỉ một mẫu không tương ứng
bất kỳ vật thể nào? Trong dụ sau, chúng ta thử liệt 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
thể asdfjkl:
$ls -d /usr/bin/asdf*jkl
ls: /usr/bin/asdf*jkl: No such file or directory
5.4 Hiểu v không tương ng, tiếp theo
Đó cái đã xảy ra. Thường thì, khi cng ta chỉ một mẫu, mẫu đó tương
ứng một hay nhiều tệp trên hệ thống tập tin, và bash thay thế mẫu với một
danh sách các vật thể tương ứng, cách nhau bởi khoảng trống. Tuy nhiên, khi
mẫu không đưa ra một cái nào phù hợp bash để y nguyên đối số, đại diện,
tất c. thế, khi ls không thể tìm thấy tệp tin /usr/bin/asdf*jkl thì
đưa ra thông báo lỗi. Luật lệ thao tác đây mẫu toàn cầu chỉ khai triển
ra nếu chúng tương ứng vật thể trong hệ thống tập tin. Nếu không thì chúng
để lại y như thế và được đưa nguyên văn1tới chương trình chúng ta đang gọi.
1chú thích của người dịch: trong trường hợp này /usr/bin/asdf*jkl