Hệ ñiều hành UNIX-Linux

Chương 3. Hệ thống File

Linux operating system - Nguyen Tri Thanh

1

Khái niệm cơ bản

(cid:1) Một ñối tượng ñiển hình trong các hệ ñiều hành ñó là file (cid:1) File là một tập hợp dữ liệu có tổ chức ñược hệ ñiều hành quản

(cid:1) Cách tổ chức dữ liệu trong file thuộc về người ñã tạo ra file (cid:1) File có thể là:

(cid:2) một văn bản (trường hợp ñặc biệt là chương trình nguồn

trên C, PASCAL, shell script ...) (cid:2) một chương trình ngôn ngữ máy,

(cid:1) Hệ ñiều hành tổ chức việc lưu trữ nội dung file trên các thiết

Linux operating system - Nguyen Tri Thanh

2

bị nhớ lâu dài và ñảm bảo các thao tác lên file.

Khái niệm cơ bản (cid:1) Hệ ñiều hành ñảm bảo các chức năng liên quan ñến file nên người dùng không cần biết file của mình lưu ở vùng nào trên ñĩa từ, bằng từ cách nào ñọc/ghi lên các vùng của ñĩa từ mà vẫn thực hiện ñược yêu cầu tìm kiếm, xử lý lên các file (cid:2) Hệ ñiều hành quản lý file theo tên gọi của file (tên file) và

một số thuộc tính liên quan ñến file

(cid:2) Hệ ñiều hành không chỉ quản lý nội dung file mà còn phải

quản lý các thông tin liên quan ñến các file.

(cid:2) Thư mục (directory) là ñối tượng ñược dùng ñể chứa

thông tin về các file

(cid:2) Các thư mục cũng ñược hệ ñiều hành quản lý trên vật dẫn

Linux operating system - Nguyen Tri Thanh

3

ngoài và vì vậy thư mục cũng ñược coi là file

File trong Linux - UNIX

(cid:1) Tên file trong Linux có thể dài > 256 ký tự (cid:1) Nên chỉ gồm các chữ cái, chữ số, dấu gạch nối, gạch chân,

dấu chấm

(cid:1) Tên thư mục/file trong Linux có thể có nhiều hơn một dấu

chấm: This_is.a.VERY_long.filename

(cid:1) Xâu con của tên file từ dấu chấm cuối cùng ñược gọi là phần

mở rộng của tên file

(cid:1) Phần mở rộng ở ñây không mang ý nghĩa như một số hệ ñiều

hành khác (chẳng hạn như MS-DOS)

(cid:1) Phân biệt chữ hoa và chữ thường ñối với tên thư mục/file (cid:1) Nếu trong tên thư mục/file có chứa khoảng trống, ñặt tên vào

trong cặp dấu nháy kép: # mkdir “My document”

(cid:1) Một số ký tự không ñược sử dụng trong tên thư mục/file: !, *,

Linux operating system - Nguyen Tri Thanh

4

$, &, # ...

Cách tổ chức file

(cid:1) Trên ñĩa hệ thống file là dãy tuần tự các khối lôgic mỗi khối

chứa hoặc 512B hoặc 1024B hoặc bội của 512B

(cid:1) Các khối dữ liệu ñược ñịa chỉ hóa bằng cách ñánh chỉ số liên

tiếp, mỗi ñịa chỉ ñược chứa trong 4 byte (32 bit)

(cid:1) Cấu trúc nội tại gồm 4 thành phần kế tiếp nhau: Boot block

Linux operating system - Nguyen Tri Thanh

5

(dùng ñể khởi ñộng hệ thống), Siêu khối (Super block), Danh sách inode và Vùng dữ liệu.

Siêu khối

(cid:2) Kích thước của danh sách inode (cid:2) Kích thước của hệ thống file. (cid:2) Danh sách chỉ số các khối rỗi (cid:2) Chỉ số các khối rỗi thường trực trên siêu khối (cid:2) Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi (cid:2) Một danh sách các inode rỗi (cid:2) Danh sách này chứa chỉ số các inode rỗi ñược dùng ñể phân phối

ngay ñược cho một file mới ñược khởi tạo

(cid:2) Cờ chỉ dẫn rằng hệ thống file chỉ có thể ñọc (cấm ghi) (cid:2) Số lượng tổng cộng các khối rỗi trong hệ thống file (cid:2) Số lượng tổng cộng các inode rỗi trong hệ thống file (cid:2) Thông tin về thiết bị (cid:2) Kích thước khối của hệ thống file

Linux operating system - Nguyen Tri Thanh

6

Chứa thông tin liên quan ñến trạng thái của hệ thống file

Linux operating system - Nguyen Tri Thanh Cấu trúc thư mục

7

Linux operating system - Nguyen Tri Thanh

8

Kiến trúc hệ thống file

Linux operating system - Nguyen Tri Thanh

9

Hình ảnh các khối bộ nhớ

Cấu trúc thư mục (cid:1) Nội dung của một thư mục là một danh sách các file entry (cid:1) Mỗi một file entry gồm

(cid:2) Số hiệu inode quản lý file này (cid:2) Tên file (cid:2) ðộ dài của tên file (cid:2) ðộ dài của entry

Inode No

File name

File name length

Entry length

320

a.txt

5

7

Linux operating system - Nguyen Tri Thanh

10

Thông tin một file entry

Cấu trúc thư mục (cid:1) Khi một file bị xóa thì trường entry length của file ñứng trước sẽ ñược tăng ñộ dài

(cid:1) Khi chèn thêm một file entry, nó sẽ tính toán ñộ dài của entry ñể quyết ñịnh là chèn vào một entry bị xóa nào ñó hay cuối danh sách

11

Trạng thái của thư mục Linux operating system - Nguyen Tri Thanh

Inode

Linux operating system - Nguyen Tri Thanh

12

(cid:1) Khi tạo một file mới, hệ thống sẽ cấp một inode chưa sử dụng (cid:1) inode cho ta biết các khối dữ liệu của file và các thông tin về file (cid:1) Tổ hợp gồm inode + tập các khối dữ liệu = file vật lý (cid:1) Các inode có chỉ số: số thứ tự của inode trong danh sách inode (cid:1) Hệ thống dùng 2 bytes ñể lưu trữ chỉ số của inode (cid:1) Một file chỉ có một inode + một hoặc một số tên file (cid:1) Người dùng tác ñộng thông qua tên file và tên file lại tham chiếu ñến inode (cid:1)Linux dùng một vùng bộ nhớ chứa danh sách các inode: in-core inode

Cấu trúc Inode

(cid:1) Kiểu file (file thông thường, thư mục, ñặc tả kí tự, ñặc tả khối, ống dẫn) (cid:1) Kiểu file có giá trị 0 tương ứng ñó là inode chưa ñược sử dụng (cid:1) Quyền truy nhập file: có 3 mức quyền truy nhập

(cid:2) chủ của file (cid:2) nhóm người dùng của chủ nhân của file (cid:2) người dùng khác

Linux operating system - Nguyen Tri Thanh

13

(cid:1) Quyền truy nhập là ñọc (r), ghi (w), thực hiện (x) hoặc một tổ hợp nào ñó từ nhóm gồm 3 quyền trên (cid:1) Quyền thực hiện ñối với một thư mục tương ứng với việc cho phép tìm một tên file có trong thư mục ñó

Cấu trúc Inode (tiếp) (cid:1) Số lượng liên kết ñối với inode (số lượng các tên file) (cid:1) ðịnh danh chủ nhân của inode (cid:1) ðịnh danh nhóm chủ nhân (cid:1) ðộ dài của file tính theo byte (cid:1) Thời gian truy nhập file

(cid:2) thời gian file ñược sửa ñổi muộn nhất (cid:2) thời gian file ñược truy nhập muộn nhất (cid:2) thời gian file ñược khởi tạo

(cid:1)13 phần tử ñịa chỉ

Linux operating system - Nguyen Tri Thanh

14

(cid:2) 10 phần tử trực tiếp (cid:2) 1 phần tử gián tiếp bậc 1 (cid:2) 1 phần tử gián tiếp bậc 2 (cid:2) 1 phần tử gián tiếp bậc 3

Linux operating system - Nguyen Tri Thanh

15

Các con trỏ dữ liệu

Nội dung của một Inode

41CNTT

Linux operating system - Nguyen Tri Thanh

16

(cid:2) type regular (cid:2) perms rwxr-xr-x (cid:2) links 2 (cid:2) owner 41CT (cid:2) group (cid:2) size 5703 bytes (cid:2) accessed Sep 14 1999 7:30 AM (cid:2) modified Sep 10 1999 1:30 PM (cid:2) inode Aug 1 1995 10:15 AM (cid:2) Các phần tử ñịa chỉ dữ liệu

17

Truy cập ñến một file Linux operating system - Nguyen Tri Thanh

Linux operating system - Nguyen Tri Thanh

18

Thuật toán truy nhập tới inode (iget) (cid:1)Tình huống ñòi hỏi thuật toán iget: mở / tạo một file mới … (cid:1)iget cấp phát một bản in-core inode ñối với một số hiệu inode (cid:1)Nếu chưa có bản sao in-core inode thì ñể có nội dung của nó cần phải ñọc ñược nội dung của inode (cid:1)Nếu mỗi inode ñĩa chiếm 64 bytes, mỗi khối ñĩa chứa 8 inode ñĩa thì inode số 8 sẽ bắt ñầu từ byte thứ 448 trên khối ñĩa ñầu tiên trong vùng danh sách các inode.

Linux operating system - Nguyen Tri Thanh

19

/*có quá trình ñang làm việc với inode*/

Thuật toán iget Vào: hệ thống file, số hiệu inode Ra: inode ñược khóa hoặc mã lỗi while (not done){ if (inode trong vùng ñệm các inode){

if (inode ñã bị khóa) {

sleep (cho ñến khi inode ñược mở khóa); continue;

/* quay về while */

} if (inode tồn tại trong danh sách các inode rỗi)

Loại bỏ nó khỏi danh sách các inode rỗi;

Tăng giá trị trường số file tích cực trong in-core inode; return (inode)

} if (danh sách các inode rỗi rỗng) return (mã lỗi) Loại bỏ một inode mới từ danh sách các inode rỗi; ðặt lại số lượng inode rỗi vào hệ thống file; Loại bỏ inode ñó trên hàng ñợi cũ và ñặt nó lên hàng ñợi mới; ðọc inode từ ñĩa vào in-core inode; Khởi tạo inode; return (inode)

}

Linux operating system - Nguyen Tri Thanh

20

Thuật toán iput

Vào: con trỏ tới in-core inode Ra: không có { if (inode chưa bị khóa) Khóa inode; Giảm trường số lượng file tích cực ñi một ñơn vị; if (số lượng file tích cực ==0) { if (số liên kết của inode ==0) {

Giải phóng các khối ñĩa của file tương ứng với inode; ðặt giá trị trường "file type" của inode là 0; Giải phóng inode;

}

if (file ñã truy cập hoặc inode bị thay ñổi hoặc file ñã thay ñổi) Cập nhật inode trên ñĩa; ðặt inode vào danh sách các inode rỗi; } Tháo khóa của inode; }

Linux operating system - Nguyen Tri Thanh

21

Thuật toán iname if (path_name bắt ñầu từ thư mục gốc)

/* thuật toán

working_inode = inode của thư mục gốc;

iget */ else

/* thuật toán iget */

working_inode = inode của thư mục hiện tại;

while (thành phần ñã xử lý chưa là thành phần cuối cùng của path_name) {

ñọc thành phần tiếp theo của path_name từ dòng vào; xác minh quyền truy cập của quá trình ñối với working_inode là ñúng ñắn; if (working_inode là gốc và thành phần tiếp theo là "/")

continue;

/* quay lại while */

ñọc từ ñĩa nội dung thư mục working_inode;

/* nhờ các thuật toán như bmap, bread và brelse */

/* nhờ iput */ /* thuật toán iget*/

if (thành phần trùng với một ñiểm vào của thư mục working_inode) { nhận số hiệu inode từ thành phần ñã gặp; giải phóng working_inode; working_inode = inode của thành phần ñã gặp; } else /*không có thành phần ở thư mục*/

return (không có inode);

Linux operating system - Nguyen Tri Thanh

} return (working_inode);

22

Thuật toán ialloc while (true) { if (super block của hệthống file bị khóa){

sleep (cho tới khi super block không bị khóa);

continue;

} if (nếu danh sách các inode rỗi trên super block ñã rỗng){ Khóa super block; Lấy inode nhớ trên super block; Tìm kiếm các inode chưa sử dụng trên ñĩa lên super block cho ñến khi ñầy; Mở khóa super block; wakeup (cho tới khi super block rỗi); if (không có inode trên ñĩa) return (không có inode); ðặt inode nhớ là inode tiếp theo tìm ñược cuối cùng; } Lấy số hiệu của inode từ danh sách các inode trên super block; Lấy inode; if (tất cả inode không rỗi) {

Ghi inode lênñĩa; Loại bỏ inode;continue;

Linux operating system - Nguyen Tri Thanh

} Thiết lập các giá trị cho inode; Ghi inode lên ñĩa; Giảm tổng số các inode rỗi trên hệ thống file; return (inode); }

23

Thuật toán ialloc – trường hợp danh sách không rỗng

Trước khi gán: 48 là số hiệu inode tiếp theo

Sau khi gán: 48 ñã ñược cung cấp cho nhu cầu, vì vậy 83 trở thành chỉ số tiếp

Linux operating system - Nguyen Tri Thanh

24

Thuật toán ialloc – trường hợp danh sách rỗng

Trước khi gán: danh sách inode rỗi trên super block là rỗng, do 470 là chỉ số tiếp nên tìm từ số hiệu 471 trở ñi

Sau khi tìm kiếm có ñược danh sách rỗi và 471 là số hiệu inode cần gán; lúc này, 535 trở thành chỉ số inode tiếp theo

Linux operating system - Nguyen Tri Thanh

25

Thuật toán ifree

Vào: hệ thống file, chỉ số inode Ra: Không

return;

Tăng tổng số inode rỗi trên super block; if (super block trên hệ thống file ñã bị khóa) if (danh sách các inode ñầy) {

if (chỉ số inode lớn hơn inode nhớ trên super block)

ðặt chỉ số inode nhớ = chỉ số inode cần giải phóng;

lưu trữ chỉ số inode;

} else return;

Linux operating system - Nguyen Tri Thanh

26

Thuật toán alloc Vào: hệ thống file Ra: bộ nhớ ñệm cho khối ñĩa

while (super block của hệ thống file ñã bị khóa)

sleep (cho ñến khi super block không bị khóa;

Loại bỏ khối ñược cấp phát trên super block; if (khối bị loại bỏ là khối cuối cùng trong danh sách các khối rỗi) {

Khóa super block; ðọc khối có danh sách các khối rỗi; Sao chép các khối ñó vào super block của hệ thống file; Loại bỏ vùng ñệm cho khối; Mở khóa cho super block;

} Lấy bộ ñệm của khối ñó; Loại bỏ nội dung bộ ñệm; Giảm các khối nhớ rỗi lên hệ thống file; Chuyển chỉ số trên super block; return (bộ ñệm tương ứng với khối);

}

Linux operating system - Nguyen Tri Thanh

27

Linux operating system - Nguyen Tri Thanh

28

Liên kết Có hai kiểu liên kết: liên kết cứng và tượng trưng (cid:1) Liên kết cứng là một tên khác của một file

(cid:2) Cùng chia sẻ một inode và inode này chứa ñựng tất cả các

thông tin về file

(cid:2) Không thể tạo một liên kết cứng tới một thư mục.

(cid:1) Liên kết tượng trưng là một kiểu file ñặc biệt: file tham chiếu

theo tên ñến một file khác (cid:2) Kiểu file này như là một con trỏ chỉ dẫn tới một file hoặc

một thư mục, và ñược sử dụng ñể thay thế cho file hoặc thư mục ñược trỏ tới

(cid:2) Các thao tác (mở, ñọc, ghi ...) ñược thực hiện trên các file liên kết, sau ñó, nhân hệ thống sẽ tự ñộng thực hiện trên file ñích của liên kết

Linux operating system - Nguyen Tri Thanh

29

(cid:2) Khi xóa file, file liên kết sẽ bị xóa (file ñích vẫn còn)

Lệnh tạo liên kết (cid:1) Tạo một liên kết ñến thư mục/file ñích, file liên kết là tên-nối ln [tùy-chọn]<ñích>[tên-nối] (cid:1) Tuỳ chọn: -f, --force: xóa bỏ các file ñích ñang tồn tại. -d, -F, --directory: tạo liên kết cứng ñến các thư mục -i, interactive: vẫn tạo liên kết dù file ñích ñã bị xóa bỏ -s, --symbolic: tạo các liên kết tượng trưng --target-directory=:xácñịnh thư mục tên-thư-mục là thư mục

có chứa các liên kết

-v, --verbose: hiển thị tên các file trước khi tạo liên kết (cid:1) Ví dụ

# ln -s /usr/doc/g77/DOC g77manual.txt

Linux operating system - Nguyen Tri Thanh

30

Quyền truy nhập (cid:1) File và thư mục ñều có một chủ sở hữu và một nhóm sở hữu và

một tập hợp các quyền truy nhập

(cid:1) Cho phép thay ñổi các quyền truy nhập và quyền sở hữu file và

Linux operating system - Nguyen Tri Thanh

31

thư mục nhằm cung cấp truy nhập nhiều hơn hay ít hơn

Các kiểu file

Linux operating system - Nguyen Tri Thanh

32

Các kiểu file có trong Linux (cid:1) File người dùng (user data file)

(cid:2) Là các file tạo ra do hoạt ñộng của người dùng (khi các

chương trình)

(cid:1) File hệ thống (system data file)

(cid:2) Là các file lưu trữ thông tin của hệ thống (cấu hình, tài

khoản, thông tin thiết bị ...)

(cid:1) File thực hiện (executable file)

(cid:2) Là các file chứa mã lệnh hay chỉ thị cho máy tính thực hiện

(cid:1) Thư mục (directory)

(cid:2) Là file có cấu tạo hoàn toàn tương tự như file thông thường

Linux operating system - Nguyen Tri Thanh

33

khác nên có thể gọi là file

Các kiểu file có trong Linux

(cid:1) File thiết bị (device file)

(cid:2) Là file mô tả thiết bị, ñược lưu trữ trong thư mục /dev (cid:2) Ví dụ: tty (teletype - thiết bị truyền thông), ttyS (teletype serial - thiết bị truyền thông nối tiếp), fd0, fd1, ... (floppy disk- thiết bị ổ ñĩa mềm), hda1, hda2, ... hdb1, hdb2, ...

(cid:1) File liên kết (linked file)

(cid:2) Là những file chứa tham chiếu ñến các file khác trong hệ

thống

(cid:2) Cho phép người dùng tìm nhanh tới file thay vì tới vị trí

gốc của nó.

Linux operating system - Nguyen Tri Thanh

34

(cid:2) Giống như khái niệm shortcut trong MS-Windows 98

Các quyền truy cập

Linux operating system - Nguyen Tri Thanh

35

Thay ñổi quyền truy cập file chmod [tùy-chọn]

chmod [tùy-chọn]

chmod [tùy-chọn] --reference=nhómR (cid:1) Tùy chọn cũng có ý nghĩa giống như lệnh chgrp: -c, --changes -f, --silent, --quiet -R, --recursive th tham số --reference=RFILE cũng ý nghĩa gián tiếp như trong lệnh chgrp. (cid:1) Dạng xác lập tương ñối (cid:1) Dạng thứ hai là dạng xác lập tuyệt ñối (cid:1) Dạng gián tiếp tuân theo quyền truy nhập của file nhómR.

Linux operating system - Nguyen Tri Thanh

36

Cách xác lập tương ñối

Ví dụ

chmod g+w test

chmod o-rx test

Linux operating system - Nguyen Tri Thanh

37

Cách xác lập tương ñối (cid:1) Cặp 3 số hệ 8 là 755 tương ứng với dòng 9 bít 111101101

(cid:2) với 111 cho chủ sở hữu, (cid:2) 101 cho nhóm sở hữu (cid:2) 101 cho người dùng khác

Linux operating system - Nguyen Tri Thanh

38

(cid:1)Ví dụ chmod 753 memo1 → quyền truy nhập file memo1 là rwxr-xr-x

Thay ñổi quyền sở hữu

chown [tùy-chọn] [chủ][:nhóm] (cid:1) Tùy chọn: -c, --changes: hiển thị dòng thông báo chỉ với các file mà lệnh làm thay ñổi sở

hữu (số thông báo hiện ra có thể ít hơn trường hợp -v, -verbose).

-f, --silent, --quiet: bỏ qua hầu hết các thông báo lỗi. -R, --recursive: thực hiện ñổi quyền sở hữu ñối với thư mục và file theo ñệ quy. -v, --verbose: hiển thị dòng thông báo với mọi file liên quan mà chown tác ñộng

tới (có hoặc không thay ñổi sở hữu).

--help: ñưa ra trang trợ giúp và thoát. (cid:1) Ví dụ

# chown lan LinuxVN.com

Linux operating system - Nguyen Tri Thanh

39

Thay ñổi nhóm sở hữu

chgrp [tùy-chọn] {nhóm|--reference=nhómR} (cid:1) Tùy chọn của lệnh là (một số t-ơng tự như ở lệnh chown): -c, --changes : hiển thị dòng thông báo chỉ với các file mà lệnh làm thay ñổi sở hữu (số thông báo hiện ra có thể ít hơn tr-ờng hợp -v, - verbose)

-f, --silent, --quiet : bỏ qua hầu hết các thông báo lỗi. -R, --recursive : thực hiện ñổi quyền sở hữu ñối với thư mục và file theo

ñệ quy.

-v, --verbose : hiển thị dòng thông báo với mọi file liên quan mà chgrp

tác ñộng tới

--help : hiển thị trang trợ giúp và thoát

Linux operating system - Nguyen Tri Thanh

40

ðăng nhập vào một nhóm người dùng mới

Linux operating system - Nguyen Tri Thanh

41

(cid:1) Người dùng có thể là thành viên của một hoặc nhiều nhóm người dùng khác nhau (cid:1) Tại một thời ñiểm, một người dùng thuộc vào chỉ một nhóm (cid:1) Khi một người dùng ñăng nhập, hệ thống ngầm ñịnh người dùng ñó là thành nhóm khởi ñộng (cid:1) Nếu muốn sử dụng quyền sở hữu theo các nhóm khác ñối với những file thì người dùng phải chuyển ñổi thành thành viên của một nhóm tương ứng

ðăng nhập vào một nhóm người dùng mới

newgrp [nhóm]

(cid:1) Lệnh ñể chuyển ñổi nhóm người sử dụng

(cid:2) người dùng là thành viên của hai nhóm user và installer (cid:2) user là nhóm khởi ñộng (cid:2) khi ñăng nhập, người dùng là thành viên của nhóm user (cid:2) khi muốn sử dụng một số các chương trình thuộc quyền sở hữu

của nhóm installer, gõ lệnh sau: # newgrp installer

(cid:1) Ví dụ

# newgrp hot2

Nếu người dùng chuyển vào một nhóm không là thành viên

Linux operating system - Nguyen Tri Thanh

42

thì Linux sẽ ñưa ra một khuyến cáo thân thiện như sau: newgrp: Sorry

Một số thư mục ñặc biệt (cid:1) Thư mục gốc /

Thư mục chứa ñựng tất cả các thư mục con trong hệ thống

(cid:2) Là "thư mục riêng" của siêu người dùng (cid:2) ðược sử dụng ñể lưu trữ các file tạm thời, nhân Linux, ảnh khởi ñộng, các file nhị phân quan trọng, các file ñăng nhập quan trọng, ....

(cid:2) ðược sử dụng cho các vùng trống tạm thời khi thực hiện các

thao tác quan trọng (ví dụ, (build) một gói RPM từ các file RPM nguồn)

(cid:1) Thư mục /root

(cid:2) Thư mục "binaries" lưu trữ các chương trình khả thi (cid:2) Khi có nhiều hơn các file khả thi, có thêm các thư mục /sbin,

/usr/bin ñược sử dụng ñể lưu trữ

Linux operating system - Nguyen Tri Thanh

43

(cid:1) Thư mục /bin

Một số thư mục ñặc biệt (tiếp) (cid:1) Thư mục /dev

Chứa các trình ñiều khiển thiết bị

Lưu trữ tất cả các thông tin hay các file cấu hình hệ thống

(cid:1) Thư mục /etc

Lưu trữ các thư viện hàm và thủ tục

(cid:1) Thư mục /lib

Lưu file ñược khôi phục sau khi có bất kỳ một vấn ñề hoặc gặp một lỗi về ghi ñĩa (cid:1) Thư mục /mnt

(cid:2) Nơi ñể kết nối các thiết bị vào hệ thống file chính (cid:2) Các thư mục con của /mnt chính là gốc của các hệ thống file ñược kết nối: /mnt/floppy: ñĩa mềm, /mnt/hda1: vùng ñầu tiên của ñĩa cứng thứ nhất (hda), /mnt/hdb3: vùng thứ ba của ñĩa cứng thứ 2 (hdb) ...

Linux operating system - Nguyen Tri Thanh

44

(cid:1) Thư mục /lost+found

Một số thư mục ñặc biệt (tiếp)

ðược rất nhiều chương trình trong Linux sử dụng như một nơi ñể lưu trữ các file tạm thời

(cid:1) Thư mục /tmp

(cid:2)Trung tâm lưu trữ tất cả các lệnh hướng ñến người dùng (cid:2)Hầu hết các file nhị phân cần cho Linux ñều ñược lưu trữ ở ñây (cid:2)Thư mục con /usr/src bao gồm các thư mục con chứa các chương

trình nguồn của nhân Linux.

(cid:1) Thư mục /usr

(cid:2)Chứa các thư mục cá nhân của người dùng (cid:2)Tên người dùng ñược lấy làm tên của thư mục con.

Linux operating system - Nguyen Tri Thanh

45

(cid:1) Thư mục /home

Một số thư mục ñặc biệt (tiếp) (cid:1) Thư mục /var

Lưu trữ các file chứa các thông tin luôn luôn thay ñổi: bộ ñệm in, vùng lưu tạm thời cho việc nhận và gửi thư (mail)...

(cid:1) Thư mục /boot

Chứa nhân của hệ thống

(cid:1) Thư mục /proc

Dành cho nhân (kernel) của hệ ñiều hành và thực tế ñây là một hệ thống file ñộc lập do nhân khởi tạo

(cid:1) Thư mục /misc và thư mục /opt

Cho phép lưu trữ mọi ñối tượng vào hai thư mục này

(cid:1) Thư mục /sbin

46

Thư mục lưu giữ các file hệ thống thường tự ñộng chạy Linux operating system - Nguyen Tri Thanh

Xem thông tin về thư mục

# pwd

(cid:1) Xác ñịnh thư mục hiện thời với lệnh pwd

(cid:1) Cho biết hiện người dùng ñang ở trong thư mục nào và hiện ra

theo dạng một ñường dẫn tuyệt ñối

Linux operating system - Nguyen Tri Thanh

47

(cid:1) Ví dụ: # pwd /home/lan #

Xem thông tin về thư mục

ls [tùy-chọn] [file]...

ñược xếp vào một cột).

-1 : hiển thị mỗi file hoặc thư mục trên một dòng. -t : sắp xếp các file và thư mục trong danh sách theo thứ tự về thời gian ñược

sửa ñổi gần ñây nhất.

-x : ñưa ra danh sách các file và thư mục theo dạng cột (hai thư mục gần nhau

ñược xếp trên hai dòng ñầu của hai cột kề nhau). -r : sắp xếp danh sách hiển thị theo thứ tự ngược lại. -R : liệt kê lần lượt các thư mục và nội dung của các thư mục.

Linux operating system - Nguyen Tri Thanh

48

(cid:1) Tham số file có thể chứa các mô tả nhóm *, ? và cặp [ và ] (cid:1) Nếu không có tham số file, mặc ñịnh là thư mục hiện thời (cid:1) Tùy chọn: -a : liệt kê tất cả các file, bao gồm cả file ẩn. -l : ñưa ra thông tin ñầy ñủ nhất về các file và thư mục. -s : chỉ ra kích thước của file, tính theo khối (1 khối = 1204 byte). -C : ñưa ra danh sách các file và thư mục theo dạng cột (hai thư mục gần nhau

Xem thông tin về thư mục # ls –l total 108 drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com drwxr-xr-x 2 root root 4096 Oct 31 2000 bin drwxr-xr-x 2 root root 4096 Dec 11 16:54 boot drwxr-xr-x 7 root root 36864 Dec 11 16:54 dev drwxr-xr-x 43 root root 4096 Dec 11 16:55 etc drwxr-xr-x 5 root root 4096 Dec 11 16:57 home drwxr-xr-x 4 root root 4096 Oct 31 2000 lib drwxr-xr-x 2 root root 16384 Oct 31 2000 lost+found drwxr-xr-x 2 root root 0 Dec 11 16:54 misc drwxr-xr-x 5 root root 4096 Oct 31 2000 mnt drwxr-xr-x 2 root root 4096 Aug 23 12:03 opt dr-xr-xr-x 56 root root 0 Dec 11 11:54 proc drwxr-x--- 12 root root 4096 Dec 11 16:55 root drwxr-xr-x 3 root root 4096 Oct 31 2000 sbin drwxr-xr-x 3 root root 4096 Oct 31 2000 tftpboot drwxrwxrwx 8 root root 4096 Dec 11 16:58 tmp drwxr-xr-x 22 root root 4096 Oct 31 2000 usr drwxr-xr-x 22 root root 4096 Oct 31 2000 var

Linux operating system - Nguyen Tri Thanh

49

Xem thông tin về thư mục

inittab

services

smb.conf

# ls [is]* info-dir shadow sysctl.conf

initlog.conf shadow- shells syslog.conf

Linux operating system - Nguyen Tri Thanh

50

Tạo thư mục

# mkdir [tùy-chọn]

(cid:1) Cho phép tạo một thư mục mới (nếu chưa thực sự tồn tại) (cid:1) Nếu thư mục ñã tồn tại, hệ thống sẽ thông báo lỗi (cid:1) Tùy chọn: -m, --mode=Mod : thiết lập quyền truy nhập Mod như trong lệnh

chmod nhưng không cho quyền rwxrwxrwx.

-p, --parents : tạo các thư mục cần thiết mà không thông báo lỗi khi

nó ñã tồn tại.

# mkdir /home/test

Linux operating system - Nguyen Tri Thanh

51

--verbose : hiển thị các thông báo cho mỗi thư mục ñược tạo. --help : ñưa ra trang trợ giúp và thoát. (cid:1) Ví dụ

Xóa bỏ thư mục

rmdir [tùy-chọn] (cid:1) Xóa bỏ bất kỳ thư mục nào nếu có quyền ñó

(cid:1) Thư mục chỉ bị xóa khi nó "rỗng" (cid:1) Không có cách gì khôi phục lại các thư mục ñã bị xóa

rỗng

-p, --parents : xóa bỏ một thư mục, sau ñó lần lượt xóa bỏ tiếp các thư

mục có trên ñường dẫn chứa thư mục vừa xóa

(cid:1) Tùy chọn: --ignore-fail-on-non-empty: bỏ qua các lỗi nếu xóa một thư mục không

Linux operating system - Nguyen Tri Thanh

Dòng lệnh trên sẽ lần lượt xóa ba thư mục test2, test1, test và hiển thị thông báo trên màn hình kết quả của lệnh.

52

(cid:1) Ví dụ # rmdir -p /test/test1/test2

ðổi tên thư mục mv

mv

# mv LinuxVN.com LinuxVN sẽ ñổi tên thư mục LinuxVN.com thành LinuxVN.

(cid:1) ðổi tên một thư mục từ tên-cũ thành tên-mới (cid:1) Ví dụ,

(cid:1) Nếu sử dụng lệnh mv ñể ñổi tên một thư mục với một cái tên

ñã ñược ñặt cho một file thì lệnh sẽ gặp lỗi.

(cid:1) Nếu tên mới trùng với tên một thư mục ñang tồn tại thì nội

Linux operating system - Nguyen Tri Thanh

53

dung của thư mục ñược ñổi tên sẽ ghi ñè lên nội dung của thư mục trùng tên

Tạo file

touch

(cid:1) Lệnh touch có nhiều chức năng, trong ñó một chức năng là

giúp tạo file mới trên hệ thống

(cid:1) touch rất hữu ích cho việc tạo các file mới (cid:1) Lệnh này có tác dụng dùng ñể cập nhật thời gian truy nhập và

sửa chữa lần cuối của một file

(cid:1) Nếu sử dụng lệnh touch ñối với một file chưa tồn tại, chương

trình sẽ tạo ra file ñó

# touch newfile.txt

Linux operating system - Nguyen Tri Thanh

54

(cid:1) Ví dụ:

Tạo file

(cid:1) Tạo file bằng cách ñổi hướng ñầu ra của lệnh (>) (cid:1) Hữu ích nếu muốn lưu kết quả của một lệnh ñã thực hiện

# ls -l /bin > /home/thu/lenhls

(cid:1) Dùng dấu ">" theo nghĩa chuyển hướng ñầu ra chuẩn (cid:1) Ví dụ

(cid:1) Linux tự ñộng tạo nếu file lenhls chưa có, trong trường hợp

ngược lại, nội dung file cũ sẽ bị thế chỗ bởi kết quả của lệnh.

# ls -l /bin >> /home/thu/lenhls ñưa các dòng danh sách file trong thư mục /bin vào cuối nội dung của file /home/thu/lenhls.

Linux operating system - Nguyen Tri Thanh

55

(cid:1) Nếu muốn bổ sung kết quả vào cuối file, sử dụng dấu ">>"

Tạo file (cid:1) Có thể sử dụng ñể lấy thông tin từ ñầu vào (bàn phím...) rồi kết

xuất ra file hoặc các nguồn khác (màn hình ...) cat >

(cid:1) Gõ nội dung của file ngay tại dấu nhắc màn hình và gõ

CTRL+d ñể kết thúc việc soạn thảo

(cid:1) Không cho phép sửa lỗi, nếu muốn sửa một lỗi chính tả trên một dòng, chỉ có cách là xóa lỗi và gõ lại nội dung vừa bị xóa

# cat > /home/vd/newfile

(cid:1) Ví dụ: tạo file newfile trong thư mục /home/vd

# cat /home/vd/newfile

Linux operating system - Nguyen Tri Thanh

56

(cid:1) Gõ Enter và CTRL+d ñể trở về dấu nhắc lệnh (cid:1) Có thể sử dụng cat ñể xem nội dung của một file

Sao chép file

cp [tùy-chọn] ...

cp [tùy-chọn] --target-directory= ... (cid:1) Sao file-nguồn hoặc nhiều file-nguồn vào một thư mục ñích (cid:1) Tùy chọn: -b, --backup[=CONTROL] : tạo file lưu cho mỗi file ñích nếu như nó

ñang tồn tại.

-f, --force : ghi ñè file ñích ñang tồn tại mà không nhắc nhở. -i, --interactive: có thông báo nhắc nhở trước khi ghi ñè. -R : cho phép sao chép một cách ñệ quy thư mục. -S, --suffix= : bỏ qua các hậu tố thông thường (hoặc ñược chỉ

ra).

-u, --update : chỉ sao chép khi file nguồn mới hơn file ñích hoặc khi file

ñích chưa có.

Linux operating system - Nguyen Tri Thanh

57

Sao chép file (cid:1) File ñích ñược tạo ra có cùng kích thước và các quyền truy nhập như file nguồn, thời gian tạo lập là thời ñiểm thực hiện lệnh nên các thuộc tính thời gian sẽ khác

# cp /home/ftp/vd /home/test/vd1

(cid:2) Nếu mô tả ñầy ñủ tên file ñích thì nội dung file nguồn sẽ ñược

sao chép sang file ñích

(cid:2) Trong trường hợp chỉ ñưa ra vị trí file ñích ñược ñặt trong thư

mục nào thì tên của file nguồn sẽ là tên của file ñích

# cp /home/ftp/vd /home/test/

Linux operating system - Nguyen Tri Thanh

58

(cid:1) cp cho phép sao nhiều file cùng một lúc vào một thư mục # cp vd vd1 newdir # pwd

ðổi tên file

mv

(cid:1) Lệnh này cho phép ñổi tên file từ tên cũ thành tên mới.

# mv vd newfile

(cid:1) Ví dụ:

(cid:1) Lệnh này sẽ ñổi tên file vd thành newfile (cid:1) Nếu file newfile ñã tồn tại, nội dung của file vd sẽ ghi ñè lên

Linux operating system - Nguyen Tri Thanh

59

nội dung của file newfile.

Xóa file

rm [tùy-chọn] ...

(cid:1) Lệnh rm là lệnh rất "nguy hiểm" vì trong Linux không có lệnh khôi phục lại những gì ñã xóa vì thế hãy cẩn trọng khi sử dụng lệnh này

(cid:1) Có thể xóa bỏ nhiều file ñưa vào từ tham số dòng lệnh (có thể

dùng các ký tự ñại diện)

(cid:2) -d, --directory : loại bỏ liên kết của thư mục, kể cả thư mục

không rỗng. Chỉ có siêu người dùng mới ñược phép dùng tùy chọn này.

(cid:2) -f, --force : bỏ qua các file (xác ñịnh qua tham số file) không tồn

tại mà không cần nhắc nhở.

(cid:2) -i, --interactive : nhắc nhở trước khi xóa bỏ một file. (cid:2) -r, -R, --recursive : xóa bỏ nội dung của thư mục một cách ñệ

quy.

Linux operating system - Nguyen Tri Thanh

60

(cid:1) Tùy chọn:

ðếm từ trong file

wc [tùy-chọn] [file]...

(cid:1) Lệnh hiện ra số lượng dòng, số lượng từ, số lượng ký tự có

trong mỗi file, và một dòng tính tổng nếu có nhiều hơn một file ñược chỉ ra

(cid:1) Nếu không có tùy chọn nào thì mặc ñịnh ñưa ra cả số dòng, số

từ và số ký tự

# wc /home/lan/mau/mau1 11 64 293 /home/lan/mau/mau1 File mau1 có 293 ký tự, số 64 từ và có 11 dòng

Linux operating system - Nguyen Tri Thanh

61

(cid:1) Tuỳ chọn: -c, --byte, --chars : ñưa ra số ký tự trong file -l, --lines : ñưa ra số dòng trong file -w, --words : ñưa ra số từ trong file (cid:1) Ví dụ

Loại bỏ những dòng không quan trọng

uniq [tùy-chọn] [input] [output]

(cid:1) Loại bỏ các thông tin bị trùng lặp: các dòng trống, các dòng chứa nội dung giống nhau → làm gọn và thu nhỏ kích thước file

(cid:1) Loại bỏ các dòng trùng lặp kề nhau từ input và chỉ giữ lại một dòng duy nhất trong số các dòng trùng lặp rồi ñưa ra output

không giữ lại một dòng nào.

-i : hiển thị nội dung file sau khi xóa bỏ các dòng trùng lặp và chỉ giữ lại

duy nhất một dòng có nội dung bị trùng lặp. -D : hiển thị tất cả các dòng trùng lặp trên màn hình. Linux operating system - Nguyen Tri Thanh

62

(cid:1) Tuỳ chọn -c, --count : ñếm và hiển thị số lần xuất hiện của các dòng trong file. -d : hiển thị lên màn hình dòng bị trùng lặp. -u : hiển thị nội dung file sau khi xóa bỏ toàn bộ các dòng bị trùng lặp

Sắp xếp nội dung file

sort [tùy-chọn] [file] ... (cid:1) ðọc các thông tin và sắp xếp theo thứ tự trong bảng chữ cái hoặc theo thứ tự ñược quy ñịnh theo Tùy chọn của lệnh

-b : bỏ qua các dấu cách ñứng trước trong phạm vi sắp xếp. -c : kiểm tra nếu file ñã sắp xếp thì thôi không sắp xếp nữa. -d : xem như chỉ có các ký tự [a-zA-Z0-9] trong khóa sắp xếp, các dòng

có các kí tự ñặc biệt (dấu cách, ? ...) ñược ñ-a lên ñầu.

-f : sắp xếp không phân biệt chữ hoa chữ thường. -n : sắp xếp theo kích thước của file. -r : chuyển ñổi thứ tự sắp xếp hiện thời. (cid:1) Ví dụ

Linux operating system - Nguyen Tri Thanh

# sort -f vdsort

63

(cid:1) Tùy chọn: + [-] : Hai giá trị số1 và số2 xác ñịnh "khóa" sắp xếp của các dòng, thực chất lấy xâu con từ vị trí số1 tới vị trí số2 của các dòng ñể so sánh lấy thứ tự sắp xếp các dòng

Xác ñịnh kiểu file

file [tùy-chọn] [-f file] [-m ...] ... (cid:1) Xác ñịnh và in ra kiểu thông tin chứa trong file (cid:1) Lệnh file sẽ lần lượt kiểm tra kiểu file: hệ thống, kiểu file magic (ví dụ file mô tả thiết bị), ñến kiểu file văn bản (cid:1) Nếu file ñược kiểm tra thỏa các các kiểu trên thì kiểu file sẽ

ASCII.

(cid:2) executable: dạng file nhị phân khả thi. (cid:2) data: thường là dạng file chứa mã nhị phân và không thể in ra

ñược.

Linux operating system - Nguyen Tri Thanh

64

ñược in ra theo các dạng (cid:2) text: dạng file văn bản thông thường, chỉ chứa các mã ký tự

Xác ñịnh kiểu file (tiếp)

file [tùy-chọn] [-f file] [-m ...] ...

(cid:1) Tuỳ chọn

(cid:2) -b : cho phép chỉ ñưa ra kiểu file mà không ñưa kèm theo

tên file.

(cid:2) -f tên-file : cho phép hiển thị kiểu của các file có tên trùng với nội dung trên mỗi dòng trong file tên-file. ðể kiểm tra trên thiết bị vào chuẩn, sử dụng dấu "-".

(cid:2) -z : xem kiểu của file nén.

not stripped

/dev/hda: block special

Linux operating system - Nguyen Tri Thanh

65

(cid:1) Ví dụ # file file.c file /dev/hda file.c: C program text file: ELF 32-bit LSB executable, Intel 80386,version 1,dynamically linked,

Xem nội dung các file

more [-dlfpcsu] [-số] [+/xâumẫu] [+dòng-số] [file ...] (cid:1) Tùy chọn -số : xác ñịnh số dòng nội dung của file ñược hiển thị (số). -d : trên màn hình sẽ hiển thị các thông báo giúp ng-ời dùng cách sử

dụng ñối với lệnh more, ví như [ Press space to continue, "q" to quit .], hay hiển thị [Press "h" for instructions .] thay thế cho tiếng chuông cảnh báo khi bấm sai một phím.

-l : more thường xem ^L là một ký tự ñặc biệt, nếu không có tùy chọn

này, lệnh sẽ dừng tại dòng ñầu tiên có chứa ^L và hiển thị % nội dung ñã xem ñược (^L không bị mất), nhấn phím space (hoặc enter) ñể tiếp tục. Nếu có tùy chọn -l, nội dung của file sẽ ñược hiển thị như bình thường nhưng ở một khuôn dạng khác, tức là dấu ^L sẽ mất và trước dòng có chứa ^L sẽ có thêm một dòng trống.

Linux operating system - Nguyen Tri Thanh

66

Xem nội dung các file (tiếp)

more [-dlfpcsu] [-số] [+/xâumẫu] [+dòng-số] [file ...] (cid:1) Tùy chọn -p : không cuộn màn hình, thay vào ñó là xóa những gì có trên màn hình

và hiển thị tiếp nội dung file.

-c : không cuộn màn hình, thay vào ñó xóa màn hình và hiển thị nội dung

file bắt ñầu từ ñỉnh màn hình

-s : xóa bớt các dòng trống liền nhau trong nội dung file chỉ giữ lại một

dòng

-u : bỏ qua dấu gạch chân. +/xâumẫu : tùy chọn +/xâumẫu chỉ ra một chuỗi sẽ ñược tìm kiếm trước

khi hiển thị mỗi file.

+dòng-số : bắt ñầu hiển thị từ dòng thứ dòng-số. (cid:1) Ví dụ

# more -d vdmore

Linux operating system - Nguyen Tri Thanh

67

Các phím trong more

Linux operating system - Nguyen Tri Thanh

68

Thêm số thứ tự của các dòng trong file

nl [tùy-chọn]

tự các dòng trong nội dung file. Có các kiểu STYLE sau:

a : ñánh số tất cả các dòng kể cả dòng trống; t : chỉ ñánh số các dòng không trống; n : không ñánh số dòng. -d, --section-delimiter=CC : sử dụng CC ñể ñánh số trang logic (CC là

hai ký tự xác ñịnh phạm vi cho việc phân trang logic).

-f, --footer-numbering=STYLE : sử dụng kiểu STYLE ñể ñánh số các

dòng trong nội dung file (một câu có thể có hai dòng ...).

-h, --header-numbering=STYLE : sử dụng kiểu STYLE ñể ñánh số các

dòng trong nội dung file.

Linux operating system - Nguyen Tri Thanh

69

(cid:1) Tuỳ chọn: -b, --body-numbering=STYLE : sử dụng kiểu STYLE cho việc ñánh thứ

Thêm số thứ tự của các dòng trong file (tiếp)

nl [tùy-chọn]

công sai là số.

-l, --join-blank-lines=số :nhóm số dòng trống vào thành một dòng trống. -n, --number-format=khuôn : chèn số dòng theo khuôn (khuôn: ln - căn

trái, không có số 0 ở ñầu; rn - căn phải, không có số 0 ở ñầu; rz - căn phải và có số 0 ở ñầu)

-p, --no-renumber : không thiết lập lại số dòng tại mỗi trang logic. -s, --number-separator=xâu : thêm chuỗi xâu vào sau số thứ tự của dòng. -v, --first-page=số : số dòng ñầu tiên trên mỗi trang logic. -w, --number-width=số : hiển thị số thứ tự của dòng trên cột thứ số. (cid:1) Ví dụ # nl --body-numbering=a --number-format=rz vdnl

Linux operating system - Nguyen Tri Thanh

70

(cid:1) Tuỳ chọn: -i, --page-increment=số : ñánh số thứ tự của dòng theo cấp số cộng có

Xem qua nội dung file head [tùy-chọn] [file]...

(cid:1) Hiển thị 10 dòng ñầu tiên của mỗi file (cid:1) Nếu có nhiều hơn một file, thì lần lượt tên của file và 10 dòng

nội dung ñầu tiên sẽ ñược hiển thị

thể nhận giá trị là b cho 512, k cho 1K, m cho 1 Meg)

Linux operating system - Nguyen Tri Thanh

(cid:1) Tuỳ chọn -c, --bytes=cỡ : hiển thị cỡ (số nguyên) ký tự ñầu tiên trong nội dung file (cỡ có

-n, --lines=n : hiển thị n (số nguyên) dòng thay cho 10 dòng ngầm ñịnh. -q, --quiet, --silent : không ñ-a ra tên file ở dòng ñầu. (cid:1) Ví dụ # head -6 vdhead1 vdhead2 ==> vdhead1 <== 1) New configuration mode 1-1) Directories Now, everything goes to ~/GNUstep/Library/AfterStep or ==> vdhead2 <== 1.7.164 patch 3 $HOME/GNUstep/Library/AfterStep/start/Desktop/Theme/.include changed from shell script call to perl script call

71

Xem qua nội dung file

tail [tùy-chọn] [file]... (cid:1) ðưa ra màn hình 10 dòng cuối trong nội dung của các file (cid:1) Nếu có nhiều hơn một file, thì lần lượt tên của file và 10 dòng

cuối sẽ ñược hiển thị

(cid:2) --retry : cố gắng mở một file khó truy nhập khi bắt ñầu thực hiện lệnh

(cid:1) Tùy chọn

tail

(cid:2) -c, --bytes=n : hiển thị n (số) ký tự sau cùng (cid:2) -n, --lines=n : hiển thị n (số) dòng cuối cùng của file thay cho 10 dòng

ngầm ñịnh

Linux operating system - Nguyen Tri Thanh

72

(cid:1) Ví dụ # tail -2 vdtail1 vdtail2

Tìm sự khác nhau giữa hai file

diff [tuỳ-chọn] (cid:1) So sánh nội dung của hai file (cid:1) Nếu file1 là một thư mục còn file2 là một file bình thường, diff sẽ so sánh file có tên trùng với file2 trong thư mục file1 với file2.

(cid:1) - Nếu cả file1 và file2 ñều là thư mục, diff sẽ thực hiện sự so sánh lần lượt các file trong cả hai thư mục theo thứ tự từ a-z (cid:1) So sánh giữa hai thư mục không thể chính xác như khi so sánh

Linux operating system - Nguyen Tri Thanh

73

hai file

Tìm sự khác nhau giữa hai file

diff [tuỳ-chọn] (cid:1) Các tuỳ chọn:

(cid:2) -a: xem tất cả các file ở dạng văn bản và so sánh theo từng dòng (cid:2) -b: bỏ qua sự thay ñổi về số l-ợng của ký tự trống (cid:2) -B: bỏ qua mọi sự thay ñổi mà chỉ chèn hoặc xoá các dòng trống. (cid:2) --brief: chỉ thông báo khi có sự khác nhau mà không ñưa ra chi

tiết nội dung khác nhau

(cid:2) -d: tìm ra sự khác biệt nhỏ (tuỳ chọn này có thể làm chậm tốc ñộ

làm việc của lệnh diff)

(cid:2) -i: so sánh không biệt chữ hoa chữ thường (cid:2) -r: thực hiện so sánh ñệ qui trên thư mục (cid:2) -s: thông báo khi hai file là giống nhau (cid:2) -y: hiển thị hai file cạnh nhau ñể dễ phân biệt sự khác nhau

(cid:1) Ví dụ diff ./ver0.5/mydb.c ./ver0.6/mydb.c

Linux operating system - Nguyen Tri Thanh

74

Tìm theo nội dung file bằng lệnh grep

| grep grep [tùy-chọn] [file] (cid:1) Hiển thị tất cả các dòng có chứa mẫu-lọc (cid:1) Tùy chọn -G, --basic-regexp : xem mẫu lọc như một biểu thức thông thường -E, --extended-regexp : xem mẫu lọc như một biểu thức mở rộng -F, --fixed-strings : xem mẫu như một danh sách các xâu cố ñịnh, ñược phân ra bởi các dòng mới. Ngoài lệnh grep còn có hai lệnh là egrep và fgrep. egrep tương tự như lệnh grep -E, fgrep tương tự với lệnh grep -F

-f file, --file=file : lấy các mẫu từ file, một mẫu trên một dòng -H, --with-file : ñ-a ra tên file trên mỗi dòng chứa mẫu tương ứng. -h, --no-filename : không hiển thị tên file kèm theo dòng chứa mẫu trong

trường hợp tìm nhiều file.

Linux operating system - Nguyen Tri Thanh

-i : hiển thị các dòng chứa mẫu không phân biệt chữ hoa chữ thường. -l : ñưa ra tên các file trùng với mẫu lọc. -n, --line-number : thêm số thứ tự của dòng chứa mẫu trong file

75

Tìm theo nội dung file bằng lệnh grep

Linux operating system - Nguyen Tri Thanh

76

Tìm theo nội dung file bằng lệnh egrep

Linux operating system - Nguyen Tri Thanh

77

Tương tự như lệnh grep, nhưng egrep ñưa ra thêm một số ký tự ñại diện trong biểu thức chính quy tạo mẫu-lọc

Lệnh tách và ghép các cột trong file văn bản

(cid:1) Các lệnh trong Linux thường trả về kết quả theo dạng các dòng

ñược chia thành các cột (lệnh ls, ps, …)

(cid:1) Các file cấu hình trong Linux cũng có thể ñược lưu theo dạng

này (file /etc/passwd)

(cid:2) cut [tùy chọn] file (cid:2) cut –f 1,2 /etc/passwd

(cid:1) Lệnh cut dùng ñể trích ra một số cột trong 1 file văn bản

(cid:1) Lệnh paste dùng ñể ghép các cột của các file văn bản thành 1

Linux operating system - Nguyen Tri Thanh

78

file lớn hơn (cid:2) paster … (cid:2) paste file1.txt file2.txt > file3.txt

Tìm file theo ñặc tính

find [ñường-dẫn] [biểu_thức]

(cid:2) Mặc ñịnh ñường dẫn là thư mục hiện thời, biểu thức là -print. (cid:2) -daystart : ño thời gian (-amin, -atime, -cmin, -ctime, -mmin, -

mtime).

(cid:2) -depth : thực hiện tìm kiếm từ nội dung bên trong thư mục (cid:2) các test (cid:2) -amin n : tìm file ñược truy nhập n phút trước. (cid:2) -atime n : tìm file ñược truy nhập n*24 giờ trước. (cid:2) -cmin n : trạng thái của file ñược thay ñổi n phút trước ñây. (cid:2) -ctime n : trạng thái của file ñược thay ñổi n*24 giờ trước ñây. (cid:2) -empty : file rỗng và hoặc là thư mục hoặc là file bình thường. (cid:2) -user tên-người: file ñược sở hữu bởi người dùng tên-người.

Linux operating system - Nguyen Tri Thanh

79

(cid:1) Tìm kiếm file trên cây thư mục theo biểu thức ñược ñưa ra (cid:1) Tùy chọn

Tìm file theo ñặc tính

Linux operating system - Nguyen Tri Thanh

80

(cid:1) Ví dụ # find -name 'what*' ./usr/bin/whatis ./usr/bin/whatnow (cid:1) Có thể kết hợp lệnh find với một lệnh khác nữa # find . -type f -exec grep -l -i mapping ‘{}’ \ ; ./OWL/WordMap/msw-to-txt.c ./.elm/aliases.text ./Mail/mark ./News/usenet.alt ./bin/my.new.cmd: Permission denied ./src/fixit.c ./temp/attach.msg find . -maxdepth 1 -type d -name "*" -exec rm -rf '{}' \; find /tmp -name core -type f -print | xargs /bin/rm -f

Nén, giải nén và xem nội dung các file

gzip [tùy-chọn] [ -S suffix ] [ < file> ] gunzip [tùy-chọn] [ -S suffix ] [ ] zcat [tùy-chọn] [ ] (cid:1) Ví dụ # gzip /home/test/vd1 # ls /home/test Desktop data dictionary newt-0.50.8 rpm save vd1.gz # zcat /home/test/vd1.gz (cid:1) Tiện ích nén mới

bzip2 [tùy chọn] bunzip2 [tùy chọn]

Linux operating system - Nguyen Tri Thanh

81

Sao lưu các file

tar [tùy-chọn] [, ...] [, ...]

(cid:1) Tùy chọn -c, --create : tạo file lưu trữ mới. --delete : xóa từ file lưu trữ (không sử dụng cho băng từ). -r, --append : chèn thêm file vào cuối file lưu trữ. -t, --list : liệt kê nội dung của một file lưu trữ. -u, --update : chỉ thêm vào file lưu trữ các file mới hơn các file ñã có. -x, --extract, --get : tách các file ra khỏi file lưu trữ. -C, --directory tên-thư-mục : thay ñổi ñến thư mục có tên là tên-thư-

mục.

--remove-files : xóa file gốc sau khi ñã sao lưu chúng vào trong file lưu

trữ.

-v, --verbose : hiển thị danh sách các file ñã ñược xử lý. (cid:1) Ví dụ

# tar --create --file ./backup /usr/src

Linux operating system - Nguyen Tri Thanh

82

Sao lưu các file (tiếp)

tar [tùy-chọn] [, ...] [, ...] (cid:1) Có thể kết hợp nén file sau khi sao lưu -z : nén bằng gzip -j : nén bằng bzip2 (cid:1) Cách sử dụng các tùy chọn này là bài tập

Linux operating system - Nguyen Tri Thanh

83