24/05/2018, 19:38

Quản lý tệp, thư mục

Trong linux tệp được tổ chức thành các thư mục, theo mô hình phân cấp. Tham chiếu đến một tệp bằng tên và đường dẫn. Các câu lệnh thao tác tệp cho phép dịch chuyển, sao chép một tệp hay toàn bộ thư mục cùng với các thư mục con chứa trong ...

Trong linux tệp được tổ chức thành các thư mục, theo mô hình phân cấp. Tham chiếu đến một tệp bằng tên và đường dẫn. Các câu lệnh thao tác tệp cho phép dịch chuyển, sao chép một tệp hay toàn bộ thư mục cùng với các thư mục con chứa trong nó…

Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để đặt tên tệp. Không được bắt đầu một tên tệp bằng dấu chấm hay chữ số. Những ký tự khác như ‘/’, ‘?’, ‘*’, là ký tự đặc biệt được dành riêng cho hệ thống. Chiều dài của tên tệp có thể tới 256 ký tự.

Trong UNIX không có khái niệm phần tên mở rộng (file extensions) theo kiểu như của Windows. Do đó có thể đặt tên tệp tuỳ ý, kể cả tên chứa nhiều dấu chấm “.”

Tệp có tên bắt đầu bằng dấu chấm là tệp ẩn.

UNIX/Linux nhậy cảm với chữ HOA, chữ thường (case sensitive). Để tiện lợi, nhiều người thường dùng chữ thường (lower case). Ta cũng nên theo cách này.

Tất cả các tệp trong linux có chung cấu trúc vật lý là chuỗi các byte (byte stream). Cấu trúc thống nhất này cho phép linux áp dụng khái niệm tệp cho mọi thành phần dữ liệu trong hệ thống. Thư mục cũng như các thiết bị được xem như tệp. Chính việc xem mọi thứ như các tệp cho phép linux quản lý và chuyển đổi dữ liệu một cách dễ dàng. Một thư mục chứa các thông tin về thư mục, được tổ chức theo một định dạng đặc biệt. Các thành phần được xem như các tệp, chúng được phân biệt dựa trên kiểu tệp: tệp thông thường (ordinary file), thư mục (directory) , thiết bị kiểu kí tự (character device file), và thiêt bị kiểu khối dữ liệu (block device file).

Mỗi tài khoản NSD có một thư mục của mình gọi là thư mục chủ hay thư mục nhà. Sau khi đăng nhập hệ thống, người dùng sẽ đứng ở thư mục nhà của mình. Tên của thư mục này giống với tên tài khoản đăng nhập hệ thống. Các tệp được tạo khi người dùng đăng nhập được tổ chức trong thư mục chủ.

Tất cả các thư mục nhà của NSD nằm trong thư mục home của hệ thống.

Thư mục root, là gốc của hệ thống tệp của Linux, chứa một vài thư mục hệ thống. Thư mục hệ thống chứa tệp và chương trình sử dụng để chạy và duy trì hệ thống. Cấu trúc cây thư mục như sau:

Thư mục Mô tả nội dung
/ bắt đầu cấu trúc tệp, gọi là thư mục gốc (root)
/home chứa các thư mục nhà (home) của mọi tài khoản người dùng
/bin lưu trữ tất cả các câu lệnh chuẩn và các chương trình tiện ích
/usr chứa các tệp, câu lệnh được hệ thống sử dụng, thư mục này được chia thành các thư mục con khác
/usr/bin chứa các câu lệnh hướng người dùng và các chương trình tiện ích
/usr/sbin chứa các câu lệnh quản trị hệ thống
/usr/lib chứa thư viện cho các ngôn ngữ lập trình
/usr/doc chứa tài liệu của linux
/usr/man chứa các tệp hướng dẫn sử dụng cho các câu lệnh (man)
/sbin chứa các tệp hệ thống để khởi động hệ thống
/dev chứa giao diện cho các thiết bị như đầu cuối và máy in
/etc chứa tệp cấu hình hệ thống và các tệp hệ thống khác

Chú ý:

- Các lựa chọn (gọi là switch hay options trong câu lệnh thường bắt đầu bằng dấu trừ , sau đó là một hoặc một vài kí tự, viết tắt của lựa chọn đó, ví dụ "-a", “-al”.

- Khi di chuyển giữa các thư mục bằng lệnh “cd” cần phải gõ đầy đủ đường dẫn kể từ thư mục root (là dấu gạch xiên “/”), trừ phi ở trong phạm vi thư mục nhà của bạn.

- "man" là viết tắt của manual. Phần lớn các câu lệnh của UNIX / Linux có trang tài liệu hướng dẫn sử dụng kèm theo.

  • ls [-laR] <tên tệp> /<tên thư mục>

Hiển thị danh sách tệp (thư mục con) trong một thư mục.

-l: (l = long) hiển thị tên tệp, thư mục trong thư mục hiện hành. Cùng với danh sách tên thông tin về quyền truy nhập, kích thước, ngày sửa đổi thông tin cũng được hiển thị.

-a: cho phép hiển thị tất cả tệp và các thư mục trong thư mục hiện tại.

-R: hiển thị thông tin về thư mục hiện hành và thông tin về các thư mục con.

  • cd <tên thư mục>

Thay đổi thư mục làm việc.

  • pwd (print working directory)

Hiển thị thư mục làm việc hiện tại. Thư mục được hiển thị với đường dẫn tuyệt đối. Ví dụ:

pwd

/home/user01

  • mkdir <danh sách các thư mục>

Khởi tạo thư mục. Chú ý: tên tệp có thể dài tới 255 ký tự, tên thư mục có thể chứa mọi ký tự loại trừ ký tự ‘/’. Ví dụ

mkdir folder1

  • cp [-R] <tên tệp nguồn> <tên tệp đích>

Sao chép một tệp. cp yêu cầu ít nhất hai tham số: tệp nguồn và vị trí hoặc tên tệp đích. Nếu tham số thứ hai là tên thư mục đã có, cp sẽ sao chép tệp nguồn tới thư mục đích. Ví dụ

cp main.c main.c.bak

  • mv <tệp nguồn> <tệp đích>

Di chuyển hoặc đổi tên tệp hoặc thư mục. Câu lệnh thực hiện di chuyển hay đổi tên tuỳ theo tệp đích có trong thư mục hay không. Ví dụ để thay đổi tên tập tin có trong thư mục hiện hành

mv foo foobar

vì foobar không phải là thư mục con trong thư mục hiện hành nên tệp foo được đổi tên thành foobar. nếu

mv doc.txt foobar

foobar là thư mục con trong thư mục hiện hành, mv thực hiện chuyển tệp doc.txt vào trong thư mục foobar.

  • rm [-rif] <tên tệp tin/thư mục>

Xoá tệp, thư mục.

-i: hiện thông báo xác nhận người dùng có thực sự muốn xoá tệp/thư mục hay không?

-f: xoá tệp tin bất chấp quyền truy nhập tệp tin. Chú ý chỉ sử dụng –f khi đã chắc chắn hoàn toàn muốn xoá tệp tin này.

-r: xoá thư mục và toàn bộ các tệp, thư mục con chứa trong nó.

  • rmdir <xoá thư mục>

Xoá một thư mục rỗng

  • more <tên tệp>

Hiển thị nội dung tệp phân theo từng trang màn hình.

  • cat <tệp tin nguồn> [>|>] <tệp tin đích>

-cat <tên tệp>: hiển thị toàn bộ nội dung của tệp ra thiết bị ra chuẩn (màn hình).

-cat name1 name2 name3 > allnames: nối các tệp name1, name2, name3 thành tệp allnames.

-cat name4 >> allnames: nối thêm nội dung tệp name4 vào tệp allnames

Mỗi tệp/thư mục có các thuộc tính quy định chủ định chủ sở hữu và mức khai thác được phép giành cho những chủ sở hữu, nhóm chủ sở hữu và những người dùng khác. Ngoài ra có một số thuộc tính khác như: là thư mục hay tệp, kích thước, ngày giờ khởi tạo, cập nhật,...

Có ba mức khai thác được phép là đọc, viết và cho thực hiện, ký hiệu tương ứng là r, w, và x.

Khi danh sách tệp trong một thư mục được đọc với câu lệnh ls –l, các thuộc tính sẽ được hiển thị lần lượt như sau:

  • Kí tự đầu tiên là “d” hoặc “-“ nghĩa là thư mục hay tệp (d= directory, - = tệp)
  • Các quyền (r, w, x) đối với chủ sở hữu, nhóm và other, tương ứng từng cụm 3 kí tự
  • Tên chủ sở hữu (owner),
  • Tên nhóm sở hữu,
  • Kích thước (theo byte),
  • Thời gian (timestamp),
  • Tên.

Ví dụ:

-rwxr--r-- 1 user01 user01 2144 Mar 29 21:44 test.htm

drwxr-xr-x user01 user01 4096 Mar 29 21:55 xdir

Thay đổi chủ sở hữu

  • chown username filename

Thay đổi chủ sở hữu tệp. Chỉ có tài khoản root có quyền thay đổi chủ sở hữu tệp.

  • chgrp groupname filename

Thay đổi nhóm sở hữu tệp. Chỉ có root hoặc ngưòi tạo ra tệp đó (chủ sở hữu) có quyền thay đổi nhóm sở hữu tệp.

Thay đổi hạn chế khai thác tệp

  • chmod [u|g|o][+|-][r|w|x ] <tên tệp>

Thay đổi cách thức truy nhập tệp. Trong đó:

‘+’:Gán

thêm quyền truy nhập tệp

‘-‘ :Loại bỏ quyền truy nhập tệp

  • Quyền truy nhập tệp được thể hiện bởi các ký tự: r (đọc), w (viết), x (thực hiện)
  • Nhóm người dùng được thể hiện bởi các ký tự: u (người dùng), g (nhóm), o (những người dùng khác).

Ví dụ:

- chmod g+rw mydata: gán cho nhóm có quyền đọc và thực hiện tệp mydata

- chmod o+r mydata: mọi ngưòi dùng có thể đọc tệp mydata

Người dùng có thể gán thêm quyền cũng như loại bỏ quyền truy nhập tệp

- chmod o+r-wx mydata: mọi người dùng có thể đọc tệp, nhưng không được viết và thực hiện.

Ngoài ra người dùng có thể thay các số thập phân cho các ký tự trên, gọi là phương thức tuyệt đối. Phương thức này sử dụng mặt nạ nhị phân thể hiện tất cả các quyền trong một phân mục. Ba phân mục (u,g,o) với 3 phân quyền chiếu theo một định dạng số bát phân. Khi chuyển sang số nhị phân (0/1), mỗi số hệ bát phân chuyển thành 3 số hệ nhị phân. Ba số bát phân chuyển hành 3 bộ số nhị phân (ví dụ: 777=111111111) , biễu diễn chính xác quyền truy nhập tệp.

Sử dụng số bát phân thiết lập quyền truy nhập tệp. Mỗi số hệ bát phân thể hiện quyền truy nhập cho một nhóm người dùng (u/g/o). Ý nghĩa mode truy nhập của số bát phân được thể hiện trong bảng dưới đây:

Mode Ý nghĩa
111 =7 rwx
110=6 rw-
101=5 r-x
100=4 r--
011=3 -wx
010=2 -w-
001=2 --x
000=0 ---

ví dụ: chmod 544 mydata

0