Hệ thống tệp trongLinuxLinux
Tham khảo• Bài giảng của Department of Computer Science
of NIU
http://www.cs.niu.edu
3
1. Tệp tin và thư mục• Trong linux và hầu hết các hệ điều hành,
dữ liệu được lưu trữ dưới dạng các tệp tin (file)
• Tệp tin– Chứa dữ liệu– Lưu trữ ở ổ đĩa ngoài
• Thư mục– Chứa các tệp tin và thư mục con– Lưu trữ ở ổ đĩa ngoài– Nhờ đó dễ dàng quản lý tệp tin
• Hệ thống tệp = hệ thống thư mục và tệp tin4
Cấu trúc hệ thống tệp
Biểu diễn bởi một cây phân cấp thư mục và các tệp dữ liệuMột thư mục dùng để tạo nhóm một tập các Một thư mục dùng để tạo nhóm một tập các
tệp dữ liệu
Một thư mục có thể chứa các thư mục con
Thư mục gốc (/) là điểm vào đầu tiên cho cả cây thư mục
5
Các thư mục thông dụng / (thư mục gốc)
/bin : thư mục tệp chương trình cơ bản
/boot : thư mục chứa hạt nhân của HĐH
/etc : thư mục các tệp cấu hình
/dev : thư mục các tệp thiết bị /dev : thư mục các tệp thiết bị
/home : thư mục chứa dữ liệu NSD
/lib : thư viện hệ thống
/usr : thư mục ứng dụng
/var : thư mục dữ liệu hệ thống, thường được cập nhật
6
Cấu trúc thư mục
7
Các kiểu thư mục• Thư mục gốc: /
– Thư mục gốc cho mọi thư mục
– Luôn bắt đầu bằng dấu /
• Thư mục chính (thư mục cá nhân): $HOME or ~• Tạo bởi người quản trị hệ điều hành
• Lần đầu đăng nhập sẽ được vào thư mục này
• Với tài khoản $HOME, người dùng có thể tạo các thư mục riêng củamình
• Thường nằm trong thư mục /home, ví dụ /home/ttdlinh
• Thư mục làm việc hiện thời: .– Là thư mục hiện thời mà người dùng đang làm việc
– Còn gọi là Current Working Directory (cwd)
• Thư mục cha: ..– Là thư mục chứa thư mục làm việc hiện thời
8
Tệp Linux vs. tệp Windows Giống nhau
độ dài tối đa cho tên tệp là 255 Chấp nhận tất cả các kí tự để đặt tên tệp (nhưng nên tránh
sử dụng các kí tự đặc biệt như * ? [ ] & để tránh sự nhậpnhằng trong câu lệnh sử dụng sau này)
Tính đặc thù của Unix Tính đặc thù của Unix Quản lý dưới một khung nhìn của tệp cho cả thư mục và
các loại tài nguyên hệ thống (ngoại vi, bảng phân chươngđĩa)
Không có khái niệm phần mở rộng của tên tệp (kí tự '.' trong tên tệp được đối xử như mọi kí tự khác
Không dùng ổ đĩa logic trong cây thư mục '/' được dùng thay cho '\' trong đường dẫn thư mục
9
Kiểu của tệp
Có 3 loại tệp chính trong một cây thư mục của Unix: Tệp thư mục là một thư mục trong đường dẫn phân
loại (vd., /usr, /home,…)loại (vd., /usr, /home,…)
Tệp thông thường là một tệp chứa dữ liệu hoặc tệp chương trình (vd., /bin/passwd, /etc/passwd, …)
Tệp đặc biệt là một tệp thiết bị tương ứng với thiết bị ngoại vi hoặc các tệp tự sinh bởi HĐH (vd., /dev/hda1, /dev/cdrom, /dev/lp0, …)
10
Đường dẫn
Hai cách để xác định vị trí của tệp tin hoặc thư mục:• Sử dụng đường dẫn tuyệt đối
– Đường đi đầy đủ kể từ thư mục gốc /– Và luôn luôn bắt đầu từ thư mục gốc (/)!– Ví dụ: /home/ux/krush/unix/assignments/assign1.sp04
• Sử dụng đường dẫn tương đối• Sử dụng đường dẫn tương đối– Là đường dẫn truy vết từ thư mục hiện thời– Không phải bắt đầu từ thư mục gốc (/)– Dấu hai chấm (..) để đi đến thư mục cha của thư mục hiện
thời– Dấu một chấm (.) trỏ tới thư mục hiện thời– Ví dụ: unix/assignments/assign1.sp04
11
Đường dẫn tương đối và tuyệt đối
12
Đường dẫn tuyệt đối cho tệp tin file3
đường dẫn tuyệt đối:đường dẫn tuyệt đối:đường dẫn tuyệt đối:
/usr/staff/joan/file3
đường dẫn tuyệt đối:
/usr/staff/joan/file3
13
Các câu lệnh với thư mục
14
Quản lý thư mục pwd: hiển thị đường dẫn tuyệt đối của thư mục hiện tại cd: thay đổi vị trí thư mục hiện tại
$ cd /home/tuananh $ cd tuananh
ls: liệt kê các tệp trong một thư mục $ ls $ ls /home/tuananh $ ls /home/tuananh $ ls –la tuananh
tuỳ chọn -a cho phép hiển thị cả các tệp ẩntuỳ chọn -l cho phép hiển thị thuộc tính cho mỗi tệp (kiểu, quyền, liên kết, chủ sở hữu, nhóm sở hữu, kích thước, ngày sửa đổi)
mkdir /home/tuananh/van_ban tạo một thư mục rỗng
rmdir van_ban xoá một thư mục rỗng
15
Câu lệnh ls
16
• ls
Hiển thị nội dung của thư mục hiện hành
• ls path_name
Hiển thị nội dung của thư mục xác định bởi path_name.
• ls –l
Câu lệnh ls
• ls –l
Hiển thị chi tiết
• ls –a
Hiển thị tất cả tệp tin ẩn
• ls -la
Sử dụng đồng thời –l và -a
17
Câu lệnh ls -l
18
Hiển thị nội dung của một thư mục
% ls -l unix/gradestotal 10-rwxr-xr-x 3 krush csci 72 Jan 19 19:12 330assign-graderun-rwxr-xr-x 1 krush csci 70 Jan 19 19:13 330exam-graderun-rwxr-xr-x 1 krush csci 70 Jan 19 19:13 330exam-graderun-rwxr-xr-x 2 krush csci 70 Jan 19 19:12 330quiz-graderun-r-x------ 1 krush csci 468 Feb 1 11:55 test-330grade-r-x------ 1 krush csci 664 Feb 1 11:55 test-330grade,v
19
Tên đặc biệt
« . » : thư mục hiện tại
« .. » : thư mục cha
« ~ » : thư mục cá nhân « ~ » : thư mục cá nhân
« .xxx » : tệp ẩn (e.g., /home/tuananh/.bashrc)
20
Câu lệnh mkdir
21
Tên thư mục
• Sử dụng các kí tự sau:– Kí tự hoa (A-Z)
– Kí tự thường (a-z)
– Số (0-9)
– Dấu gạch dưới ( _ )
– Dấu chấm ( . )
22
Tên thư mục• Khi đặt tên thư mục, tránh các kí tự sau:
& * \ | [ ] {}
$ <> () # ? /
“ ‘ ; ^ ! ~
Space Tab
23
Ví dụ: Tạo một thư mục
usretcdev home
uxmptty null skel bin local ucb
z036473
.cshrc .logoutcsci330You are here
Temp
Tạo một thư mục tên là Data dưới thư mục csci330
a) Sử dụng đường dẫn tuyệt đối:
b) Sử dụng đường dẫn tương đối::
c) Tạo luôn cả thư mục cha (nếu chưa tồn tại):
mkdir -p csci330/Data/subData
mkdir /home/mp/z036473/csci330/Data
mkdir csci330/Data
.cshrc .logoutcsci330
Data
Temp
24
Câu lệnh cd
25
Thay đổi thư mục
usretcdev home
uxmptty null skel bin local ucb
z036473
.cshrc .logoutcsci330 Temp
Trong thư mục Data, đi đến thư mục HOME
a) Sử dụng đường dẫn tuyệt đối:
b) Sử dụng đường dẫn tương đối:
cd /home/mp/z036473
cd $home cd cd ~ cd ~z036473cd ../..
.cshrc .logoutcsci330
You are here Data
Temp
26
Xóa thư mục• Để xóa thư mục trống, dùng “rmdir”Ví dụ: Để xóa thư mục “test”% rmdir test
• Để xóa thư mục không rỗng, sử dụng lệnh “rm –r”Ví dụ: Để xóa thư mục không rỗng “old-data”% rm –r old-data
27
Ví dụ$ cd ~
$ pwd
/home/tuananh
$ ls -la
-rw-r--r-- 1 tuananh user1 2451 Feb 7 07:30 .bashrc
-rw-r--r-- 1 tuananh user1 4025 Feb 10 19:12 linux.ppt
drwxr-xr-- 2 tuananh user1 512 Feb 10 19:12 linux
$ mkdir vanban
$ cd vanban
$ pwd
/home/tuananh/vanban
$ cd ..
$ pwd
$ rmdir vanban
28
Bài tập 1
• Trong thư mục cá nhân bạn (ví dụ/home/students/2017xxxx) tạo thư mục dir1 rồitạo thư mục dir2 trong thư mục dir1
• Hiển thị nội dung của dir1, dir2
• Di chuyển tới dir2• Di chuyển tới dir2
• Quay lại thư mục home
• Xóa dir1 và dir2
29
Các siêu kí tự
* dùng để thay thế cho một chuỗi kí tự bất kì bao gồm cả xâu rỗng
? thay thế cho một kí tự bất kì
[ ] được thay thế bởi một kí tự trong một tập [ ] được thay thế bởi một kí tự trong một tập kí tự cho trước
[! ] được thay thế bởi một kí tự không có trong một tập kí tự cho trước
30
Ví dụ
$ ls -l *.[c,h]
-rw-r--r-- 1 tuananh user1 2451 Feb 7 07:30 myprog.c
-rw-r--r-- 1 tuananh user1 2451 Feb 7 07:30 myprog.h
$ ls -l *prog
drwxr-xr-- 2 tuananh user1 512 Feb 10 19:12 c_prog
drwxr-xr-- 2 tuananh user1 512 Feb 10 19:12 java_prog
$ ls -l .*
-rw-r--r-- 1 tuananh user1 451 Feb 7 07:30 .bashrc
-rw-r--r-- 1 tuananh user1 225 Feb 7 07:30 .bash_profile
-rw-r--r-- 1 tuananh user1 351 Feb 7 07:30 .bash_logout
31
Các câu lệnh chung trên thư mục và tệp
32
Quản lý tệp
$cp file1 […] dir sao chép một hoặc nhiều tệp vào một thư mục
$mv file1 […] dir di chuyển một hoặc nhiều tệp đến một thư mục
$rm file1 […] xoá một hoặc nhiều tệp
tuỳ chọn -R (recursive) cho phép sao chép/di chuyển/xoá toàn bộ thư mục
bao gồm cả các thư mục con
33
Copy tệp, thư mục• Cú pháp copy một tệp tin:
•cp source-file new-file
• cp source-file destination-dir
• Lựa chọn thường dùng:
-i nếu tệp tin có tên “new-file” đã tồn tại, câu lệnh-i nếu tệp tin có tên “new-file” đã tồn tại, câu lệnhcp sẽ hỏi lại trước khi ghi đè
-p lưu giữ các thuộc tính cơ bản (ngày tạo/sửa, cácquyền)
-r cóp đệ qui các tệp tin và thư mục con
34
Copy tệp, thư mục
• Ví dụ:• $cp /home/tuananh/baitap.txt /backup/baitap1.txt• $cp /home/tuananh/baitap.txt /newdir
• Nếu newdir là một thư mục thì sẽ có /newdir/baitap.txt được tạora.
• $cp –r /home/tuananh/btlinux /home/student• Nếu btlinux và student đều là thư mục
35
Di chuyển tệp tin
• Để di chuyển tệp từ thư mục này sang thư mục khác hoặc đặt tên lại tệp, hãy dùng lệnh có tên "mv".
• Thư mục có chứa các tập tin nguồn và thư mục • Thư mục có chứa các tập tin nguồn và thư mục đích phải có quyền ‘ghi’ và quyền ‘thực thi’.
36
Lệnh mv
37
Di chuyển tệp tin, thư mục• Cú pháp: mv source-file destination-file
• Nếu tệp đích tồn tại, "mv" sẽ không ghi đè lên tệp đó.
Ví dụ: Chuyển tệp “assign1.txt” tới một thư mục Ví dụ: Chuyển tệp “assign1.txt” tới một thư mục khác và đặt tên lại là “assign1.save”
% mv assign1.txt ~/archive/assign1.save
% mv assign1.txt ~/archive
38
Di chuyển Tệp tin, thư mục
39
Đổi tên tệp, thư mục• Để thay đổi tên của một thư mục hoặc tệp hiện có,
sử dụng lệnh có tên là "mv“
• Ví dụ: Thay tên của tệp tin từ “unix” sang tên “csci330”
% mv unix csci330% mv unix csci330
• Đối với ví dụ trên, điều gì sẽ xảy ra nếu "csci330" đã tồn tại trong thư mục hiện thời và đó là tên của một thư mục?
40
Xóa Tệp tin, thư mục
• Bạn nên loại bỏ các tệp không cần thiết để giải phóng không gian đĩa.
• Để loại bỏ/xóa tệp, hãy dùng lệnh có tên "rm".• Cú pháp:
rm file1 file2 […]rm file1 file2 […]• Các tùy chọn thường được sử dụng:• -f loại bỏ mà không quan tâm các quyền của file• -i xác nhận trước khi loại bỏ• -r loại bỏ tất cả thư mục con trong thư mục được chỉ
định
41
Xóa tệp tin, thư mục• Người dùng phải có quyền ghi với các tệp, thư
mục trong đường dẫn.
• Người dùng phải có quyền thực thi với các thưmục trong đường dẫn.
Ví dụ: Xóa tệp có tên “old-assign”
% rm unix/assign/old-assign
42
Ví dụ$ ls -l
-rw-r--r-- 1 tuananh user1 16 Feb 10 19:12 test.txt
drwxr-xr-- 2 tuananh user1 512 Feb 10 19:14 mydir
$ cp test.txt mydir
$ ls -l mydir
-rw-r--r-- 1 tuananh user1 16 Feb 12 20:03 test.txt-rw-r--r-- 1 tuananh user1 16 Feb 12 20:03 test.txt
$ rm –R mydir
$ ls -l
-rw-r--r-- 1 tuananh user1 16 Feb 10 19:12 test.txt
$ rm test.txt
$ ls -l
$
43
Bài tập 2
• Trong thư mục cá nhân (ví dụ/home/students/2017xxxx) tạo thư mục dir11 vàdir22
• Copy 4 tệp bất kì vào dir22 với các tên mới f1.txt, f2.txt, f3.txt, f4.txtf2.txt, f3.txt, f4.txt
• Chuyển dir22 vào trong dir11
• Xóa tất cả tệp tin trong dir22 có phần mở rộng .txt
• Xóa dir22
44
Nhắc lại: các câu lệnh với Tệp tin
45
Tìm kiếm file
$ find thư_mục expressions Cho phép tìm kiếm các file trong một thư mục (ngầm định là trong thư
mục hiện tại) với một số điều kiện hoặc các lệnh thực thi trên tập cácfile tìm được.
Các điều kiện Tên : -name tên Tên : -name tên
Quyền truy cập : -perm quyền_truy_cập
Kiểu : -type d/f/...
Kích thước : -size N
Các đơn vị kích thước b: block, k: kB, M: megabyte, G: Gb.
Thời gian : -atime N, -mtime N, -ctime N
Kết quả trả về đường dẫn tuyệt đối đến tệp tìm được.
46
Ví dụ $find /usr -name toto
Tìm kiếm file tên là toto trong thư mục /usr (bao gồmcả các thư mục con của /usr)
$find /usr -name "*.c " Đưa ra danh sách các file kết thúc bằng « .c »
$find / -mtime 3 $find / -mtime 3 Tìm tất cả các file có thay đổi trong 3 ngày gần đây
$find / -size 2G Tìm tất cả các file có kích thước lớn hơn 2G
$find / -type f -user olivier -perm 755 Tìm tất cả các file thuộc về người sử dụng olivier,
đồng thời có quyền truy cập là 755
47
Ví dụ
Ví dụ 1: Tìm tệp tin kết thúc bởi “.bak”.
% find ~ “*.bak”
Example 2: Tìm tệp tin vừa thay đổi ngày hôm qua.Example 2: Tìm tệp tin vừa thay đổi ngày hôm qua.
% find ~ –mtime –1
48
Bài tập 2• Trong thư mục cá nhân (ví dụ
/home/students/2017xxxx) tạo thư mục dir11, dir22
• Copy 4 tệp bất kì vào dir22 với các tên mớif1.txt, f2.txt, f3.text, f4.text
• Chuyển dir22 vào trong dir11• Chuyển dir22 vào trong dir11
• Xóa tất cả tệp tin trong dir22 có phần mở rộng.text
• Tìm tất cả tệp tin trong dir11 có phần mở rộng.txt
• Trong thư mục cá nhân, tìm tất cả tệp tin vớitên bắt đầu bằng “test” và kích thước hơn 4MB
49
Câu lệnh “ln”
• Cho phép tệp tin được hiển thị trong nhiều thư mục
• 2 loại:– Liên kết vật lý ( hard link)– Liên kết vật lý ( hard link)
– Liên kết biểu tượng (symbolic link)
• -> Cần phải hiểu cách tổ chức và lưu trữ tệp tin trong Linux
50
Khái niệm inode Trong Linux ổ đĩa được chia thành các đơn vị lưu trữ
gọi là block Kích thước block thay đổi tùy phiên bản hệ điều
hành: 512 byte -> 4kB Lưu trữ một tệp kích thước lớn trong Linux như thế Lưu trữ một tệp kích thước lớn trong Linux như thế
nào? Một inode là một điểm vào của 1 file trên hệ thống tệp Nội dung của tệp được lưu trong các khối dữ liệu
một tệp rỗng = vẫn có inode nhưng inode không chỉ đến cáckhối dữ liệu
Một thư mục là một tệp với nội dung là một bảng liênkết một liên kết gắn một vị trí của tệp với một inode của hệ thống
tệp
Inode: Minh họa
52
Liên kết vật lý (1)
Một liên kết vật lý là một quan hệ giữa tên tệp trong thư mục với một inode
Có thể có nhiều liên kết vật lý đến cùng một inode
$ln fbis lien
lý đến cùng một inode
Lệnh ln cho phép tạo một liên kết vật lý đến một inode (tệp) đã tồn tại ln tep_goc tep_moi
tệp mới chia sẻ cùng inode và khối dữ liệu của tệp ban đầu
53
Liên kết vật lý
2406
2407
2408
.
.
home
z036473
. 1076
.. 2083
aa 2407
Contents of dir1
.
.dir3
dir1 dir2
aa
bb. 1070
.. 2050
bb 2407
Contents of dir3
54
Liên kết vật lý (2) Số hiệu inode của tệp có thể xem được bằng
$ ls -i Số liên kết vật lý đến một inode có thể được
xem bằng lệnh ls –l$ ls -l-rw-rw-r-- 1 tuananh user1 0 Nov 12 15:19 file-rw-rw-r-- 1 tuananh user1 0 Nov 12 15:19 filedrwxr-xr-x 2 tuananh user1 4096 Dec 14 17:50 dir
Tại sao với một thư mục luôn có ít nhất 2 liênkết vật lý?
Xoá một tệp (lệnh rm) đồng nghĩa với xoá mộtliên kếtNếu là liên kết vật lí cuối cùng trỏ đến inode được xoáthì các khối liên quan đến inode cũng được xoá theo
55
Liên kết biểu tượng
ln –s duong_dan_tep_goc tep_moi ln –s duong_dan_tep_goc tep_moi
VD: trong thư mục R3 thực hiện:
ln –s R2/nouveau lien_symbolique khi tạo liên kết biểu tượng (tuỳ chọn –s) một inode mới được tạo
ra
inode này chứa tên (dạng tuyệt đối hay tương đối) của phần tửđược trỏ tới
56
Liên kết biểu tượng ở các hệ thống tệp khác nhau
57
Liên kết biểu tượng vs. Liên kết vật lý
Liên kết biểu tượng cho phép tránh được các hạn chế về mặt dung lượng của thiết bị lưu trữ Một liên kết vật lý luôn luôn chiếm một số lượng
inode nhất địnhinode nhất định
Chúng ta có thể phân biệt rõ một file được tạo ra và file gốc trong một liên kết biểu tượng Điều gì sẽ xảy ra khi một người xóa đi file gốc ?
58
Ví dụ
$ ls -l
-rw-r--r-- 1 tuananh user1 8 Feb 10 1:12 test.txt
$ ln test.txt link1
$ ln -s test.txt link2
$ ls -l link*$ ls -l link*
-rw-r--r-- 2 tuananh user1 16 Feb 10 1:12 link1
lrw-r--r-- 1 tuananh user1 16 Feb 10 1:13 link2->test.txt
59
Các kiểu tệp Các ký hiệu dưới đây được sử dụng để biểu diễn
các kiểu tệp - : tệp thông thường
d : thư mụcd : thư mục
b : tệp đặc biệt (block)
c : tệp đặc biệt (ký tự)
l : link
m : phần bộ nhớ trong dùng chung
p : đường ống
Sử dụng lệnh ls –l để xem kiểu tệp
60
Exercise 3
• Trong thư mục cá nhân (ví dụ/home/students/2017xxxx) tạo thư mục dir3, sauđó là dir4 bên trong dir3
• Tạo tệp file1 trong dir4
• Tạo tệp file2 trong dir3 liên kết vật lý đến file1• Tạo tệp file2 trong dir3 liên kết vật lý đến file1
• Tạo file file3 trong dir3 liên kết biểu tượng đến file1
• Xem nội dung của file2 và file3
• Điều gì xảy ra nếu xóa nội dung của file 1?
61
Các câu lệnh thông dụng với Thư mục và Tệp tin
62
Các câu lệnh dành riêng cho Tệp tin
Create EditDisplay Contents
Print Others
63
Tạo Tệp tin mới
See Text EditorsSection 03
See the C shellSection 06
64
Tạo Tệp tin với lệnh Cat
Example:Example:mp% cat > myfileThis is line 1 of inputLine 2 of input^dmp%mp% cat myfileThis is line 1 of inputLine 2 of input
65
Tạo một file rỗng với lệnh Touch• touch [OPTION]… FILE…
Tạo một file rỗng, kích thước 0 nếu file chưa tồn tại.
Nếu không, cập nhật thời gian truy cập file.
Example: % touch abc.txt
• touch –a [filename]
66
• touch –a [filename]
Chỉ thay đổi thời gian truy nhập file
• touch –m [filename]
Chỉ thay đổi thời gian sửa file
Tạo một File với lệnh Echo• echo “string” > filename
Tạo tệp filename với nội dung như trong “string”
Ví dụ: % echo ’hello world’ > abc2.txt
Kiểm tra:
67
Kiểm tra:
% ls
% cat abc2.txt
Chỉnh sửa Tệp tin văn bản
Editing TextFiles
nano geditvi awk
68
Hiển thị nội dung Tệp tin văn bản
Display TextFile contents
cat more less head tail
69
Dùng Lệnh Cat hiển thị nội dung Tệp tin
70
Hiển thị nội dung Tệp tin văn bản• Lệnh cat có thể được sử dụng để hiển thị /
nối một hoặc nhiều tệp, hiển thị đầu ra cùng một lúc.
Ví dụ: Hiển thị nội dung của tệp tin văn bản có tên là “assign1.txt”.tên là “assign1.txt”.
% cat assign1.txt
71
Hiển thị nội dung Tệp tin văn bản• Các lệnh có tên “more" và “less" có thể được
sử dụng để hiển thị nội dung của một hoặc nhiều tệp tin (hiển thị theo trang)
Ấn Space bar – hiển thị trang tiếp theob – quay lại trang trướcEnter Key – xem dòng tiếp theo
Ví dụ: Hiển thị nội dung tệp tin “assign1.txt” theo từng trang một lần.
%more assign1.txt
72
Hiển thị nội dung Tệp tin văn bản
• Lệnh có tên “head" có thể được sử dụng để hiển thị phần đầu của (các) tệp tin được chỉ định; kích thước đoạn mặc định để xem là 10 dòng.
Ví dụ: Hiển thị 20 dòng đầu tiên của tệp có tênlà “assign1.txt”.
% head –20 assign1.txt
73
Hiển thị nội dung Tệp tin văn bản• Lệnh có tên "đuôi" có thể được sử dụng để
hiển thị phần kết thúc của (các) tệp được chỉ định; kích thước đoạn mặc định để xem là 10 dòng.
Ví dụ: Hiển thị 10 dòng cuối cùng của tệp có tên Ví dụ: Hiển thị 10 dòng cuối cùng của tệp có tên là “assign1.txt”.
% tail assign1.txt% tail –10 assign1.txt
74
Bài tập 4
• Tạo tệp mới bằng nano. Hãy nhập vào tệphơn 30 dòng văn bản
• Sử dụng cat để hiển thị nội dung của tệp
• Sử dụng head để hiển thị 7 dòng đầu tiên
• sử dụng tail để hiển thị 7 dòng cuối cùng.
75
Các lệnh khác với Tệp tin văn bản
Other FileOperations
Combinecontents
Extractcontents
Comparecontents
Filesize
Compresscontents
sort
Uniquelines Encrypt/
decrypt
76
Grep : Tìm dòng trong Tệp tin
$grep [-options] expreg [tệp] Tìm kiếm trong các tập tin các dòng có chứa xâu kí tự
đáp ứng các điều kiện nhất định. Các điều kiện được biểu diễn trong một biểu thức chính quy.
options (lựa chọn):options (lựa chọn): -c : đếm số dòng thỏa mãn điều kiện -I : chỉ ra tệp chứa mẫu thỏa mãn điều kiện. -i : không phân biệt chữ hoa chữ thường. -n : trả về số dòng
77
Grep: biểu thức mô tả xâu tìm kiếm Các kí tự sau được dùng trong biểu thức:. dùng để thay thế mọi kí tự
* lặp lại kí tự trước. Ví dụ: ba* bao gồm: ba, baa, baaa
^ bắt đầu một dòng. Ví dụ: ^Hom
$ kết thúc một dòng. Ví dụ: Hom$
[...] danh sách hoặc dãy các ký tự. Ví dụ [a,b,c] thay thếcho a hoặc b hoặc c
[^..] danh sách hoặc dãy các ký tự loại trừ [^c, d]
Chú ý: Biểu thức phải nằm giữa dấu “”
78
Ví dụ
$grep “^t" /etc/passwd Tìm trong /etc/passwd tất cả các dòng bắt đầu bằng
“t”
$grep [^t] /etc/passwd$grep [^t] /etc/passwdTìm tất cả các dòng không bắt đầu bằng “t”
$grep “tuananh" /etc/passwd Tìm tất cả các dòng có chứa "tuananh“
$grep “tuananh$" /etc/passwd Tìm tất cả các dòng có chữ "tuananh“ ở cuối dòng.
79
Lệnh cut
80
Các trường trên một dòng
81
cut : Trích xuất các trường từ Tệp tin$cut -options [tệp] options (lựa chọn) -c<vị trí kí tự> trích xuất theo vị trí kí tự. -f<số của trường> trích xuất theo trường -f<số của trường> trích xuất theo trường -d<kí tự phân đoạn>
Ví dụ $cut -c5 file #Trích ra kí tự thứ 5 ở tất cả các dòng
$cut -c5-10 file #Trích ra kí tự thứ 5 đến thứ 10
$cut -d: -f1 /etc/passwd #hiển thị tất cả người dung trong hệ thống
82
sort: sắp xếp nội dung một tệp tin
$sort -options file_name Đảo các dòng trong tệp để các dòng được sắp xếp theo
một thứ tự nào đó được đặc tả trong options. option
-b: bỏ qua tất cả các dấu cách ở đầu tất cả các trường -b: bỏ qua tất cả các dấu cách ở đầu tất cả các trường -d : sắp xếp theo thứ tự từ điển (ký tự, chữ số) -r : đảo ngược thứ tự -f : không phân biệt chữ hoa chữ thường. -t x : phần tử chia tách là kí tự x -n sắp xếp theo thứ tự số -k x: chỉ định trường được sử dụng làm khóa sắp xếp.
83
Ví dụ
carnet.txtmaurice:29:0298334432:Crozon marcel:13:0466342233:Marseille robert:75:0144234452:Paris yvonne:92:0133444335:Palaiseauyvonne:92:0133444335:Palaiseau
$cut –d: -f1 carnet.txt
Trích lấy trường tên đầu tiên.
$sort -n -t : -k2 carnet.txtSắp xếp theo trường 2.
84
Lệnh wc
85
Bài tập 5
• Tạo tệp có tên dulieu.txt theo cấu trúc sau:Name* Phone Number* StudentIDFile content as follows:
-- begin file --Tran Viet Anh* 0912345678* 20090158Giang Tuan Anh* 0912345679* 20090077Giang Tuan Anh* 0912345679* 20090077Bui Hung Cuong* 0112345678* 20090388Nguyen Huy Duc* 0112445678* 20090798Vu Binh Duong* 0914445678* 20090621Pham Đinh Le Hao* 38223344* 20090991-- end file –
86
Bài tập 5 (tiếp)
• Tạo lệnh để trích xuất tất cả các tên trong tệp
• Tạo lệnh để trích xuất tất cả tên và số điện thoại tương ứng trong tệp
• Tạo lệnh để sắp xếp nội dung tệp theo tên theo thứ tự từ điểnthứ tự từ điển
• Tạo lệnh để trích xuất dòng có chứa một học sinh tên là X
87
Cảm ơn!
88