Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
0,98 MB
Nội dung
ĐẠI HỌC THĂNG LONG BỘ MÔN TIN HỌC THỰC HÀNH LINUX (TÀI LIỆU THAM KHẢO) Biên soạn Lê Thị Thuý Nga Trần Minh Tuấn Hà nội, tháng 10 năm 2005 Lời nói đầu Tài liệu biên soạn nhằm phục vụ cho môn học Hệ điều hành Unix (Phần thực hành) Đại học Thăng Long Nội dung tài liệu đề cập tới khái niệm Linux, Shell đặc biệt nhấn mạnh vào khía cạnh thực hành Bourne Again Shell-BASH Những nội dung trình bày bao gồm: lệnh thao tác shell, lập trình shell, filter số tiện ích khác gawk, vi, emacs Để nắm tốt nội dung tài liệu, học viên cần có kiến thức môn học Nhập môn Khoa học máy tính Tài liệu tham khảo: Richard Petersen, Linux: The Complete Reference, McGraw-Hill, 1996 http://www.linux.org http://www.computerhope.com/unix/overview.htm Trang MỤC LỤC Giới thiệu Linux Shell 1.1 Hệ điều hành, Unix Linux .5 1.2 Shell .6 Thao tác Shell 2.1 Chuẩn bị .7 2.1.1 Đăng nhập 2.1.2 Câu lệnh .7 2.2 Các câu lệnh với file/thư mục 2.2.1 Tạo/Xóa thư mục: Lệnh mkdir/rmdir 10 2.2.2 Hiển thị nội dung thư mục: Lệnh ls 10 2.2.3 Chuyển thư mục: Lệnh cd 11 2.2.4 Sao chép file: Lệnh cp 11 2.2.5 Di chuyển file: Lệnh mv .12 2.2.6 Xoá file: Lệnh rm .12 2.2.7 Liệt kê file: ls .12 2.2.8 Hiển thị nội dung file: Lệnh cat more 13 2.2.9 In file: Lệnh lpr, lpq lprm 13 2.3 Điều hướng (Redirection) 14 2.3.1 Điều hướng dòng chuẩn STDOUT: > >> 14 2.3.2 Điều hướng dòng vào chuẩn STDIN : < 15 2.3.3 Điều hướng dòng lỗi chuẩn STDERR: 2>, >& 16 2.4 Tuyến dẫn (Pipes) 17 2.4.1 Tuyến dẫn điều hướng: Lệnh tee 18 2.5 Các ký tự đặc biệt 19 2.5.1 Ký tự đại diện cho dãy ký tự: * 19 2.5.2 Ký tự đại diện cho ký tự: ? 19 2.5.3 Ký tự đại diện cho tập ký tự: [ ] 20 2.6 Cấu trúc file .20 2.6.1 Tên file .20 2.6.2 Các kiểu file .21 2.6.3 Phân loại file: Lệnh file .21 2.6.4 Duyệt hiển thị nội dung file: Lệnh od 22 2.6.5 Các thư mục hệ thống 22 2.7 Đặt quyền file/thư mục .22 2.7.1 Đặt quyền ký hiệu quyền 23 2.7.2 Đặt quyền tuyệt đối mã nhị phân 23 2.7.3 Quyền thư mục 24 2.7.4 Thay đổi quyền sở hữu file 24 2.8 Tạo liên kết 25 2.8.1 Liên kết cứng (Hard Link) 26 2.8.2 Liên kết biểu tượng (Symbolic Link) 26 2.9 Một số lệnh khác 27 2.9.1 Tìm kiếm file: Lệnh find .27 2.9.2 Ghép nối thiết bị vào thư mục: Lệnh mount umount 28 Trang 2.9.3 Lưu trữ nén file: Lệnh tar gzip 29 2.10 Điều khiển tiến trình 30 2.10.1 Background, Foreground: &, bg, fg 31 2.10.2 Huỷ bỏ công vụ: Lệnh kill 32 2.10.3 Ngắt công vụ: CTRL-Z 32 2.10.4 Hẹn thực hiện: at .32 Lập trình shell 33 3.1 Biến shell 33 3.1.1 Tạo sử dụng biến: =, $, set, unset 33 3.1.2 Các dấu bao xâu 34 3.1.3 Biến môi trường 35 3.2 Một số câu lệnh lập trình thơng dụng 36 3.2.1 Nhập xuất: Lệnh read echo 37 3.2.2 Tính tốn số học: Lệnh let 37 3.2.3 So sánh kiểm tra: Lệnh test 37 3.3 Kịch shell (Shell Script) 38 3.3.1 Tạo thực thi script 38 3.3.2 Một số chương trình ví dụ 39 3.3.3 Biến đối số 39 3.3.4 Các cấu trúc điều khiển .40 3.3.5 Export biến .44 3.4 Hàm 44 3.5 Các script khởi tạo hệ thống 46 3.5.1 File khởi tạo dăng nhập: bash_profile 47 3.5.2 File khởi tạo BASH: bashrc 47 3.5.3 File khởi tạo dăng xuất: bash_logout .47 Lọc (Filters) 47 4.1 Lọc file .48 4.1.1 Xuất file với cat, tee, head tail .48 4.1.2 Các filter khác: wc, spell, sort 49 4.1.3 Tìm kiếm file: grep, fgrep, egrep 50 4.1.4 Biểu thức quy (regular expression) 51 4.2 Lọc soạn thảo: sed .54 4.3 Lọc liệu .56 4.3.1 Sắp xếp liệu: sort 56 4.3.2 Cắt trường liệu: cut 57 4.3.3 Loại bỏ trùng lặp liệu: uniq 57 4.3.4 Nối hai file liệu : join 57 Một số tiện ích khác .58 5.1 gawk 58 5.1.1 gawk dạng đơn giản 58 5.1.2 gawk dạng mở rộng 60 5.1.3 Các cấu trúc điều khiển .61 5.2 vi 62 5.3 emacs 63 Phụ lục: Bảng tóm tắt lệnh thông dụng Linux .64 Trang Giới thiệu Linux Shell 1.1 Hệ điều hành, Unix Linux Hệ điều hành thành phần quan trọng hệ thống máy tính Nhờ mà người dùng sử dụng máy tính cách đơn giản Về chất, hệ điều hành phần mềm hệ thống có vai trị quản lý tất phần cứng phần mềm máy tính Nó xử lý trực tiếp phần cứng nhớ, CPU, bàn phím, ổ đĩa phân phối tài ngun máy tính cho chương trình ứng dụng Tất chương trình ứng dụng soạn thảo văn bản, trò chơi, nghe nhạc thực thi thông qua hệ điều hành Cho đến có nhiều hệ điều hành tạo MS-DOS, MS-Windows, Unix, Mac OS loại có đặc tính khác Hệ điều hành Unix đời vào năm 1969 phổ biến từ đầu năm 1970, tác giả Ken Thompson Dennis Ritchie AT&T Bell Labs Dựa phiên Unix này, nhà nghiên cứu Đại học California, Berkeley thêm vào nhiều đặc tính cho đời phiên Unix BSD vào năm 1975 Nhiều tổ chức khác phát triển phiên Unix riêng Xenix, System V, UnixWare, AUX Linux đời từ dự án sinh viên Linus Torvald Đại học Helsinki Mục đích Linus tạo phiên Unix hiệu cho máy PC Được kết hợp từ lõi (kernel) Linus chương trình hỗ trợ nhóm GNU, phiên Linux 0.11 xuất vào năm 1991 Sau Linux phổ biến rộng rãi Internet sau nhiều năm, nhiều lập trình viên giới cải tiến thêm vào tính cho hệ thống Linux có tất tiện ích Internet ftp, telnet bao gồm đầy đủ tiện ích phát triển phần mềm trình biên dịch C++, trình gỡ rối Với đặc tính kể trên, hệ thống Linux đảm bảo nhỏ gọn, nhanh ổn định Ở dạng đơn giản chạy cách hiệu nhớ có MB Mặc dù phát triển môi trường mở tự do, Linux tuân theo chuẩn Unix, đặc biệt chuẩn POSIX Giống Unix, hệ điều hành Linux chia thành thành phần là: lõi (kernel), vỏ (shell), cấu trúc file (file structure) tiện ích (utilities) Lõi tập hợp chương trình tảng, thực thi chương trình khác quản lý thiết bị phần cứng ổ đĩa, máy in Vỏ thành phần giao diện với người sử dụng, nhận lệnh từ người Trang sử dụng gửi lệnh tới lõi để thực thi Cấu trúc file có vai trị tổ chức lưu trữ file thiết bị lưu trữ Trong Linux, file tổ chức nằm thư mục, thư mục lại chứa thư mục file khác Tất ba thành phần kết hợp để tạo thành cấu trúc hệ điều hành Dựa bạn thi hành chương trình, quản lý file tương tác với hệ thống Thêm vào đó, Linux cịn có phần mềm tiện ích (được coi đặc tính chuẩn hệ thống), chương trình đặc biệt trình soạn thảo, chương trình dịch, chương trình truyền tin 1.2 Shell Shell cung cấp giao diện lõi người sử dụng Nó nhận lệnh từ người sử dụng, phân tích lệnh gửi lệnh tới lõi để thực thi Giao diện shell đơn giản, thường có dấu nhắc mà bạn nhập lệnh vào Giao diện gọi giao diện dòng lệnh (command line interface) Ngoài Linux cung cấp giao diện đồ họa (GUI) X-Windows có cửa sổ bạn lệnh cách chọn vào nút bấm, biểu tượng hay thực đơn cửa sổ thay phải gõ lệnh Mặc dù kiểu giao diện cửa sổ tiện lợi dễ dùng song coi mặt trước (front) shell Bộ quản lý cửa sổ gửi lệnh mà nhận thành phần đồ họa tới shell, shell phân tích lại gửi cho lõi để thi hành Command Line Interface Graphical User Interface Trên thực tế, shell khơng có chức nhận thơng dịch lệnh, cịn cung cấp mơi trường để bạn cấu hình hệ thống lập trình Shell có ngơn ngữ lập trình riêng nó, cho phép bạn viết chương trình để thực công việc phức tạp Ngôn ngữ có nhiều đặc tính ngơn ngữ lập trình thơng thường cấu trúc lặp hay rẽ nhánh Qua nhiều năm, có nhiều loại shell phát triển Tuy nhiên có ba shell là: Bourne, Korn C-shell Bourne shell phát triển Bell Labs dành cho hệ thống System V C-shell phát triển cho phiên BSD Unix Korn shell Trang phiên nâng cấp từ Bourne shell Các phiên Unix tích hợp ba loại shell phép bạn lựa chọn sử dụng Tuy nhiên, Linux thường có phiên cơng cộng nâng cấp shell này, là: Bourne Again shell (BASH), TC-shell (TCSH) Public Domain Korn shell (PDKSH) Trong BASH shell kết hợp nhiều đặc tính nâng cao từ loại shell khác Khi bạn khởi động Linux, bạn đặt BASH shell, nhiên sau bạn chuyển sang shell khác muốn Thao tác Shell 2.1 Chuẩn bị 2.1.1 Đăng nhập Linux hệ điều hành đa người dùng người dùng Linux thể tài khoản đăng nhập (login account) Tài khoản gồm có tên người dùng (user name) mật (password) Như bạn cần cấp tài khoản để đăng nhập vào Linux, tài khoản thường tạo người quản trị hệ thống (administrator) Khi đăng nhập, bạn gõ vào tên người dùng, sau mật Chú ý mật không bạn gõ để bảo đảm bí mật cho mật Ví dụ: login: nga password: 2.1.2 Câu lệnh Sau đăng nhập thành công vào Linux, bạn thấy dấu nhắc shell (shell prompt) đánh dấu vị trí bắt đầu dịng lệnh Mỗi shell có dấu nhắc riêng BASH dấu nhắc kí tự $ Từ dấu nhắc, bạn gõ lệnh để shell thực thi Câu lệnh mà bạn gõ tính từ sau dấu nhắc shell Ví dụ: Gõ lệnh date để xem ngày tháng $ date Fri Sep 23 10:30:21 PST 2005 Cấu trúc câu lệnh gồm tên lệnh (command name), tùy chọn (options) đối số (arguments): $ tên_lệnh tùy_chọn đối_số Chú ý: Các thành phần phải cách khoảng trắng Ví dụ 1: Lệnh chuyển thư mục $ cd mydir Ví dụ 2: Lệnh hiển thị nội dung thư mục $ ls temp tranhanh vanban Ví dụ 3: Lệnh xóa tồn thư mục temp Trang $ rm –r temp Sau gõ lệnh yêu cầu thực thi (bấm Enter), shell kiểm tra xem lệnh có tồn hợp lệ khơng, hợp lệ câu lệnh thực hiện, khơng shell thơng báo lỗi Tùy chọn đối số Tuỳ chọn mã bao gồm nhiều ký tự xuất sau dấu (-), thể kiểu thao tác mà lệnh thực Đối số nhiều từ đứng sau tùy chọn, cho biết câu lệnh thực đối tượng Mỗi lệnh có tùy chọn đối số khác Để tra cứu chi tiết lệnh tùy chọn đối số nó, ta dùng lệnh man Ví dụ: Tra cứu lệnh ls $ man ls Để khỏi chế độ tra cứu, bạn bấm phím q Đặc điểm dòng lệnh Về thực chất, dòng lệnh vùng văn mà bạn soạn thảo Trước gõ ENTER để thực thi lệnh, bạn sửa chữa cách dùng phím mũi tên ←, → để di chuyển phím Delete, Backspace để xóa, sửa Đặc biệt, shell có khả lưu trữ danh sách lệnh gõ nên bạn dùng phím ↑ để lại câu lệnh thực trước đó, ↓ để câu lệnh sau Có thể đặt nhiều câu lệnh dịng lệnh, nhiên câu lệnh phải có dấu chấm phảy (;) Ta gõ câu lệnh nhiều dòng khác song xuống dịng cuối dịng phải có dấu gạch chéo (\) Khả hoàn chỉnh lệnh hay tên file Trên dòng lệnh, bạn nhập tên lệnh tên file chưa đầy đủ bạn ấn phím TAB shell tự điền nốt phần tên lại Nếu có nhiều khả để điền, shell liệt kê tất tên có chứa dãy ký tự mà bạn nhập vào Có thể nhập vào phần tên file sau bấm hai phím ESC ? hệ thống liệt kê tên có phần đầu giống với phần kí tự mà bạn nhập Ví dụ: Giả sử có file document $ cat doc (gõ phím TAB) $ cat document (shell tự điền nốt phần lại) Lịch sử lệnh BASH lưu trữ số lượng lớn câu lệnh thực gần Các lệnh đánh số từ tới tối đa 500 Để hiển thị danh sách lệnh đó, ta dùng lệnh history Nếu muốn dùng lại lệnh danh sách, bạn gõ số hiệu lệnh sau dấu ! Ví dụ: $ !25 Trang Nếu nhập dấu ! không kèm theo số hiệu lệnh lệnh cuối thực Đặt bí danh cho câu lệnh: alias Đơi lệnh dài khó nhớ lại cần dùng thường xuyên, trường hợp bạn đặt bí danh cho lệnh thơng qua lệnh alias Lệnh alias không làm thay đổi tên lệnh mà đặt tên khác cho lệnh Có thể dùng alias để đặt bí danh cho lệnh có kèm tùy chọn câu lệnh Ví dụ: $ alias list=ls $ list mydata today $ ls mydata today Để xem tất bí danh lệnh có, bạn gõ lệnh alias khơng có đối số 2.2 Các câu lệnh với file/thư mục Cây thư mục File đơn vị lưu trữ liệu thiết bị lưu trữ Trong cấu trúc file Linux, file đặt thư mục, thư mục lại nằm thư mục Tất thư mục tạo thành thư mục, thư mục bắt nguồn từ thư mục gốc / (thư mục gốc) bin sv72 thuchanh home sv73 data tmp usr nga baitap Đường dẫn Đường dẫn (path) dãy kí tự để xác định vị trí tập tin thư mục Có loại đường dẫn đường dẫn tương đối đường dẫn tuyệt đối Đường dẫn tuyệt đối xác định vị trí tính từ thư mục gốc cịn đường dẫn tương đối xác định vị trí tính từ thư mục thời (thư mục mà bạn đó) Khi đăng nhập vào hệ thống Linux, bạn mặc định đặt thư mục có tên tên tài khoản truy nhập bạn (thư mục đăng nhập) nằm thư mục /home Để biết đường dẫn tới thư mục thời, ta dùng lệnh pwd Ví dụ: Trang $ pwd /home/nga Chú ý: - Khi muốn thao tác file thư mục đó, bạn cần phải biết đầy đủ đường dẫn tới Nếu khơng rõ đường dẫn, hệ thống hiểu đường dẫn thư mục làm việc thời - Với đường dẫn tới thư mục, bạn thêm ký tự / vào cuối, ví dụ: /home/sv72/thuchanh/ tương đương với /home/sv72/thuchanh Trong tài liệu ta chọn cách viết để nhấn mạnh thư mục Các ký hiệu thư mục Thư mục gốc: / (dấu gạch chéo) Thư mục thời: (dấu chấm) Thư mục cha thư mục thời: (dấu chấm chấm) Thư mục đăng nhập: ~ (dấu ngã) Những thao tác mà hầu hết shell cung cấp thao tác quản lý file/thư mục Chúng ta xem xét chi tiết lệnh để thực cơng việc 2.2.1 Tạo/Xóa thư mục: Lệnh mkdir/rmdir Lệnh mkdir dùng để tạo thư mục, đối số tên thư mục cần tạo Ví dụ 1: Tạo thư mục thuchanh thư mục sv72 thư mục home nằm thư mục gốc $ mkdir /home/sv72/thuchanh/ Ví dụ 2: Tạo thư mục week1 thư mục đăng nhập $ mkdir ~/week1/ Ví dụ 3: Tạo thư mục script thư mục thời $ mkdir script/ Lệnh rmdir dùng để xóa thư mục rỗng, cách dùng giống mkdir 2.2.2 Hiển thị nội dung thư mục: Lệnh ls Lệnh ls dùng để hiển thị file thư mục thư mục Để có phân biệt file thư mục, ta dùng tùy chọn F, file kiểu thư mục có thêm dấu / sau tên Ví dụ 1: Liệt kê nội dung thư mục thời $ ls aaa backup mydata zyx Ví dụ 2: $ ls –F aaa Trang 10 backup/ mydata zyx/ Mẫu nhập dòng lệnh hay đọc từ file Nếu mẫu đưa vào từ dịng lệnh mẫu phải nằm dịng Ví dụ: $ fgrep “Vezy \ > Hello” datafile Hello how are you Vezy good Vezy fine Nếu mẫu lấy từ file mẫu nằm dịng file Và ta cần thêm tuỳ chọn –f tiếp sau tên file chứa mẫu Ví dụ: $ cat > filetk Vezy Hello ^D $ fgrep –f filetk datafile Hello how are you Vezy good Vezy fine Lệnh egrep Lệnh egrep kết hợp khả grep fgrep Nó tìm kiếm nhiều mẫu, với mẫu biểu thức quy Ngồi egrep cịn cho phép sử dụng tốn tử logic để thể điều kiện tìm kiếm phức tạp Ta nói đến egrep nội dung 4.1.4 Biểu thức quy (regular expression) Ngồi mẫu tìm kiếm đơn giản, ta tạo mẫu phức tạp chứa ký tự đại diện Những mẫu có chứa ký tự đặc biệt gọi biểu thức quy Biểu thức quy dùng nhiều tiện ích hầu hết cơng cụ lọc grep, egrep, sed awk Các ký tự đặc biệt dùng biểu thức ^, $, *, , [ ] Ký tự biểu thị đầu cuối dòng: ^, $ Ký tự ^ thể bắt đầu dịng, ký tự $ thể cuối dịng Ví dụ: Tìm từ xuất đầu dịng, cuối dịng $ cat myfile how you hello how are you $ grep ^how myfile how you Trang 51 (hello how are you ⇒ không thoả mãn) $ grep you$ myfile hello how are you (how you ⇒ không thoả mãn) Nếu dùng mẫu ^$ kết tìm kiếm ? Ký tự biểu diễn ký tự bất kỳ: Ký tự biểu diễn ký tự mẫu Ví dụ: $ grep h.t filename hat hot hit (heat ⇒ không phù hợp) Ký tự lặp lại: * Ký tự * biểu diễn dãy lặp lại ký tự trước Số lần lặp khơng, nhiều lần Ví dụ: $ grep bo* filename bo boom (zoom ⇒ không phù hợp) Nếu kết hợp ký tự đặc biệt ta tạo mẫu tìm kiếm hiệu quả, chẳng hạn ký tự (.) thay cho ký tự bất kỳ, mẫu tìm (.*) thể tất dịng có file kể dịng trống Nếu muốn in dịng khơng trống (có ký tự đó) mẫu ( *) Tập ký tự miền giá trị: [ ], Thay tìm kiếm mẫu chứa ký tự xác định hay ký tự bất kỳ, ta thể ký tự tập ký tự cho trước nhờ ký tự [] - Cách dùng ký tự giống nói phần Ví dụ 1: $ grep h[ie] myfile hi he (hu ⇒ không phù hợp) (here ⇒ không phù hợp) Ví dụ 2: Trang 52 $ ls –l | grep doc[13AB] doc1 docA (doc2 ⇒ không phù hợp) (docC ⇒ khơng phù hợp) Ví dụ 3: $ ls -l | grep doc[1-6] Chú ý: Trong hai ví dụ cuối, ta lấy đầu lệnh ls làm đầu vào cho lệnh grep khơng phải tìm kiếm file Ký tự loại trừ: ^ Ký tự ^ có nghĩa loại trừ nằm vị trí ký tự tập hợp [ ] Khi cặp [] thể ký tự khơng nằm tập hợp Ví dụ: $ ls –l | grep doc[^13AB] doc9 docC (doc1 ⇒ không phù hợp) (docB ⇒ không phù hợp) Ký tự đặc biệt mở rộng biểu thức quy đầy đủ Ngoài ký tự đặc biệt trên, lệnh egrep awk cịn dùng ký tự đặc biệt mở rộng, |, ( ), + ? Một biểu thức chứa ký tự gọi biểu thức quy đầy đủ Toán tử OR: | Toán tử logic OR để thể mẫu thứ mẫu thứ hai Ví dụ: $ egrep ‘hello|good’ myfile hello how are you vezy good good bye Ký tự nhóm mẫu: ( ) Cặp ký tự giúp bạn nhóm ký tự mẫu để tạo mẫu thích hợp Ví dụ: $ egrep (Hi)* filename (các ký tự ( ) lặp lại) Hire a plane HiHi, so fun $ egrep ‘(very|vezy) happy’ datafile Trang 53 vezy happy very happy Ký tự lặp lại: +, ? Giống *, ký tự + ? cho phép lặp lại ký tự trước Tuy nhiên ký tự + cho phép lặp lại ký tự trước lần, ký tự ? cho phép lặp lại nhiều lần Ví dụ: $ egrep ‘bo+m’ filename bom boom (bm ⇒ không thoả mãn) $ egrep ‘bo?m’ filename bm bom (boom ⇒ không thoả mãn) 4.2 Lọc soạn thảo: sed Lọc soạn thảo thực thao tác sửa chữa đầu vào, thường file văn Nó đọc dòng văn đầu vào sửa chữa chúng, sau hiển thị dịng văn sửa Ở xem xét tiện ích lọc soạn thảo, sed (stream editor) Filter sed thực sửa đổi liệu đầu vào từ file hay từ STDIN Sau tạo phiên liệu sửa chữa, kết gửi STDOUT Chú ý nội dung file đầu vào không thay đổi Cú pháp sed: $ sed option ‘edit-command’ filename Trong filename tên file đầu vào, edit-command lệnh soạn thảo Lệnh đặt dấu nháy đơn để tránh việc thay ký tự đặt biệt Tập lệnh soạn thảo sed giống hệ soạn thảo Ed, gồm có: Xố dịng: d Lệnh d xố số dịng theo u cầu người dùng Ví dụ: Xố dịng thứ datafile $ sed ‘3 d’ datafile Nếu muốn xố dãy dịng liên tiếp cần rõ dòng bắt đầu dòng kết thúc, cách dấu (,) Nếu muốn xố đến dịng cuối file ta dùng ký tự đại diện $ Ví dụ: Xố từ dịng đến hết $ sed ‘3,$ d’ datafile Nếu muốn xố dịng xuất mẫu đó, rõ mẫu Trang 54 Ví dụ: Xố dịng chứa từ Vezy $ sed ‘/Vezy/ d’ datafile Thay văn bản: s Lệnh s thực thay nội dung văn theo mẫu Ví dụ: Thay Vezy Very $ sed ‘s/Vezy/Very/’ datafile Nếu muốn thay dịng đó, bạn rõ số thứ tự dịng cần thay Ví dụ: Thay Vezy Very dòng $ sed ‘3 s/Vezy/Very/’ datafile Chú ý việc thay thực lần dịng Nếu có nhiều từ cần thay xuất dịng có từ thay Để thay tồn từ dịng, ta cần thêm vào ký hiệu g Ví dụ: Thay tất từ Vezy thành Very $ sed ‘s/Vezy/Very/g’ datafile Thêm dòng văn bản: a Lệnh a cho phép thêm dịng văn vào sau dịng đó, muốn thêm nhiều dịng văn ta phải có ký tự xuống dịng (\) Ví dụ: Thêm dịng văn sau dòng $ sed ‘3 a\ Sit down please\ Have good meal’ datafile Chèn dòng văn bản: i Lệnh i thực giống lệnh a, nhiên chèn thêm dịng vào trước dịng Thay dòng văn bản: c Lệnh c cho phép thay dòng dòng khác Có thể thay cho nhiều dịng liên tiếp cách dùng miền giá trị Ví dụ: Thay dòng dòng $ sed ‘3 c\ Get up please’ datafile Tuỳ chọn -f Lệnh sed cung cấp tuỳ chọn –f cho phép nhận lệnh sửa đổi chứa file cho trước Ví dụ: Thực sửa đổi datafile lệnh file suadoi $ cat > suadoi 2d c\ Trang 55 Thang Long University s/fine/glad/g $ sed -f suadoi datafile 4.3 Lọc liệu Bạn lưu trữ liệu file theo nhiều kiểu định dạng khác Tuy nhiên cách lưu trữ phổ biến ghi liệu vào file văn theo khuôn dạng quy ước File liệu văn thường gồm nhiều dòng, dòng thể liệu (bản ghi), liệu có chung tập thuộc tính (trường liệu) phân cách nhau, chẳng hạn TAB dấu (:) Ví dụ: Quy ước định dạng file liệu sau: STT:Họ tên:Tuổi:Địa chỉ:Số ĐT File liệu mydata theo quy ước là: 001:Nguyễn Xuân Tiến:28:La Thành:5113351 002:Trần Minh Tuấn:27:Giảng Võ:5581814 003:Nguyễn Ngọc Minh:28:Hoàng Hoa Thám:8295046 Lọc liệu cho phép xử lý liệu trường, chẳng hạn xếp, cắt, ghép nối liệu… 4.3.1 Sắp xếp liệu: sort Lệnh sort giúp xếp liệu theo trường, nhiều trường Cú pháp sau: $ sort -t:ký_tự_phân_cách_trường tuỳ_chọn tên_file_dữ_liệu Ký tự phân cách trường quy định khác tuỳ theo khuôn dạng liệu, mặc định ký tự trống Các tuỳ chọn lệnh sort sau: -k i,j liệu xếp dãy ký tự kéo dài từ trường i đến hết trường j -n định trường liệu kiểu số -r xếp theo thứ tự ngược lại (giảm dần) -M định trường liệu kiểu tháng (‘JAN’ < ‘FEB’ < ‘DEC’) Chú ý: Khi xếp, sort coi giá trị liệu xâu ký tự phép so sánh thực theo thứ tự từ điển Nếu trường liệu xếp số bạn cần định rõ tuỳ chọn –n, không số coi dãy ký tự bình thường Mặc định sort xếp theo thứ tự tăng dần, muốn ngược lại cần dùng tuỳ chọn –r Để thể xếp theo trường thứ m, bạn cần viết –k m,m Ví dụ: $ sort –t: -k 2,2 mydata Lệnh xếp liệu file mydata theo trường thứ 2, dấu phân cách trường (:) xếp tăng dần Ví dụ: Trang 56 $ sort –t: -k 3,3M babies Lệnh xếp liệu theo trường thứ có kiểu tháng Ví dụ: $ sort –t: -k 1,1 -k 5,5n myfile Lệnh xếp liệu theo trường thứ nhất, gặp hai ghi có giá trị trường giống xếp theo trường thứ năm có kiểu số 4.3.2 Cắt trường liệu: cut Lệnh cut cho phép lấy giá trị số trường từ file liệu Nó có cú pháp sau: $ cut -d:ký_tự_phân_cách_trường tuỳ_chọn tên_file_dữ_liệu Các tuỳ chọn cut là: -f số thứ tự trường lấy -f số1, số2 lấy trường số1 số -f số1-số2 lấy từ trường số1 đến số2 Ví dụ: $ cut -d: -f2,3 dulieu $ cut -d: -f2-5 dulieu 4.3.3 Loại bỏ trùng lặp liệu: uniq Lệnh uniq đọc liệu đầu vào loại bỏ dòng liệu bị lặp lại Lệnh yêu cầu liệu đầu vào phải xếp Ví dụ: $ cut –d : -f1 dulieu | sort | uniq 4.3.4 Nối hai file liệu : join Nếu hai file liệu có chung trường giá trị chúng kết nối với thông qua lệnh join Việc kết nối thực sau: dòng file thứ đối sánh với dòng file thứ hai, cặp dịng có giá trị trường kết nối chúng nối thành dịng, cịn khơng bỏ qua Q trình thực tất cặp dòng xét hết Tuy nhiên để hai file nối với liệu hai file phải xếp theo trường kết nối Cú pháp: $ join –1 x –2 y tên_file1 tên_file2 Ví dụ: $ join –1 –2 client product Lệnh kết nối file client product với trường kết nối trường file thứ trường file thứ hai (Ý nghĩa cho biết khách hàng mua sản phẩm gì) Trang 57 Một số tiện ích khác 5.1 gawk Trước hết ta nói awk: awk tiện ích tạo Alfred Aho, Peter Weinberger Brian Kernighan Tiện ích cho phép xử lý file liệu tạo báo cáo Nó đọc liệu từ file từ STDIN đưa kết STDOUT Chương trình awk sử dụng ngôn ngữ riêng cho phép xử lý liệu theo nhiều cách đa dạng gwak phiên GNU awk dùng Linux Nhìn chung gawk thân thiện awk thường đưa thơng báo lỗi xác chạy chương trình Tiện ích gwak giúp thực công việc sau: Hiển thị nội dung file liệu, toàn phần theo chiều ngang (các ghi) chiều dọc (các trường) Tạo báo cáo từ liệu file Lọc liệu Thực tính tốn giá trị liệu số Thơng thường gawk làm việc với liệu lưu file Đó liệu số ký tự Tại thời điểm gawk làm việc ghi Dữ liệu trường ghi truy nhập thơng qua tốn tử $ số thứ tự trường, ví dụ $1 trường thứ nhất, $2 trường thứ 2… Giá trị $0 có nghĩa dòng ghi 5.1.1 gawk dạng đơn giản Cú pháp gawk: $ gawk tuỳ_chọn ‘pattern { action }’ tên_file_dữ_liệu Để định nghĩa dấu phân cách trường ta dùng tuỳ chọn -F, khơng mặc định dấu phân cách khoảng trống Ta đặt phần pattern-action vào file dùng tuỳ chọn –f để đưa file vào lệnh gawk Ví dụ 1: Cho file liệu product chứa thông tin sản phẩm sau: F001:Noodles:500:2200:VN F002:Milk:50:5600:VN F003:Tea:200:7000:VN C001:Shirt:30:75000:CN C002:Clothes:50:90000:CN E001:Television 14:10:2500000:JP E002:Television 21:5:4500000:JP E003:Computer:5:6500000:VN (Ý nghĩa: Mã hàng:Tên hàng:Số lượng:Đơn giá:Xuất xứ) Lệnh gawk sau hiển thị tất mặt hàng có xuất xứ từ Việt Nam: $ gawk –F: ‘$5=="VN" { print $0 }’ product Lệnh sau hiển thị tên mặt hàng có đơn giá 10000 đồng: Trang 58 $ gawk –F: ‘$4 Lớn && < Nhỏ || OR >= Lớn ! NOT > tên_file Điều hướng từ STDOUT thêm vào file câu_lệnh1 | câu_lệnh2 Lấy kết lệnh làm đầu vào cho lệnh cat Hiển thị nội dung file cd Thay đổi thư mục làm việc chmod Đặt quyền file cp, mv, rm Copy file, di chuyển file, xoá file head, tail Hiển thị phần đầu, phần cuối file mkdir, rmdir Tạo thư mục, xoá thư mục more Xem phần nội dung file pwd Xem đường dẫn tới thư mục tee Ghi liệu vào file đồng thời hiển thị hình chown, chgrp Thay đổi người sở hữu, nhóm người dùng od Hiển thị nội dung file nhị phân theo byte file Xem kiểu file ln Tạo liên kết file find Tìm kiếm file mount, umount Ghép nối, gỡ ghép nối hệ thống file Các lệnh xử lý liệu cmp, comm, diff So sánh nội dung hai file grep, fgrep, egrep Tìm kiếm nội dung file wc Đếm số từ, số dòng số ký tự file sort Sắp xếp liệu theo trường uniq Loại bỏ dòng giống cut Lấy số trường liệu join Nối file có trường kết nối gawk Xử lý liệu file sed Lọc soạn thảo Các lệnh khác clear Trang 64 Xóa hình date Xem ngày tháng echo Hiển thị xâu ký tự hình alias, unalias Đặt bí danh, huỷ bí danh cho lệnh set Thiết đặt thuộc tính đặt biến đối số who, users Liệt kê người truy nhập hệ thống whoami Hiện thị thông tin người truy cập free Hiển thị thông tin sử dụng nhớ du Xem thông tin sử dụng file đĩa cứng df Hiển thị dung lượng trống đĩa tar Lưu trữ file/thư mục gzip, gunzip Nén file giải nén file rpm Cài đặt phần mềm ps, top Liệt kê tiến trình fg, bg Đưa tiến trình lên foreground, background kill Huỷ tiến trình & Tạo tiến trình background let Tính tốn số học test So sánh kiểm tra env Liệt kê biến môi trường lpr, lpq, lprm In, xem thông tin in, huỷ lệnh in apropos Hiển thị tên lệnh dựa từ khố tìm kiếm man Tra cứu chi tiết lệnh info Hiển thị thơng tin hữu ích lệnh export Xuất biến cho subshell history Xem lich sử lệnh mc Vào trình duyệt thư mục logout Đăng xuất exit Thoát khỏi shell shutdown Tắt khởi động lại hệ thống su Đăng nhập quyền root useradd Thêm người sử dụng passwd Đổi mật Muốn biết chi tiết lệnh, gõ: man tên_lệnh Tham khảo thêm lệnh tại: http://www.computerhope.com/unix/overview.htm http://www.ss64.com/bash/index.html Trang 65