4 Làm quen với hệ thống tập tin ext3fs
4.6.1 Câu lệnh chown và chgrp
Những câu lệnh này dùng để thay đổi chủ sở hữu và nhóm sở hữu tập tin. Chỉ có người dùng cao cấp root mới có quyền thay đổi chủ sở hữu, còn thay đổi nhóm sở hữu tập tin có thể là root hoặc người dùng chủ sở hữu. Để có quyền thay đổi nhóm, thì chủ sở hữu còn phải là thành viên của nhómsẽsở hữu tập tin này. Cú pháp của hai câu lệnh này tương tự nhau:
[root]# chown tên_người_dùng tên_tập_tin [root]# chgrp tên_nhóm tên_tập_tin
4.6.2 Câu lệnhmkdir
Câu lệnhmkdircho phép tạo thư mục con trong thư mục hiện thời. Tham số của câu lệnh này là tên của thư mục muốn tạo ra. Trong thư mục vừa tạo sẽ tự động tạo ra hai mục: .(liên kết đến chính bản thân thư mục này) và..(liên kết đến thư mục mẹ). Để tạo ra thư mục con, bạn đọc cần phải có quyền ghi vào thư mục hiện thời. Có thể tạo ra thư mục con trong một thư mục khác thư mục hiện thời, nhưng khi này cần phải chỉ ra đường dẫn tới đó. Ví dụ:
[user]$ mkdir ~/projects/l4u/images
(hãy nhớ lại ký hiệu∼dùng để chỉ của người dùng). Có thể dùng các tùy chọn sau của câu lệnhmkdir:
-m mode – xác định quyền (chế độ) truy cập cho thư mục mới (ví dụ: -m 700)
-p – tạo ra các thư mục trung gian chỉ ra trong đường dẫn (nếu chưa có chúng). Ví dụ:
teppi82@ThinhQuyen:~> mkdir mot/hai
mkdir: cannot create directory ’mot/hai’: No such file or directory teppi82@ThinhQuyen:~> mkdir -p mot/hai
teppi82@ThinhQuyen:~> ls -l mot tổng 4
drwxr-xr-x 2 teppi82 users 4096 2006-09-11 13:36 hai
4.6.3 Câu lệnhcat
Câu lệnhcatthường dùng để tạo các tập tin, mặc dù có thể sử dụng lệnhtouch. Lệnh cat cũng đưa ra màn hình (đầu ra) nội dung của (các) tập tin dùng làm tham số của nó. Nếu chuyển kết quả làm việc của lệnhcat vào một tập tin nào đó thì có thể tạo ra bản sao của tập tin như sau:
[user]$ cat tập_tin1 > tập_tin2
Chính bản thân câu lệnhcatlúc đầu được phát triển đề dùng cho việc chuyển hướng kết quả làm việc. Vì nó được tạo ra cho sự móc nối (concatenate, nếu dùng thuật ngữ của Hoá học là “sự cộng” các tập tin), tức là sự kết hợp các tập tin khác nhau vào một:
4.6 Các câu lệnh cơ bản để làm việc với tập tin và thư mục 81
[user]$ cat tập_tin1 tập_tin2 ... tập_tinN > tập_tin_mới
Và cũng chính khả năng chuyển hướng kết quả của câu lệnh này được dùng để tạo các tập tin mới. Khi này đầu vào của lệnhcat đó là dòng dữ liệu nhập từ bàn phím (đầu vào tiêu chuẩn), còn đầu ra sẽ là tập tin mới:
[user]$ cat > tập_tin_mới
Sau khi nhập vào những gì muốn nhập, hãy nhấn tổ hợp phím <Ctrl>+<D> hoặc <Ctrl>+<C>, và tất cả những gì bạn đã gõ sẽ được lưu lại trong tập tin
tập_tin_mới. Tất nhiên là như vậy chủ yếu dùng cat để tạo các tập tin văn bản ngắn.
4.6.4 Câu lệnh cp
Mặc dù đôi khi có thể dùng câu lệnh cat để sao chép các tập tin, nhưng trong Linux có một câu lệnh chuyên dùng cho việc này – lệnhcp. Có thể áp dụng một trong hai dạng của lệnh này:
[user]$ cp [tùy_chọn] nguồn đích
[user]$ cp [tùy_chọn] thư_mục_nguồn thư_mục_mới
Trong trường hợp thứ nhất sao chép tập tin (hoặc thư mục) nguồn vào tập tin (hoặc thư mục) đích. Còn trong trường hợp thứ hai thì tập tin có trong
thư_mục_nguồnsẽ được sao chép vào thư mục thư_mục_mới. Để sao chép thì cần có quyền đọc tập tin muốn sao chép và quyền ghi vào thư mục sẽ sao chép đến (“thư mục đích”).
Nếu sử dụng một tập tin đã có vào chỗ của tập tinđích thì nội dung của nó sẽ bị xóa mất, do vậy khi sao chép cần phải cẩn thận. Vả lại có thể sử dụng câu lệnhcpvới tùy chọn-i. Khi đó trước khi ghi chèn lên tập tin đã có hệ thống sẽ hỏi lại người dùng. Rất nên dùng tùy chọn này.
Câu lệnhcpcòn có một vài tùy chọn có ích khác liệt kê trong bảng4.3.
Bảng 4.3: Những tùy chọn chính của lệnhcp
Tùy chọn Ý nghĩa
–p Giữ lại thời gian sửa đổi tập tin và cố giữ lại những quyền truy cập có thể giữ lại. Nếu không đưa ra tùy chọn này thì quyền truy cập của tập tin sẽ được thiết lập theo quyền của người dùng đã chạy lệnh. –R hoặc –r Nếunguồnlà thư mục thì sao chép thư mục đó cùng với tất cả những
gì (tập tin, thư mục con) nằm trong nó, tức là giữ lại được cấu trúc của thư mục bạn đầu (recursive).
–d Nếu đưa ra tùy chọn này thì các liên kết mềm sẽ vẫn là các liên kết, nếu không thì sẽ sao chép tập tin (nội dung) mà liên kết này chỉ đến. –f Ghi chèn tập tin khi sao chép mà không hỏi lại hay cảnh báo.
4.6.5 Câu lệnhmv
Nếu bạn không cần sao chép, mà cần di chuyển tập tin từ một thư mục này vào một thư mục khác, thì có thể sử dụng câu lệnh mv. Cú pháp của lệnh này tương tự như cú pháp của cp. Hơn nữa, lệnh này đầu tiên sao chép tập tin (hay thư mục), và sau đó mới xóa tập tin (thư mục) ban đầu. Các tùy chọn của nó cũng giống như củacp.
Câu lệnh mvkhông chỉ dùng để di chuyển, mà còn dùng để thay đổi tên tập tin và thư mục, tức là di chuyển chúng trong phạm vi của một thư mục. Chỉ cần đặt vào chỗ hai tham số tên cũ và tên mới của tập tin như thế này:
[user]$ mv tên_cũ tên_mới
Nhưng hãy chú ý là câu lệnhmvkhông cho phép đổi tên một vài tập tin cùng lúc bằng cách sử dụng các mẫu tên. Do đó câu lệnh:
[user]$ mv *.doc *.odt
sẽ không làm việc. Khi sử dụng lệnh mv cũng giống như khi sử dụng cp, đừng quyền thêm vào tùy chọn-iđể hiện ra cảnh báo khi có tập tin sẽ bị ghi chèn.
4.6.6 Câu lệnhrmvà rmdir
Để xóa những tập tin và thư mục không cần thiết trên Linux có các câu lệnhrm
(xóa tập tin) và rmdir(xóa thư mục rỗng). Để sử dụng những câu lệnh này, bạn đọc cần có quyền ghi vào thư mục lưu những tập tin hoặc thư mục muốn xóa. Khi này quyền thay đổi chính bản thân các tập tin và thư mục là không cần thiết. Nếu muốn câu hỏi xác nhận sự cho phép của người dùng xuất hiện trước khi xóa tập tin, thì hãy dùng tùy chọn -i(rất dễ nhớ, tùy chọn này có ở những câu lệnh
cp,mvđã kể trên).
Nếu dùng câu lệnhrm (không có tùy chọn) để xóa thư mục thì sẽ xuất hiện thông báo dạng “cannot remove ‘l4u’: Is a directory” (không thể xóa bỏ, đây là thư mục). Để xóa thư mục thì cần xóa tất cả những tập tin có trong nó, sau đó xóa bản thận thư mục bằng lệnh rmdir. Tuy nhiên có thể xóa thư mục không rỗng cùng với tất cả những tập tin và thư mục có trong nó, nếu sử dụng câu lệnh
rmvới tùy chọn-r.
Nếu chạy lệnhrm *, thì sẽ xóa tất cả những tập tin có trong thư mục hiện thời. Các thư mục con không bị động tới. Để xóa cả tập tin và thư mục con của thư mục hiện thời cần dùng tùy chọn -rkể trên. Tuy nhiên cần luôn luôn nhớ rằng, trên Linux không có câu lệnh phục hồi tập tin sau khi xóa, thậm chí cả khi vừa xóa xong11. Theo tôi nghĩ bất kỳ người dùng Linux nào cũng có thể chia sẻ với bạn cảm giác bị mất tập tin “ngay trước mắt”. Vì thế hãy khi hai lần trước khi xóa gì đó và đừng quên tùy chọn-i.
11Có một số cách phụ hồi tập tin đã xóa trên hệ thống tập tin cũ ext3fs, nhưng chúng ta là những người dùng mới, do đó không xem xét chúng. Tất nhiên bạn có thể tham khảo tài liệu HOWTO có trên http: //www.tldp.orgnày trong trường hợp khẩn cấp.
4.6 Các câu lệnh cơ bản để làm việc với tập tin và thư mục 83