Chuong 2 - He Thong Tap Tin
-
Upload
trieu-doan -
Category
Documents
-
view
17 -
download
3
Transcript of Chuong 2 - He Thong Tap Tin
CHƯƠNG II : HỆ THỐNG TẬP TIN
1
I. Tổ chức hệ thống tập tin. II. Các lệnh và chương trình III. Các lệnh cơ bản làm việc với thư mục IV. Các lệnh cơ bản làm việc với tệp bình thường V. Cách sinh tên tệp VI. Quản trị luồng dữ liệu VII. Các bộ lọc riêng VIII. Giới thiệu một số tiện ích quản lý HTTT IX. Soạn thảo văn bản X. Lệnh truyền thông
NỘI DUNG
2
1. Các kiểu tệp 2. Tổ chức các tập tin 3. Đặt tên tập tin 4. So sánh với DOS và Windows
I. Tổ chức hệ thống tập tin.
3
Hệ thống UNIX có 3 kiểu tệp cần phân biệt:
a- Tệp bình thường
là tệp văn bản hoặc tệp lệnh shell hoặc tệp dữ liệu thuần tuý
b- Các tệp thư mục
là một tệp chứa các thông tin về những tệp có quan hệ trực tiếp với thư mục đó.
Các thư mục thông thường trong hệ thống UNIX:
1. Các kiểu tệp
4
/: Thư mục gốc /bin: chứa hầu hết các lệnh của người dùng linux /boot: chứa các tệp khởi động /dev: chứa các chương trình điều khiển thiết bị /etc: chứa các tệp cấu hình hệ thống /lib: chứa các tệp thư viện nhị phân được chia xẻ bởi nhiều ƯD /sbin: chứa các tệp nhị phân hệ thống được sử dụng bởi root /home: thư mục chủ của user. Mỗi user có một thư mục chủ nằm trong thư mục này với tên chính là tên của user /proc: là hệ thống tệp ảo (chứa trong bộ nhớ chứ không chứa trên đĩa). Chúng đại diện các ctrình và quá trình đang hoạt động. /tmp: chứa các tệp tạm thời được tạo ra khi các ứng dụng hđ /usr: chứa các thư mục con trong đó chứa các chương trình và thông tin cấu hình quan trọng sử dụng trong hệ thống. /var: chứa cácthư mục con và tệp có kích thước thường xuyên đổi.
1. Các kiểu tệp
5
c- Các tệp đặc biệtÐó là những tệp có quan hệ trực tiếp với các thiết bị ngoại vi. - Lệnh file: cho biết kiểu của một tệp là gì. - Ví dụ: - Nếu "prog.c" là tên một tệp mà ta xây dựng trước kia và chứa mã nguồn trong ngôn ngữ C: file prog.c prog.c: ASCII C program text- Nếu tệp khả thi "a.out" sinh ra từ quá trình biên dịch bằng cc: file a.out linked executable- Nếu vd.sh là một tệp script chứa các lệnh của shellfile vd.shvd.sh: POSIX shell script text executable
1. Các kiểu tệp
6
2. Tổ chức các tập tin
7
- không phân biệt là kiểu tệp gì- phải tuân theo các quy ước chung như sau:
◦ là một chuỗi các ký tự khả hiện của ASCII.◦ Phân biệt chữ hoa, thường.◦ Ký tự đầu tiên phải khác những ký tự: + – =(tránh dùng các ký tự đặc biệt)
Tên tệp UNIX System V dài tối đa 14 ký tự Tên tệp UNIX BSD dài tối đa 255 ký tự.
3. Đặt tên tập tin
8
Giống: Lưu trữ dữ liệu theo cấu trúc thư mục cây Sử dụng dòng lệnh hoặc dùng chuột X-Window = WindowsKhác biệt Linux phân biệt chữ hoa chữ thường Linux thường “im lặng” Dấu phân cách và đường dẫn thư mục Đường dẫn tìm kiếm
4. So sánh với DOS và Windows
9
mỗi ổ đĩa sẽ được gắn kết (mount) vào trong cây thư mục (Tree Directory) giống như là một thư mục bình thường:◦hda1: / (Root) ◦hda2: /home ◦hdb1: /home/user/music ◦ổ đĩa mềm: /mnt/floppy ◦ổ CD-ROM: /mnt/cdrom
ổ đĩa
11
1. Khái niệm 2. Cú pháp tổng quát của một lệnh 3. Các đường dẫn đến các tệp lệnh 4. Thời gian thực hiện lệnh
II. Các lệnh và chương trình
12
Lệnh: - một tệp nhị phân khả thi hoặc
- một tệp văn bản viết theo cú pháp của shell. Lệnh ngoại trú là một tệp khả thi có thể tìm ra vị trí bằng lệnh find. Shell phải tạo ra một tiến trình con để xử lý nó. Lệnh nội trú (shell buil-in) không tồn tại như một tệp độc lập.
Nó nằm sẵn ngay trong shell và coi như từ khoá của shell, không cần phải tạo ra một tiến trình con để xử lý nó. lệnh type: type xxx
- lệnh ngoại trú thì kết qủa hiện thị sẽ là đường dẫn tuyệt đối của nó
[root@stb225 ~]# type mkdirmkdir is /bin/mkdir- lệnh nội trú thì kết qủa là: xxx is shell buil-in[root@stb225 ~]# type cdcd is a shell builtin
1. Khái niệm:
13
Cú pháp dòng lệnh: command [option] argument Command: Lệnh- một lệnh được viết dưới dạng đơn giản nhất bao gồm một tên lệnh viết theo sau dấu nhắc Shell option: tuỳ chọn, thường bắt đầu bằng - hoặc --.
Có thể có nhiều tuỳ chọn, giữa chúng phải có khoảng trống argument: tham số lệnh. Có thể viết trước option
- Được gõ vào từ dấu nhắc Shell: Ví dụ: $ cd- Phân biệt chữ hoa chữ thường. - Help khi dùng lệnh: sử dụng tham số --help (ví dụ: $cp -help) hoặc sử dụng lệnh man <tên tệp> (ví dụ: $man cp).
- Dòng lệnh sau khi nhập vào sẽ được Shell diễn dịch và sau đó sẽ thi hành theo đúng ý nghĩa của lệnh.
2. Cú pháp tổng quát của một lệnh
14
Lệnh echo $PATH: cho biết các path được thiết lập trước# echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin...
Đường dẫn tuyệt đối: độc lập với thư mục hiện thời của người dùng và bắt đầu với /
Đường dẫn tương đối: phụ thuộc vào thư mục hiện thời của người dùng và không bắt đầu với /
3. Các đường dẫn đến các tệp lệnh
15
Lệnh time cho ta biết được thời gian thực hiện một lệnh
hoặc thời gian thực hiện một chương trình, đo bằng giây
$ time find / -name tệp -print > result
55.6 real 1.5 user 18.3 sys
- real: là tổng thời gian thực tế, từ lúc bấm
<RETURN> đến lúc dấu nhắc shell trở lại
- user: là thời gian chỉ dùng để thực hiện lệnh
- sys là thời gian mà lõi UNIX sử dụng để quản trị
lệnh này
real >= user + sys
4. Thời gian thực hiện lệnh
16
1. Di chuyển giữa các thư mục: cd (change directory) 2. Hiện thị thư mục hiện thời: pwd (print working directory) 3. Xem nội dung thư mục, danh sách file: ls (list) 4. Tạo thư mục: mkdir (make directory) 5. Xóa thư mục: rmdir (remove directory)
III. Các lệnh cơ bản làm việc với thư mục
17
cd [path]
Để về thư mục home khi ta đang ở bấy kỳ đâu:
cd or cd ~
Về thư mục home của user: cd ~user
Về thư mục mẹ: cd..
pwd – print working directory
Ex: pwd
1. cd – change; 2. pwd
18
ls [option] [file]
[option]:
-l: Xem chi tiết
-a: Xem tất cả (kể cả các tệp ẩn)
-F: Thêm thông tin mô tả vào sau tên
-R: Xem trong các thư mục conMàu sắc
Các kiểu file thông thường
3. ls - list
19
s: socket
p: ống dẫn (pipe)
l: liên kết mềm
d: thư mục
b: file thiết bị khối
c: file thiết bị ký tự
executable files greenarchive files (.gz,.zip,etc,) redtext files blackjpgs,bmp files magentasymbolic links cyandirectories blue
mkdir [option] Directoryoption: -m, --mode=Mod: thiết lập quyền truy cập Mod, như trong
lệnh chmod nhưng không cho quyền rwxrwxrwx-p, --parents: tạo các thư mục theo nhiều cấp.--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.directory: Tên đặc tả và vị trí của nó trong hệ thống (vị trí
mặc định là thư mục hiện thời).Ví dụ: mkdir -p /a/b/c/d ->
mkdir a b c d ->
4. mkdir – make directory
20
rmdir [option] directoryoption:--ignore-fail-on-non-empty: bỏ qua các lỗi nếu xóa thư
mục không rỗng.-p, --parants: xoá thư mục và cả thư mục cha (các thư
mục trên path)--verbose: đưa ra thông báo sau khi xóa 1thư mục.--help: hiện thị trang trợ giúp và thoát.Ví dụ:rmdir –p /a/b/c/drmdir a1 a2 a3 a4
5. rmdir – remove directory
21
Cho một biến có chứa 1 string dạng đường dẫn đến 1 thư mục D hoặc 1 file X,
lệnh basename sẽ trả về đúng tên thư mục D hoặc tên file X,
lệnh dirname trả về phàn đường dẫn đến thư mục mẹ của D hoặc X.
Ví dụ:◦$ basename /home/test/workspace/foo.txt -> foo.txt ◦$ dirname /home/test/workspace/foo.txt ->
/home/test/workspace ◦$ basename /home/test/workspace workspace ◦$ dirname /home/test/workspace /home/test
Lệnh basename và dirname
22
1. Tạo file với lệnh: touch, cat
2. Sao chép, đổi tên: cp
3. Di chuyển, đổi tên: mv
4. Tạo kết nối cho tệp: ln(link)
5. Xóa bỏ tên tệp: rm(remove)
6. Liệt kê: ls
7. So sánh tên tệp: cmp (compare), comm, diff , diff3
8. Tìm kiếm file: find
9. Các lệnh biên tập tệp: cat, head, tail, pg, more
10. Hiện thị tệp văn bản/ nhị phân: od [tùy chọn]
11. Đếm số dòng, từ, ký tự: wc
12. Kích cỡ tệp: sum
13. Nén và giải nén tệp: pack và gzip
14. Chia nhỏ tệp: Split
15. Cut
16. Sort
17. awk
III. Các lệnh cơ bản làm việc với tệp bình thường
23
Touch: tạo file mới, cập nhật thời gian truy cập và sửa đổi lần cuối.
Cú pháp: touch <file> cat : 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 ...), hay để xem nội dung của một file.
Cú pháp:cat > [option] <file> + option:
- n đánh số thứ tự dòng, “>” để tạo file
Kết thúc soạn thảo: gõ Enter và ^D hay gõ ^D 2 lần. Cách này là không cho phép sửa lỗi, phải xóa đến vị trí của
lỗi và gõ lại nội dung vừa bị xóa
1. touch, cat – create file
24
cp [option] source destination+ source, destination: tên thư mục/ tệp nguồn, đích
cp file1 file2… thư mục: sao chép nhiều file vào thư mục+ Option:-a, --archive: giống như -dpR (tổ hợp ba tham số -d, -p, -R)-b, --backup[=CONTROL] : tạo file lưu cho mỗi file đích nếu như nó đang tồn tại.-d, --no-dereference : duy trì các liên kết.-f, --force : ghi đè file-dest đang tồn tại không nhắc nhở.-i, --interactive : có thông báo trước khi ghi đè.-l, --link : chỉ tạo liên kết giữa file-dest từ file-scr không sao chép.-p, --preserve : duy trì các thuộc tính của file-scr sang file-dest.
2. cp – copy, rename file /directory
25
-r : sao chép toàn bộ-R : sao chép toàn bộ thư mục-s, --symbolic-link : tạo liên kết tượng trưng thay cho việc sao chép
các file.-S, --suffix=<hậu-tố> : bỏ qua các hậu tố thông thường (hoặc được
chỉ ra).-u, --update :sao chép khi file-src mới hơn file-dest hoặc khi file-
dest chưa có.-v, --verbose : đưa ra thông báo về quá trình sao chép.--help : hiển thị trang trợ giúp và thoát.Ví dụ:cp file1 tmp/file2 -> copy, rename filecp –R dir1 tmp/dir2 -> copy, rename directory>>
2. cp – copy, rename file /directory
26
mv [option] old_name new_nameHay mv [option] <src> <dest> + option-i: nhắc trước khi move/rename tập tin,thư mục đã có -f: ghi đè khi move/rename thư mục đích đã có rồi.Ví dụ:mv tmp1/dir1 tmp2/dir2 -> move, renamemv tmp1/file* tmp2/ -> move files
3. mv – move, rename file/ directory
27
ln tệpgốc tệplk4. ln – link
28
Liên kết mềm Liên kết cứng
Khác chỉ số inode Cùng chỉ số inode
- Khi xoa file gốc -> file liên kết ko còn hiệu lực. - - Khi tạo lại file gốc -> lk được khôi phục
Khi xoa file gốc/ liên kết -> file còn lại không ảnh hưởng
Dùng option -sCó ký hiệu l
Không dùng -sKhông có,
Khi thay đổi file gốc hoặc file liên kết thì file còn lại sẽ thay đổi
rm [option] file1 file2 file3 -i: yêu cầu ta phải khẳng định việc xoá -d : xóa thư mục
-r : xóa tất cả file và thư mục-f : xóa không hỏi lại
5. rm – rmove file/directory
29
ls [option] <file/dir>+ option:- a: liệt kê tất cả các file, kể cả file ẩn-l: thông tin đầy đủ nhất về file và thư mục-s: chi ra kích thước file, tính theo khối (1 khối = 1024byte)-f: xác định kiểu file (/= thư mục, *= chương trình kả thi)-m: liệt kê các file được ngăn cách nhau bởi dấu “,”-c: liệt kê cột, 2 thư mục gần nhau vào 1 cột-x: liệt kê cột, 2 dir gần nhau trên 2 dòng đầu của 2 cột gần nhau-t: liệt kê, sắp xếp theo thứ tự thời gian sửa đổi gần nhất-r: sắp xếp danh sách 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ác thư mục+ <file/dir>: không có thì sẽ hiện thị thư mục hiện hànhCó thể sử dụng mô tả nhóm: *,?, [ ] để xác định nhóm cần liệt kê
6. ls - list
30
cmp [option] file1 file2cho kết qủa ở vị trí mà 2 tệp bắt đầu khácVí dụ: cmp –l file1 file2-> vị trí các kí tự khác, giá trị thập phân của từng cặp ký tự khác nhau
cmp –s file1 file2 -> ko hiển thị dù các tệp có giống hay không
7.1. cmp – compare 2 file
31
Ví dụ về lệnh cmp
cmp file1 file2
file1 file2 differ: char 11, line 2 cmp -l file1 file2
11 102 130
12 102 131
13 102 132
7.1. cmp – compare 2 file
32
AAAAAA
BBBYYZ
CMCCC
AAAAAA
BBBXYZ CCCCCC
AAAAAABBBBBBCCCCCC
file3 file2 file1
so sánh tệp có sắp xếp tăng dầncomm file1 file2:comm – file1 -> thay 1 trong 2 tệp bằng những gì gõ ở bàn
phím comm –1 file1 file2-> sẽ xoá bỏ việc soạn thảo từ cột 1 (2,3)
7.2. comm – compare 2 file sorted
33
Ví dụ về lệnh comm comm file1 file2
- Cột 1: chỉ có trong tệp1 mà không có trong tệp2
- Cột 2: chỉ có trong tệp2 mà không có trong tệp1
- Cột 3: có trong cả tệp1 và tệp2 comm - file1 comm -1 file1 file2 comm -12 file2 comm -123 file2
7.2. comm – compare 2 file sorted
34
AAAAAA
BBBXYZ
CMCCC
AAAAAA
BBBXYZ CCCCCC
AAAAAABBBBBBCCCCCC
file3 file2 file1
chỉ ra sự khác nhau giữa các tệpdiff file1 file22c2< BBBBBB---BBBXYZ
7.3. diff – difference 2 file
35
- 2c2 nghĩa là cần thay dòng 2 của tệp này bằng dòng 2 của tệp kia để cho 2 tệp giống hệt nhau- Sau đấy hiện lên 2 dòng đã nói để soạn thảo lại chúng.
chỉ ra sự khác nhau giữa 3 tệpdiff3 file1 file2 file3===1:2,3cBBBBBBCCCCCC2:2,3cBBBXYZCCCCCC3:2,3cBBBXYZCMCCCC
7.4. diff3 – difference 3 file
36
Lưu ý:
- Các ký tự = = = ở dòng đầu có nghĩa là 3 tệp khác nhau
- Giả sử đó là = = 2 thì chỉ có tệp2 khác các tệp kia v.v..
find: tìm một hay nhiều file trong thư mục find –name filename/dirname –printEx: find /pra -name vd > /pra/kq find –inum number –printTìm theo tên i-node find –user username –printTìm theo tên người sử dụng
8. find – find file
37
1. Biên tập đơn giảncathead tail …2. Biên tập màn hìnhpgmore
9. Các lệnh biên tập tệp
38
Tạo và hiển thị nội dung một tệpcat [option] <filename>Option:
-A :show all, giống như -vET-b : hiển thị thêm số thứ tự trên mỗi dòng (bỏ dòng trống)-e : Giống –vE; -E: Hiển thị dấu ‘$’ tại cuối mỗi dòng-n : Hiển thị số thứ tự của mỗi dòng (kể cả dòng trống)-s : Bỏ bớt dòng trống liên tiếp chỉ còn 1 dòng-t : Giống như –vT-T : hiển thị dấu TAB dưới dạng ^I-v : Hiển thị các ký tự không in ra được, trừ LFD và TAB-help : Hiển thị trang trợ giúp và thoát
9.1. cat
39
Hiển thị n dòng đầu tiên của một filehead [option] <filename> …Option:
-c: Hiển thị cỡ ký tự đầu tiên trong nội dung file -n: Hiển thị n dòng thay cho 10 dòng ngầm định-q: không đưa ra tên file ở dòng đầu-v: Luôn đưa ra tên file ở dòng đầu-help: Hiển thị trang trợ giúp và thoát
9.2. head
40
Hiển thị n dòng cuối của một file
tail [option] <filename> …
Option:
--retry: Cố gắng mở một file khó truy nhập khi bắt đầu thực hiện
lệnh tail
-c, --byte=n: hiển thị n (số) ký tự sau cùng
-f, --follow[=(name|descriptor)]: Sau khi thực hiện nội dung file sẽ
hiện thong tin về file: -f, --follow và –follow=descriptor là như
nhau
-n: Hiển thị n dòng cuối cùng của file thay cho 10 dòng ngầm định
9.3. tail
41
--max-unchanged-stats=n: hiển thị tài liệu về file (ngầm định n=5)
--max-consecutive-size-change=n: Hiển thị tài liệu vể file (ngầm định
n=200)
--pid: kết hợp dùng –f, chấm dứt sau khi quá trình có chỉ số =PID lỗi
-q: không đưa ra tên file ở dòng đầu trong nội dung hiển thị
-s, sleep-interval=k: kết hợp dùng –f, dừng k giây giữa các hoạt động
-v: luôn hiển thị tên của file
--help: Hiển thị trang trợ giúp và thoát
9.3. tail
42
Xem nội dung với các file lớn theo từng trang màn hình Cú pháp: more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] Option:
-num: Xác định số dòng nội dung của file được hiển thị
-d: Hiển thị thêm cách sử dụng lệnh more thay cho tiếng
chuông báo sai một phím
-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
^L sẽ có thêm một dòng trống
9.4. more
43
-p : Không cuộn màn hình, thay vào đó là xoá 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 đó là xoá màn hình và hiển thị nội dung bắt đầu từ đỉnh màn hình-u : Bỏ qua dấu gạch chân+/partern : chỉ ra một chuỗi sẽ được tìm kiếm trước khi hiển thị mỗi file+linenum : Bắt đầu hiển thị dòng thứ linenum-s : Xoá bớt các dòng trống liền nhau trong nội dung của file chỉ giữ lại một dòng
9.4. more
44
Các phím tắt trong lệnh more-Space: Hiển thị màn hình tiếp theo-N: Hiển thị N dòng tiếp theo-Enter: Hiển thị dòng tiếp theo-H: Hiển thị danh sách các phím tắt-D hoặc Ctrl+D: Cuộn màn hình (mặc định là 11 dòng)-Q hoặc Ctrl+Q: Thoát khỏi lệnh more-S: Bỏ qua n dòng (mặc định là 1)-F: Bỏ qua k màn hình tiếp theo (mặc định là 1)-B hoặc Ctrl+B: Trở lại k màn hình trước (mặc định là 1)
=: Hiển thị số dòng hiện thời :n: Xem k file tiếp theo :p: Trở lại k file trước V: Chạy chương trình soạn thảo vi tại dòng hiện thời
:f: Hiển thị tên file hiện thời và số dòng .: Lặp lại lệnh trước
9.4. more
45
Lệnh od (octal dump) dùng để hiển thị một tệp dưới nhiều dạng khác nhau theo tuỳ chọn.
a. Hiện thị tệp văn bản
Tuỳ chọn –c: sẽ hiển thị một tệp văn bản dưới dạng ASCII
Tuỳ chọn –b: hiển thị ở dạng bát phân và có thể đọc dạng nhị phân
b. Hiện thị tệp nhị phân
Tuỳ chọn –d: hiển thị mỗi từ máy (machine word) của một tệp nhị phân dưới dạng thập phân.
Tuỳ chọn –o: hiển thị mỗi từ máy của một tệp nhị phân dưới dạng bát phân.
Tuỳ chọn –x: hiển thị mỗi từ máy của một tệp nhị phân dưới dạng thập lục phân (hexadecimal).
Các tuỳ chọn –D –O –X: hiển thị mỗi từ máy dài (machine long word) của một tệp nhị phân dưới dạng thập phân, bát phân và 16
10. Hiển thị tệp = các dạng khác nhau
46
Đếm số dòng, từ, ký tựwc file- Đếm và hiển thị số dòng, số từ và số ký tự (kể cả ký tự điều khiển) của một tệp, - Nếu chỉ đếm một thứ thì dùng tuỳ chọn -l, -w, hoặc -c: wc tệp -lw wc file1 file2 filen
11. wc – count line, word, char
47
sum filetính checksum của một tệp và kích cỡ tính bằng số block của nó: sum file1- Kích cỡ của một blockTrong tệp stdio.h ta có thể đọc cạnh hằng số BUFSIZ kích cỡ của một block là bao nhiêu byte, ví dụ: #define BUFSIZ 1024c
12. sum – size file
48
Lệnh gzip: nén file
gzip [tùy-chọn] [tên-tập-tin]
Vi dụ: nén file1 thành file1.gz: gzip file1
- Nếu nén thất bại, sẽ báo:
no saving - file unchanged- Nén tệp nhị phân thường ít khi bị báo lỗi
gzip a.out
Tệp nén này không khả thi, nếu ta cho chạy nó: a.out.gz
Lệnh sẽ gửi thông báo: a.out.gz: Exec định dạng error Lệnh gunzip: giải nén
gunzip [tùy-chọn] [tên-tập-tin]
gunzip file1.gz
13.1. gzip/gunzip – compress/uncomp
49
Lệnh tar
Lệnh này dùng để gom và bung những tập tin/thư mục. Nó sẽ
tạo ra một tập tin có phần mở rộng .tar
Cú pháp: tar [tùy-chọn] [file-đích] [file-nguồn/dir-nguồn..]
Trong đó:
–cvf : gom tập tin/ thư mục
–xvf : bung tập tin / thư mục
file-đích: tập tin .tar sẽ được tạo ra.
file-nguồn/dir-nguồn: những file và thư mục cần gom.
Ví dụ:
tar –cvf backup.tar /etc/passwd /etc/group
tar –xvf backup.tar
13.2. tar
50
Chia nhỏ tệpLệnh split chia tệp_to thành các tệp_bé_aa, tệp_bé_ab ... tệp_bé_zz, mỗi tệp không vượt quá n dòng, ví dụ n=5000: split –5000 tệp_to tệp_bé_- Nếu không đặt tên tệp_bé_ trước thì các tên mặc định sẽ là xaa, xab, ... xzz: split –5000 tệp_to- Nếu không đặt n rõ ràng thì giá trị mặc định sẽ là 1000: split tệp
14. split
51
Sắp xếp các dòng trong file◦sort [option] file◦-n: Sắp xếp số◦-c: Sắp xếp chữ
15. sort
52
Ví dụ:An nam 165Mai nu 158Minh nam 170Minh nu 162Thanh nam 169
awk xem các cột như các trường và được đặt tên $1, $2…
Câu lệnh thường dùng trong Awk là lệnh in ra màn hình (print).
awk ‘{print $2}’ <sourcefile>
16. awk
53
Tiện ích cut có thể lấy ra một vùng các ký tự hoặc các
trường từ mỗi dòng của văn bản. Cú pháp: cut option range1, range2 Option:◦ -c: được dùng để xử lý ký tự (lấy theo ký tự)
Ví dụ: cut –c 5-10 file.txt (
◦ -d: Xác định dấu phân cách hiện tại giữa các trường trên 1
dòng (“ “, “;”, “:”)
◦ -f <fieldnum>: xác định trường (thư tự) xuất ra
◦ --output-delimiter=<gt>: gán kí tự phân cách giữa các trường
◦Ví dụ: cut –d” “ -f 1,3 --output-delimiter=“ “ /etc/passwd
17. cut
54
1. Nguyên lý sinh tệp
ví dụ: rm tệp1 tệp2 tệp3 có thể viết dưới dạng sau: rm tệp?
2. Các siêu kí tự: là những ký tự sau: ' ? * [ ] – ! ("!" trong Bourne).
a- Siêu ký tự dấu hỏi "?“: thay cho bất kỳ ký tự nào khác,
ví dụ: rm fi?e
b- Siêu ký tự dấu sao "*“: sẽ sinh ra 0, 1 hoặc nhiều ký tự bất kỳ
ví dụ lệnh: cat tệp*
c- Cặp siêu ký tự dấu "[" và "]“: 1 ký tự bất kỳ sẽ được chọn trong dấu [ ]
Ví dụ: rm sa[cnN]h
Từ các ký tự cnN, 1 ký tự bất kỳ sẽ được chọn,
tức là: rm sach sanh saNh
V. Cách sinh tên tệp
55
2. Các siêu kí tự:a.b.c.d- Siêu ký tự dấu "-“: Từ ký tự đầu đến ký tự sau trong cặp dấu ngoặc vuôngví dụ: cat fi[b–m]htương đương với: cat fibh fich filhe Siêu ký tự dấu "!" : chỉ có nghĩa với Bourne shell - Phải lấy một ký tự khác những ký tự trong cặp dấu ngoặc vuông sau nó.ví dụ: rm fi[!fgtk]htương đương với: rm fiAh fich fioh
V. Cách sinh tên tệp
56
3. Liên kết các siêu kí tựCó thể liên kết các siêu ký tự trong cùng 1 biểu thức dòng lệnhví dụ: Hiện lên màn hình những tệp có tên như mtệp.p00, ntệp.x12, ytệp.doc, v.v. thì dùng: cat ?tệp.[M–Z]*Hoặc xoá mọi tệp có tên kiểu như #tên_tệp# và tên_tệp~ thì gõ: rm [#] * [#] *[~]4. Trung hòa các siêu kí tựTrung hoà nghĩa là làm cho shell không phải hiểu các ý nghĩa đặc biệt nói trên của các siêu ký tự nữa,dùng \ và ‘ ‘.a- Bằng ký tự dấu chéo ngượcVí dụ có thể tạo ra một tệp có tên "tệp*": cat > tệp\*Ta có thể xoá nó: rm tệp\*b- Bằng ký tự dấu nháy đơn2 ví dụ trên tương đương với: cat > ‘tệp*’ rm ‘tệp*’
V. Cách sinh tên tệp
57
1. Các vào/ra chuẩn của UNIX 2. Các luồng dữ liệu của shell 3. Chỉnh hướng các luồng dữ liệu 4. Các ống nối
VI. Quản trị luồng dữ liệu
58
Có 3 kênh vào/ra chuẩn ở terminal (/dev/tty) đó là:Kênh Số Tên Thiết bịNhập chuẩn 0 stdin Bàn phím /dev/ttyXuất chuẩn 1 stdout Màn hình /dev/ttyLỗi chuẩn 2 stderr Màn hình /dev/tty
1. Các vào/ra chuẩn của UNIX
59
- Xuất chuẩn
Ví dụ đưa luồng dữ liệu ra màn hình ngày giờ hiện nay: $ date
- Nhập chuẩn
Ví dụ lệnh tee nhập luồng dữ liệu từ bàn phím và đồng thời đưa ra màn hình: tee
Luồng dữ liệu vào từ bàn phím sẽ kết thúc bằng ^D
VD các tệp sẽ có cùng nội dung từ một luồng dữ liệu gõ vào:
tee tệp1 tệp2 tệp3 tệpn
- Bộ lọc dữ liệu
Một lệnh vừa vào lại vừa ra dữ liệu được gọi là bộ lọc (filter)
Lệnh cat hiển thị tệp1 ra màn hình và là một bộ lọc: cat tệp1
2. Các luồng dữ liệu của shell
60
- Lỗi chuẩn
Shell khi cần thiết sẽ phải thông báo lỗi và hiển thị nó lên màn hình, nếu tệp không tồn tại:
cat kiki
kiki: No such file or directory
2. Các luồng dữ liệu của shell
61
a- Chỉnh hướng ra tệp mới
Sử dụng siêu ký tự ">" để tạo ra một tệp mới
VD: ls >t tệp1
Nếu tệp1 đã có sẵn thì nó sẽ bị mất nội dung cũ.
C shell cho phép lập một biến để bảo vệ việc chỉnh hướng
set noclobber
Ví dụ tạo ra một tệp mới, có cùng nội dung như prog.c :
cat prog.c > tệp_2
lệnh sau cũng tương đương như trên: cp prog.c tệp_2
Lệnh sau sao a.out vào một tệp đĩa result:
a.out > result
3. Chỉnh hướng các luồng dữ liệu
62
b- Chỉnh hướng ra tệp cũ
- Dùng " >>" để ghi ra một tệp mới hoặc nếu nó đã có sẵn thì ghi tiếp vào cuối tệp cũ,
ví dụ: cat tệp_2 >> tệp_1
- Có thể chỉnh hướng ra bất kỳ một thiết bị ngoại vi nào vì nó cũng là một tệp,
ví dụ ra máy in: ls > /dev/lp
- Có thể chỉnh hướng ra /dev/null để huỷ dữ liệu (null):
- wc tệp > /dev/null
Ví dụ không hiển thị các dòng chữ do lệnh tee gửi ra màn hình:
tee tệp1 tệp2 tệp3 > /dev/null
3. Chỉnh hướng các luồng dữ liệu
63
c- Chỉnh hướng vào từ tệp
Ta gõ "< " để nhập dữ liệu từ tệp thay vì từ bàn phím,
ví dụ: tee < tệp1
Ba ví dụ sau tương đương và đều che các dòng chữ gửi ra màn hình:
tee < tệp1 > tệp2
tee > tệp2 < tệp1
cat tệp1 > tệp2
Hai ví dụ sau cũng tương đương:
cat tệp
cat < tệp
3. Chỉnh hướng các luồng dữ liệu
64
d- Chỉnh hướng vào với kết thúc tệp
Ta gõ "<< " và một từ bất kỳ từ bàn phím,
ví dụ: cat << END
Hai ví dụ sau tương đương:
cat < /dev/tty > tệp2
cat > tệp2
e- Chỉnh hướng thông báo lỗi
+Trong Bourne shell:
- Ta gõ " 2> " để tạo ra một tệp mới hoặc ghi thông báo lỗi lên một tệp cũ cùng tên: rm tệp 2> tệp_error
- Ta gõ " 2>> " để tạo ra một tệp mới hoặc ghi thông báo lỗi vào cuối một tệp cũ cùng tên: cat tệp_ strange 2>> tệp_old
- < và << tức là 0< và 0<<, còn > và >> tức là 1> và 1>>
3. Chỉnh hướng các luồng dữ liệu
65
+Trong C shell:
- không có ký hiệu riêng để chỉnh hướng báo lỗi, chỉ có >& và >>& để chỉnh hướng nó cùng với luồng dữ liệu thông thường,
ví dụ: rm tệp_strange >& tệp_error
- Nếu muốn tách thông báo lỗi ra khỏi luồng dữ liệu thông thường ta phải dùng các ( ),
ví dụ: (cat tệp_strange > tệp_data) >& tệp_error
- Nếu "tệp1" tồn tại thì "tệp_data" sẽ nhận nội dung của nó, nếu "tệp1" không tồn tại thì "tệp_data" sẽ nhận thông báo lỗi về lý do đó:
(cat tệp >> tệp_ data) >>& tệp_error
3. Chỉnh hướng các luồng dữ liệu
66
- là kỹ thuật shell dùng để nối các luồng dữ liệu của một số tiến trình- Ta có thể liên lạc nhiều tiến trình với nhau bằng các pipe, ví dụ:
command_1 | command_2 | command_3
Trong đó:
command_1 phải có đầu ra,
command_2 là bộ lọc và
command_3 phải có đầu vào.
PIPE: mỗi pipe nối hai luồng dữ liệu của 2 lệnh liền kề qua một ống trung gian, thể hiện bằng bộ nhớ đệm BUFER.
Hoạt động: command_i ==> BUFER ==> command_j
Vd: cut –d “ “ –f 1 vb | sort
4. Các ống nối (pipe)
67
4. Các ống nối (pipe)
68
1. Lệnh tr2. Lệnh fgrep3. Lệnh grep4. Lệnh egrep
VII. Các bộ lọc riêng
69
a- Lệnh tr tổng quátLệnh tr nhập dữ liệu vào từ bàn phím (sau <RETURN> và trước ^D) và thay đổi các dữ liệu ở chuỗi_1 thành các ký tự ở chuỗi_2, xuất ra màn hình: tr chuỗi_1 chuỗi_2Ví dụ: tr abcd xyztGõ tiếp: la cravatte => thì sẽ nhận được dòng chữ sau: lx zrxvxtteb- Biểu thức trong lệnh trMỗi chuỗi ký tự "chuỗi_1" và "chuỗi_2" sẽ được thể hiện bằng:- chuỗi ký tự ASCII, nếu có ký tự đặc biệt thì phải cho vào cặp ‘’ ví dụ: tr ‘$% ^&’ uiol- một khoảng ký tự hiển thị dùng: kí_tự_đầu-kí_tự_cuốii-q ([i-q] cho UNIX System V)Ví dụ: tr ‘a–z’ ‘A–Z’ < tệp > tệp_hoa-> chuyển tệp chứ thường thành hoa
1. Lệnh tr
70
1. Lệnh tr
71
c- Các tuỳ chọn của lệnh tr
-d: Xoá những dữ liệu gõ vào mà giống các ký tự ở chuỗi_1
Khi dùng tuỳ chọn -d: chuỗi_2 không can thiệp gì
VD: sao tệp1 vào tệp2 xóa hết dấu phảy thì:
tr -d ‘,’ > tệp2 < tệp1
-s: Nếu trong dữ liệu ra có 1 chuỗi ký tự giống nhau và tương ứng với 1 ký tự của chuỗi_2 thì chúng sẽ bị gộp làm 1
tr -s abcd 12345
dddddddabcd -> 41234
d- Nếu hai chuỗi không dài bằng nhau
Nếu "chuỗi_1" và "chuỗi_2" không dài bằng nhau thì những ký tự thừa ra sẽ không tham dự vào việc chuyển dịch.
GREP (Global regular expression print) là lệnh tìm kiếm các dòng có chứa một chuỗi hoặc từ khóa trong filea- Dạng tổng quát của grepgrep [option] PATTERN FILE "chuỗi" PATTERN phải là loại biểu thức hợp quy (regular expression)Vd:grep chuỗi tệp_input > tệp_outputgrep '^abcd' tep >tep_outb- Biểu thức chinh qui (RE) của grepRE là một chuỗi ký tự bao gồm cả các ký tự đặc biệt và được xử lý theo cách riêng của lệnh grep.Lưu ý: lệnh tự xử lý các ký tự đặc biệt trong RE chứ không nhờ shell như trong trường hợp có các siêu ký tự.
2. Lệnh grep
72
c- Các ký tự đặc biệt đối với grep
Các ký tự đặc biệt đối với grep có nghĩa khác các siêu ký tự:◦ ^c: in những dòng bắt đầu “c”
grep ‘^Begin’ vd: những dòng có chuỗi “Begin" ở đầu dòng.◦ c$: in những dòng kết thúc bằng “c”
grep ‘End$’ vd: những dòng kết thúc bằng chuỗi “End"◦ \<c: in các dòng chứa các từ bắt đầu bằng chuỗi “c”
grep ‘\<Be’ vd: các dòng chứa các từ bắt đầu “Be” trong vd◦ c\>: in các dòng có chứa từ có kết thúc bằng chuỗi “c”
grep ‘\<nd’ vd: in dòng có các từ kết thúc là “nd” trong file vd◦ *: thể hiện một chuỗi n ký tự (n >=0 giống ký tự đi trước *):
grep ‘ I*T’ tệp => hiển thị những dòng chứa các chuỗi ký tự toàn I đến T.
2. Lệnh grep
73
.: dấu chấm thể hiện một ký tự ASCII bất kỳ, trừ <RETURN>:
grep ‘ .*’ tệp => hiển thị mọi dòng của "tệp", kể cả dòng trống.
[ ]: thể hiện một ký tự ASCII trong cặp ngoặc vuông, nhưng cần đặt giữa cặp dấu nháy như: [^xyzt]
-: dấu trừ giữa hai ký tự ASCII bên trong cặp ngoặc vuông,
ví dụ [b-y], thể hiện một ký tự có trong khoảng đó, nhưng cũng cần đặt giữa cặp dấu nháy như '[b-y]'.
\: dấu chéo ngược sẽ bỏ ý nghĩa đặc biệt của ký tự đi sau nó và trả lại ý nghĩa gốc.
^: ngoại trừ
Ex: một biểu thức như [^xyzt] thể hiện một ký tự không phải là x, y, z, t .
2. Lệnh grep
74
- Bài tập
Hãy thử những thí dụ dùng lệnh grep như sau:
grep ‘ ^L..N’ file1
grep ‘ [X–Z] ‘file1
grep ‘ ^ [ ^eom ] . \ . c . *te’ file1 > output
grep ‘ [ A – Za – z ] [ A – Za – z ] *’ file1
grep grep ‘ ^ [ ^ : ] * : [ ^ : ] * : ‘ /tc/passwd
grep ‘ ^ [ ^ : ] * : : ‘ /etc/passwd
2. Lệnh grep - vd
75
egrep and fgrep are available.
◦ Egrep is the same as grep -E.
◦ Fgrep is the same as grep -F.
a- Dạng thứ nhất của fgrep
Hiển thị mọi dòng của tệp có tên "tệp" nếu chúng chứa "chuỗi":
fgrep chuỗi tệp1
b- Dạng thứ hai của fgrep
Có thể có trong đối số la: 0, 1 hoặc nhiều tệp:
fgrep chuỗi tệp1 tệp2 tệp3
c- Dạng thứ ba của fgrep
Chỉnh hướng ra đến một tệp: fgrep chuỗi tệp > tệp_output
3. Lệnh fgrep
76
d- Về "chuỗi" trong lệnh fgrep
"Chuỗi" chứa ký tự đặc biệt thì cả "chuỗi" phải được đặt trong một cặp dấu nháy đơn hoặc kép:
fgrep ‘^rsT$’ tệp > tệp_output
e- Các tuỳ chọn của fgrep
-n: các dòng kết quả sẽ được đánh số theo tệp gốc:
fgrep –n 'abcd' tệp > tệp_output
-v: là những dòng không chứa "chuỗi": fgrep –v 'abcd' tệp
-i: không phân biệt chữ hoa với chữ thường
-c: chỉ hiển thị số lượng dòng kết quả
-f "chuỗi" được đặt trong một tệp: fgrep –f tệp_chain tệp_data
Ví dụ:
who | fgrep lan_anh -> tìm xem lan_anh có đang làm việc không
ls | fgrep a* -> hiện thị các file bắt đầu a
3. Lệnh fgrep
77
a- Dạng tổng quát của egrepDạng tổng quát của egrep cũng giống như của các lệnh fgrep và grep: egrep chuỗi tệp > tệp_outputb- Biểu thức regular của egrepBiểu thức regular của egrep cũng giống như của grep với một chút bổ sung:+: dấu cộng thể hiện một chuỗi n ký tự (n là nguyên dương) giống y ký tự đi trước nó.?: dấu hỏi thể hiện 0 hoặc 1 lần xuất hiện của ký tự trước đó.a | b: a hoặc b sẽ được chấp nhận để tìm kiếm.c- Các tuỳ chọn của egrepCác tuỳ chọn của egrep cũng giống như của fgrep, kể cả -f vốn không được grep chấp nhận.
4. Lệnh egrep
78
- Bài tập egrep ‘ [A–Za–z ] +’ file1 egrep ‘ C | Peterbourg’ file1
4. Lệnh egrep
79
1. Lệnh write dùng để trao đổi giữa những user đang cùng làm việc trong hệ thống. Trước hết, cần liên hệ với người dùng khác, dùng lệnh who: $who hiện thông tin như sau: user1 tty17 Oct 15 10:20 user2 tty43 Oct 15 8:25 user4 tty52 Oct 15 12:20 Sau đó, chuyển thông báo: $write <tên user> [<tên trạm cuối>] Vd: cần user1 gửi thông báo đến người dùng có tên user2:
$write user2 tty43 (write root pts/1)• "user2 is not logged in“: Nếu user2 hiện không làm việc• “Message from user1 on tty17 at <giờ, phút>”: Nếu user2 đang làm việc
VIII. Lệnh truyền thông
80
Người gửi gõ thông báo của mình theo quy tắc: - Kết thúc một dòng bằng cụm -o, - Kết thúc dòng cuối (hết thông báo) bằng cụm -oo. - Để kết thúc kết nối với user2, user1 gõ ctrl-d. - Để từ chối mọi việc nhận thông báo từ người khác,
sử dụng lệnh không nhận thông báo: $mesg n (n - no) - Một người khác gửi thông báo đến người này sẽ
nhận được việc truy nhập không cho phép permission denied.
- Để tiếp tục cho phép người khác gửi thông báo đến, sử dụng lệnh:
$mesg y (y - yes)
VIII. Lệnh truyền thông
81
2. Lệnh mail - cho phép gửi, nhận thư điện tử giữa các người dùng, hoạt động theo chế độ off-line (gián tiếp).- hệ thống tạo ra cho mỗi người dùng một hộp thư riêng. - Cho phép sử dụng trên mạng internet (địa chỉ mail thường dưới dạng tên-login@máy.mạng.lĩnh-vực.quốc-gia)- Tại thời điểm login hệ thống, người dùng có thể thấy được có thư mới khi xuất hiện dòng thông báo "you have mail". - Lệnh mail gồm 2 chức năng: gửi thư và quản lý thư. Tương ứng, có hai chế độ làm việc với lệnh mail:
* mode lệnh (command mode) quản trị thư* mode soạn (compose mode) cho phép tạo thư
VIII. Lệnh truyền thông
82
a/ Mode soạn làm việc trực tiếp với một thư và gửi ngay cho người khác, có tham số: $mail <tên_người_nhận> Ví dụ, $mail user2 => cho phép soạn và gửi thư cho người nhận có tên được chỉ. Sau đó nhập nội dung thư. Để kết thúc soạn thư, hãy gõ ctrl-dChú ý: Gửi thư đã soạn trong nội dung một file nào đó (dùng dấu "<" chỉ dẫn thiết bị vào chuẩn là nội dung file thay vì cho bàn phím): $mail tên_người_nhận < tên_file_nội_dung_thư Ví dụ, $ mail user2 < thu1 Nội dung thư từ File thu1 được gửi cho người nhận user2.
VIII. Lệnh truyền thông
83
b/ Mode lệnh - để quản lý hộp thư, không tham số: $mail Sau đó, sử dụng các lệnh của mail quản lý hệ thống thư của mình. - Cần trợ giúp gõ dấu chấm hỏi (màn hình có hai dấu ??): ? =>in ra dạng sau: <số> Hiện thư số <số> (dấu cách) Hiện thư ngay phía trước + Hiện thư ngay tiếp theo l cmd thực hiện lệnh cmd dq xóa thư hiện thời và ra khỏi mail m user gửi thư hiện thời cho người dùng s tên-file ghi thư hiện thời vào file có tênr [tên-file] trả lời thư hiện thời (có thể từ file) d <số> xóa thư số u khôi phục thư hiện thời u <số> khôi phục thư số m <user> ... chuyển tiếp thư tới các người dùng khác q ra khỏi mail
VIII. Lệnh truyền thông
84
3. Lệnh talk
Trong Linux cho phép sử dụng lệnh talk thay thế cho lệnh write.
VIII. Lệnh truyền thông
85
VIII. Giới thiệu một số tiện ích quản lý HTTT 1. Midnight Conmander (MC) 2. Konqueror 3. Krusader IX. Soạn thảo văn bản 4. Soạn thảo văn bản với lệnh vi (visual
interpreter, video interactif) 5. OpenOffice 6. Text Editor: giống như notepad của MSoffice
Tự đọc:
86