Tham khảo tài liệu ''nhập môn linux phần 3'', công nghệ thông tin, hệ điều hành phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
24 4.9 CHƯƠNG TẠO LIÊN KẾT VÀ XÓA TỆP TIN Sâu liên kết tượng trưng, phần Nếu người sử dụng "root", bạn muốn tạo tên tương đương cho "unicode_start", ví dụ "u_s" Trong ví dụ này, có quyền root, chứng dấu nhắc bash thay đổi thành "#" Chúng ta cần quyền root người dùng bình thường tạo tệp tin /usr/bin/ Là root, tạo tên tương đương cho unicode_start sau: # cd /usr/bin # ln -s /usr/bin/unicode_start u_s # ls -l unicode_start -rwxr-xr-x root root 1061 2004-04-22 22:30 unicode_start # ls -l u_s lrwxrwxrwx root root 22 2004-09-02 23:14 u_s -> /usr/bin/unicode_start Trong ví dụ này, tạo liên kết tượng trưng u_s tới tệp tin /usr/bin/unicode_start 4.10 Sâu liên kết tượng trưng, phần Trong giải pháp làm việc, tạo vấn đề định chuyển hai tệp /usr/bin/unicode_start /usr/bin/u_s tới /usr/local/bin: # mv /usr/bin/unicode_start /usr/bin/u_s /usr/local/bin # ls -l /usr/local/bin/unicode_start -rwxr-xr-x root root 1061 2004-04-22 22:30 /usr/local/bin/unicode_start # ls -l /usr/local/bin/u_s lrwxrwxrwx root root 22 2004-09-02 23:14 /usr/local/bin/u_s -> /usr/bin/unicode_start Vì sử dụng đường dẫn tuyệt đối liên kết tượng trưng, u_s cịn tới /usr/bin/unicode_start, khơng cịn tồn /usr/bin/unicode_start bị di chuyển tới /usr/local/bin Có nghĩa u_s liên kết bị vỡ Cả đường dẫn tuyệt đối đường dẫn tương đối liên kết tượng trưng có giá trị riêng mình, bạn nên sử dụng loại đường dẫn thích hợp với nhu cầu 4.11 RM 25 bạn Thường đường dẫn tương đối đường dẫn tuyệt đối làm việc tốt Ví dụ sau làm việc chí sau hai tệp tin bị di chuyển: # cd /usr/bin # ln -s unicode_start u_s # ls -l u_s lrwxrwxrwx 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 root staff 1061 2004-09-02 23:29 /usr/local/bin/unicode_start # ls -l /usr/local/u_s lrwxrwxrwx root root 13 2004-09-02 23:27 /usr/local/bin/u_s -> unicode_start Bây giờ, chạy chương trình unicode_start cách gõ /usr/local/bin/u_s /usr/local/bin/u_s tới chương trình unicode_start thư mục với u_s 4.11 rm Bây giờ, biết cách sử dụng cp, mv, 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 thực với câu lệnh rm Để xóa tệp tin đơn giản rõ chúng dòng lệnh: $ cd /tmp $ touch tep1 tep2 $ ls -l tep1 tep2 -rw-r–r– teppi82 thang 2004-09-04 17:53 tep1 -rw-r–r– teppi82 thang 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ú ý Linux, tệp tin bị xoá (is rm’d), "ra đi" mãi Vì lý này, nhiều nhà quản trị vào nghề sử dụng tùy chọn -i xóa tệp tin Tùy chọn -i nói rm xóa tất tệp tin chế độ "hội thoại" (interactive) – là, hỏi nhắc trước xóa tệp tin Ví dụ: CHƯƠNG TẠO LIÊN KẾT VÀ XÓA TỆP TIN 26 $ rm -i tep1 tep2 rm: remove regular empty file ‘tep1’? y rm: remove regular empty file ‘tep2’? y Trong ví dụ trên, câu lệnh rm nhắc có "thực sự" xóa tệp tin rõ hay khơng Để xóa chúng, tơi cần gõ "y" Enter lần hai Nếu gõ "n", tệp tin khơng bị xóa Hoặc, tơi thao tác sai, tơi gõ Control-C để hủy bỏ tồn lệnh rm -i – làm gây thiệt hại lớn cho hệ điều hành Nếu bạn sử dụng câu lệnh rm, có ích 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 bạn, sau đăng xuất đăng nhập lại Sau đó, bạn gõ rm, vỏ bash tự động biến đổi thành câu lệnh rm -i Theo đó, rm ln ln làm việc chế độ hỏi nhắc: alias rm="rm -i" 4.12 rmdir Để xóa thư mục, bạn có hai lựa chọn Bạn xóa tất vật thể bên thư mục sử dụng rmdir để xóa thân thư mục đó: $ $ $ $ mkdir thumuccuatoi touch thumuccuatoi/tep1 rm thumuccuatoi/tep1 rmdir thumuccuatoi Phương pháp thường ám cách "xóa thư mục cho trẻ cịn bú sữa" Tất người dùng quản trị có lực dùng câu lệnh thuận tiện nhiều rm -rf, nói đến sau 4.13 rm thư mục Cách tốt để xóa thư mục sử dụng tùy chọn bắt buộc xóa tồn (recursive force) câu lệnh rm để nói rm xóa thư mục bạn rõ, tất vật thể chứa 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 thư mục, ưa chuộng Cần cẩn thận sử dụng rm -rf, sức mạnh đem đến điều có lợi tai họa :) Chương Sử dụng ký tự đại diện (wildcard) 5.1 Giới thiệu ký tự đại diện Khi sử dụng Linux từ ngày qua ngày khác, có nhiều lần bạn muốn thực thao tác đơn (ví dụ rm) nhiều vật thể hệ thống tập tin lúc Trong trường hợp này, gõ nhiều tệp tin 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 ký tự đại diện, Để giải vấn đề này, bạn lợi dụng hỗ trợ ký tự đại diện gắn liền với Linux Sự hỗ trợ này, cịn gọi "globbing" (vì lý lịch sử), cho phép bạn rõ nhiều tệp tin lúc, sử dụng mẫu đại diện (wildcard pattern) Bash câu lệnh Linux khác biên dịch mẫu này, xem tìm đĩa tất tệp tin tương ứng Vì thế, bạn có tệp tin từ tep1 tới tep8 thư mục thời, bạn xóa tệp này, gõ: $ rm tep[1-8] Hoặc bạn muốn đơn giản xóa tất tệp tin mà bắt đầu tep tệp tin có tên tep, bạn gõ: $ rm tep* 28 5.3 HIỂU VỀ KHÔNG TƯƠNG ỨNG 29 Ký tự đại diện * tương ứng ký tự hay chuỗi ký tự nào, thí "khơng có ký tự" Tất nhiên, sử dụng đại diện "tồn cầu" (glob wildcards) để xóa tệp tin cách đơn giản hơn, thấy bảng 5.3 Hiểu không tương ứng Nếu bạn muốn liệt kê tất vật thể hệ thống tập tin /etc bắt đầu g tệp tin có 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/gshadowBây giờ, xảy bạn rõ mẫu mà không tương ứng vật thể nào? Trong ví dụ sau, thử liệt kê tất tệp tin /usr/bin bắt đầu asdf kết thúc jkl,, gồm tệp tin có asdfjkl : $ ls -d /usr/bin/asdf*jkl ls: /usr/bin/asdf*jkl: No such file or directory 5.4 Hiểu không tương ứng, Đó xảy Thường thì, rõ mẫu, mẫu tương ứng hay nhiều tệp hệ thống tập tin, bash thay mẫu với danh sách vật thể tương ứng, cách khoảng trống Tuy nhiên, mẫu không đưa phù hợp bash để y nguyên đối số, đại diện, tất Vì thế, ls khơng thể tìm thấy tệp tin /usr/bin/asdf*jkl đưa thơng báo lỗi Luật lệ thao tác mẫu toàn cầu khai triển chúng tương ứng vật thể hệ thống tập tin Nếu khơng chúng để lại y đưa nguyên văn1 tới chương trình gọi thích người dịch: trường hợp /usr/bin/asdf*jkl CHƯƠNG SỬ DỤNG CÁC KÝ TỰ ĐẠI DIỆN (WILDCARD) 30 5.5 Cú pháp đại diện: * Bây giờ, thấy toàn cầu (globbing) làm việc nào, cần xem cú pháp đại diện Bạn sử dụng ký tự đặc biệt cho mở rộng: * tương ứng không nhiều ký tự Nó có nghĩa "bất kỳ thứ vào đây, gồm khơng có gì" Ví dụ: • /etc/g* tương ứng tất tệp tin /etc mà bắt đầu g, tệp tin có tên g • /tmp/my*l tương ứng tất tệp tin /tmp mà bắt đầu my kết thúc l, bao gồm tệp tin myl 5.6 Cú pháp đại diện: ? ? phù hợp ký tự đơn Ví dụ: • myfile? tương ứng tệp tin mà tên chứa myfile theo sau ký tự đơn2 • /tmp/note?txt tương ứng /tmp/notes.txt emph/tmp/notes_txt, chúng tồn 5.7 Cú pháp đại diện: [] Đại diện giống ?, đặc trưng Để sử dụng đại diện này, đặt ký tự bạn muốn tìm tương ứng vào [] Biểu thức thu tìm tương ứng với ký tự Bạn sử dụng - để rõ dãy, chí liên hợp dãy Ví dụ: • myfile[12] tương ứng myfile1 myfile2 Đại diện khai triển tệp tin tồn thư mục thời thích người dịch: ví dụ myfile1 myfile2 myfilea myfilex 5.8 CÚ PHÁP ĐẠI DIỆN: [!] 31 • [Cc]hange[Ll]og tương ứng Changelog, ChangeLog, changeLog, changelog Như bạn thấy, sử dụng đại diện dấu ngoặc vng hữu ích cho việc tạo tương ứng khác nhau: • ls /etc/[0-9]* liệt kê tất tệp tin /etc bắt đầu chữ số • ls /tmp/[A-Za-z]* liệt kê tất tệp tin /tmp bắt đầu chữ hoa hay chữ thường 5.8 Cú pháp đại diện: [!] Cấu trúc [!] giống với cấu trúc [!], không kể tương ứng ký tự nào, mà không liệt kê [! ] Ví dụ: • rm myfile[!9] xóa tất tệp tin có tên myfile cộng với ký tự đơn, ngoại trừ myfile9 5.9 Đào sâu đại diện Đây số đào sâu cần để ý sử dụng đại diện Vì bash "đối xử" ký tự đại diện (?, [, ], * ) cách đặc biệt, bạn cần đặc biệt cẩn thận gõ đối số tới câu lệnh ký tự Ví dụ, bạn muốn tạo tệp tin chứa dịng [fo]*, câu lệnh sau không làm bạn muốn: $ echo [fo]* > /tmp/teptinmoi.txt Vì mẫu [fo]* tương ứng với tệp tin thư mục thời, nên bạn tìm thấy tên chúng /tmp/teptinmoi.txt dòng [fo]* bạn mong đợi Giải pháp? Một cách bắt đầu giải đưa ký tự vào dấu ngoặc đơn, chúng (dấu ngoặc) nói bash khơng thực khai triển đại diện: $ echo ’[fo]*’ > /tmp/teptinmoi.txt 32 5.10 CHƯƠNG SỬ DỤNG CÁC KÝ TỰ ĐẠI DIỆN (WILDCARD) Đào sâu đại diện, Sử dụng cách này, tệp tin bạn chứa dòng chữ [fo]* mong đợi Một cách tương tự, bạn sử dụng ký tự (escape) gạch ngược nói bash coi [, ], * chữ ký tự đại diện: $ echo \[fo\]\* > /tmp/teptinmoi.txt Cả hai cách giải (ngoặc đơn ký tự gạch ngược) có tác dụng Ngun nói gạch ngược, thời điểm tốt nói rằng, để rõ \ bình thường, bạn đưa vào ngoặc đơn, gõ \\ (nó khai triển thành \) 5.11 Ngoặc đơn "gặp" ngoặc kép Chú ý ngoặc kép làm việc tương tự ngoặc đơn, cho phép bash thực số khai triển giới hạn Bởi vậy, ngoặc đơn tốt bạn thực muốn đưa nguyên văn dạng chữ tới câu lệnh Để thêm thông tin khai triển đại diện gõ man glob Xem thêm thông tin trích dẫn (quote), ngoặc, gõ man glob đọc phần QUOTING Nếu bạn có dự định trả kỳ thi LPI, coi tập nhà :) Chương Tổng kết nguồn bổ trợ 6.1 Tổng kết Xin chúc mừng: bạn tới điểm cuối ôn tập lại sở Linux chúng tơi! Tơi hy vọng giúp bạn nắm kiến thức Linux Những chủ đề bạn học đây, bao gồm sở bash, câu lệnh Linux bản, liên kết, đại diện, đặt móng cho hướng dẫn tiếp theo, quản trị sở, chúng tơi đưa chủ đề biểu thức quy (regular expression), quyền sở hữu, quyền hạn, quản lý tài khoản người dùng, nhiều Tiếp tục theo hướng dẫn nhiều tập này, bạn sớm chuẩn bị đạt tới chứng LPIC bậc từ Linux Professional Institute Đề cập đến chứng LPIC, bạn quan tâm, chúng tơi khun bạn học nguồn bổ trợ bảng sau, lựa chọn cẩn thận để bổ sung thêm cho nguyên liệu hướng dẫn 6.2 Các nguồn bổ trợ Trong báo nhiều kỳ "Bash qua ví dụ" ("Bash by example") developerWorks, Daniel bạn cách sử dụng cấu trúc lập trình bash để viết script Chuỗi (Phần nói riêng) chuẩn bị tốt cho kỳ thi LPIC bậc 1: • Bash qua ví dụ, Phần 1: Lập trình sở vỏ Bourne-again shell 33 CHƯƠNG TỔNG KẾT VÀ CÁC NGUỒN BỔ TRỢ 34 • Bash qua ví dụ, Phần 2: Lập trình bash sở nâng cao • Bash qua ví dụ, Phần 3: Khám phá hệ thống ebuild Nếu bạn người dùng Linux hay trung bình, bạn thật không xem Những câu hỏi chuyên môn thường đặt cho người dùng Linux (Technical FAQ for Linux users), danh sách 50 trang sâu câu hỏi Linux thường đặt, với câu trả lời chi tiết Bản thân FAQ dạng PDF (Acrobat) Nếu bạn khơng quen thuộc với trình soạn thảo vi, xem hướng dẫn vi vỡ lòng (Intro to vi) Cuốn hướng dẫn khóa mở đầu cấp tốc trình soạn thảo mạnh Coi tài liệu phải đọc thêm bạn cách sử dụng vi 6.3 Ý kiến từ phía bạn Xin cho chúng tơi biết hướng dẫn có giúp ích cho bạn khơng chúng tơi làm tốt Đồng thời, muốn nghe chủ đề khác mà bạn muốn xem hướng dẫn developerWorks Để hỏi nội dung hướng dẫn này, liên hệ tác giả, Daniel Robbins, drobbins@gentoo.org 6.4 Lời ghi cuối sách Cuốn hướng dẫn viết hoàn tồn XML, sử dụng chương trình tạo sách hướng dẫn Toot-O-Matic developerWorks1 Công cụ mã nguồn mở Toot-O-Matic XSLT stylesheet vài chức XSLT mở rộng biến đổi tệp XML thành trang HTML, tệp zip, ảnh tiêu đề JPEG hai tệp PDF Khả xuất dạng văn dạng nhị nguyên từ tệp nguồn đơn cho thấy khả linh hoạt XML (XML đồng thời tiết kiệm nhiều thời gian sức lực nhóm chúng tơi) thích người dịch: dịch viết mã TEX sử dụng trình soạn thảo gedit 6.4 LỜI GHI CUỐI SÁCH 35 Bạn lấy mã nguồn công cụ Toot-O-Matic http://www6.software.ibm.com/dl/devworks/dw-tootomatic-p/ Cuốn hướng dẫn Xây dựng hướng dẫn với Toot-O-Matic (Bulding tutorials with the TootO-Matic) cho thấy cách sử dụng Toot-O-Matic để tạo hướng dẫn bạn developerWorks cịn làm chủ diễn đàn dành cho Toot-O-Matic, địa chỉ: http://www-105.ibm.com/developerworks/xml_df.nsf/AllViewTemp late?OpenForm&RestrictToCategory=11 Chúng muốn biết bạn nghĩ cơng cụ ... script Chuỗi (Phần nói riêng) chuẩn bị tốt cho kỳ thi LPIC bậc 1: • Bash qua ví dụ, Phần 1: Lập trình sở vỏ Bourne-again shell 33 CHƯƠNG TỔNG KẾT VÀ CÁC NGUỒN BỔ TRỢ 34 • Bash qua ví dụ, Phần 2: Lập... qua ví dụ, Phần 3: Khám phá hệ thống ebuild Nếu bạn người dùng Linux hay trung bình, bạn thật không xem Những câu hỏi chuyên môn thường đặt cho người dùng Linux (Technical FAQ for Linux users),... lrwxrwxrwx 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 root staff 1061 2004-09-02 23: 29 /usr/local/bin/unicode_start