TÀI LIỆU ĐÀO TẠO QUẢN TRỊ HỆ THỐNG LINUX Tài liệu biên soạn theo tài liệu giảng dạy Viện Linux (LPI) HÀ NỘI 2006 GIỚI THIỆU GIẤY PHÉP CÔNG CỘNG GNU BẢN DỊCH TIẾNG VIỆT CỦA GIẤY PHÉP CÔNG CỘNG GNU Đây dịch tiếng Việt không thức Giấy phép Công cộng GNU Bản dịch Tổ chức Phần mềm Tự ấn hành, không quy định mặt pháp lý điều khoản cho phần mềm sử dụng giấy phép GNU GPL có tiếng Anh gốc GNU GPL có tính pháp lý Tuy nhiên, hy vọng dịch giúp cho người nói tiếng Việt hiểu rõ GNU GPL GIẤY PHÉP CÔNG CỘNG GNU (GPL) Giấy phép công cộng GNU Phiên 2, tháng 6/1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Mọi người phép chép lưu hành nguyên không phép thay đổi nội dung giấy phép Lời nói đầu Giấy phép sử dụng hầu hết phần mềm đưa nhằm hạn chế bạn tự chia sẻ thay đổi Ngược lại, Giấy phép Công cộng GNU có mục đích đảm bảo cho bạn tự chia sẻ thay đổi phần mềm tự - tức đảm bảo phần mềm tự người sử dụng Giấy phép Công cộng áp dụng cho hầu hết phần mềm Tổ chức Phần mềm Tự cho tất chương trình khác mà tác giả cho phép sử dụng (Đối với số phần mềm khác Tổ chức Phần Mềm Tự do, áp dụng Giấy phép Công cộng Hạn chế GNU thay cho giấy phép công cộng) Bạn áp dụng cho chương trình Khi nói đến phần mềm tự do, nói đến tự sử dụng không quan tâm giá Giấy phép Công cộng thiết kế để đảm bảo bạn hoàn toàn tự cung cấp phần mềm tự (cũng kinh doanh dịch vụ bạn muốn), bạn nhận mã nguồn bạn có yêu cầu, bạn thay đổi phần mềm sử dụng thành phần phần mềm cho chương trình tự mới; bạn biết bạn làm điều Để bảo vệ quyền bạn, cần đưa hạn chế để ngăn chặn chối bỏ quyền bạn, yêu cầu bạn chối bỏ quyền Những hạn chế có nghĩa trách nhiệm định bạn cung cấp phần mềm chỉnh sửa phần mềm Ví dụ, bạn cung cấp chương trình, dù miễn phí hay không, bạn phải cho người nhận tất quyền mà bạn có Bạn phải đảm bảo họ nhận tiếp cận mã nguồn Và bạn phải thông báo điều khoản cho họ để họ biết rõ quyền Chúng bảo vệ quyền bạn với hai bước: (1) bảo vệ quyền phần mềm, (2) cung cấp giấy phép để bạn chép, lưu hành và/hoặc chỉnh sửa phần mềm cách hợp pháp Ngoài ra, để bảo vệ tác để bảo vệ mình, muốn chắn tất người hiểu rõ bảo hành phần mềm tự Nếu phần mềm chỉnh sửa thay đổi người khác sau lưu hành, muốn người sử dụng biết phiên họ có gốc, tất trục trặc người khác gây hoàn toàn không ảnh hưởng tới uy tín tác giả ban đầu Cuối cùng, chương trình tự thường xuyên có nguy bị đe doạ giấy phép quyền Chúng muốn tránh nguy người cung cấp lại chương trình tự có giấy phép quyền cho thân họ, từ trở thành độc quyền chương trình Để ngăn ngừa trường hợp này, nêu rõ giấy phép quyền phải cấp cho tất người sử dụng cách tự hoàn toàn không cấp phép Dưới điều khoản điều kiện rõ ràng việc chép, lưu hành chỉnh sửa Những điều khoản điều kiện việc chép, lưu hành chỉnh sửa Giấy phép áp dụng cho chương trình hay sản phẩm mà người giữ quyền công bố cung cấp khuôn khổ điều khoản Giấy phép Công cộng Từ “Chương trình” có nghĩa tất chương trình hay sản phẩm vậy, “sản phẩm dựa Chương trình” có nghĩa Chương trình sản phẩm bắt nguồn từ chương trình tuân theo luật quyền, nghĩa sản phẩm dựa Chương trình phần nó, nguyên có số chỉnh sửa và/hoặc dịch ngôn ngữ khác (Dưới đây, việc dịch hiểu khái niệm “chỉnh sửa”) Mỗi người cấp phép gọi “bạn” Trong Giấy phép không đề cập tới hoạt động khác việc chép, lưu hành chỉnh sửa; chúng nằm phạm vi giấy phép Hành động chạy chương trình không bị hạn chế, kết từ việc chạy chương trình đề cập tới nội dung tạo thành sản phẩm dựa chương trình (độc lập với việc chạy chương trình) Điều hay không phụ thuộc vào Chương trình Bạn chép lưu hành phiên nguyên mã nguồn Chương trình bạn nhận được, qua phương tiện phân phối nào, với điều kiện bạn kèm theo ghi quyền rõ ràng từ chối bảo hành; giữ nguyên tất ghi Giấy phép việc bảo hành nào; với Chương trình bạn cung cấp cho người sử dụng Giấy phép Bạn tính phí cho việc chuyển giao sao, tuỳ theo định bạn cung cấp bảo hành để đổi lại với chi phí mà bạn tính Bạn chỉnh sửa bạn Chương trình phần nó, từ hình thành sản phẩm dựa Chương trình, chép lưu hành sản phẩm chỉnh sửa theo điều khoản Mục trên, với điều kiện bạn đáp ứng điều kiện đây: a) Bạn phải có ghi rõ ràng tập tin chỉnh sửa bạn chỉnh sửa nó, ngày tháng thay đổi b) Bạn phải cấp phép miễn phí cho tất bên thứ ba sản phẩm bạn cung cấp phát hành, bao gồm Chương trình nguyên bản, phần hay sản phẩm dựa Chương trình hay dựa phần Chương trình, theo điều khoản Giấy phép c) Nếu chương trình chỉnh sửa thường đọc lệnh tương tác chạy, bạn phải thực cho bắt đầu chạy để sử dụng tương tác theo cách thông thường phải có thông báo bao gồm quyền thông báo việc bảo hành (hoặc thông báo bạn người cung cấp bảo hành), người sử dụng cung cấp lại Chương trình theo điều kiện này, thông báo để người sử dụng xem Giấy phép (Ngoại lệ: thân Chương trình tương tác thông báo trên, sản phẩm bạn dựa Chương trình không bắt buộc phải có thông báo vậy) Những yêu cầu áp dụng cho toàn sản phẩm chỉnh sửa Nếu có phần sản phẩm rõ ràng không bắt nguồn từ Chương trình, xem độc lập riêng biệt, Giấy phép điều khoản không áp dụng cho phần bạn cung cấp chúng sản phẩm riêng biệt Nhưng bạn cung cấp phần phần nhỏ sản phẩm dựa Chương trình, việc cung cấp phải tuân theo điều khoản Giấy phép này, cho phép người cấp phép có quyền toàn sản phẩm, phần đó, viết Như vậy, điều khoản không nhằm mục đích xác nhận quyền tranh giành quyền bạn sản phẩm hoàn toàn bạn viết; mà mục đích nhằm thi hành quyền kiểm soát việc cung cấp sản phẩm bắt nguồn tổng hợp dựa Chương trình Ngoài ra, việc kết hợp tuý Chương trình (hoặc sản phẩm dựa Chương trình) với sản phẩm không dựa Chương trình với mục đích lưu trữ quảng bá không đưa sản phẩm vào phạm vi áp dụng Giấy phép Bạn chép cung cấp Chương trình (hoặc sản phẩm dựa Chương trình, nêu Mục 2) hình thức mã biên dịch dạng thực thi khuôn khổ điều khoản nêu Mục trên, bạn: a) Kèm theo mã nguồn dạng đầy đủ biên dịch theo điều khoản Mục nêu môi trường trao đổi phần mềm thông thường; hoặc, b) Kèm theo đề nghị có hạn năm, theo cung cấp cho bên thứ ba đầy đủ mã nguồn tương ứng, phải cung cấp với giá chi phí không cao giá chi phí vật lý việc cung cấp theo điều khoản Mục nêu môi trường trao đổi phần mềm thông thường; c) Kèm theo thông tin bạn nhận để đề nghị cung cấp mã nguồn tương ứng (Phương án phép việc cung cấp phi thương mại với điều kiện bạn nhận Chương trình hình thức mã biên dịch dạng thực thi với lời đề nghị vậy, theo phần b điều khoản nêu trên) Mã nguồn sản phẩm dạng ưu tiên sản phẩm dành cho việc chỉnh sửa Với sản phẩm thi hành, mã nguồn hoàn chỉnh có nghĩa tất mã nguồn cho môđun sản phẩm đó, cộng với tất tệp tin định nghĩa giao diện kèm với nó, cộng với hướng dẫn dùng để kiểm soát việc biên dịch cài đặt tệp thi hành Tuy nhiên, ngoại lệ đặc biệt mã nguồn không cần chứa thứ mà bình thường cung cấp (từ nguồn khác hình thức nhị phân) với thành phần (chương trình biên dịch, nhân, phần tương tự) hệ điều hành mà chương trình chạy đó, trừ thân thành phần lại kèm với tệp thi hành Nếu việc cung cấp lưu hành mã biên dịch tập tin thi hành thực qua việc cho phép tiếp cận chép từ địa điểm định, việc cho phép tiếp cận tương đương tới việc chép mã nguồn từ địa điểm tính việc cung cấp mã nguồn, chí bên thứ ba không bị buộc phải chép mã nguồn với mã biên dịch Bạn không phép chép, chỉnh sửa, cấp phép cung cấp Chương trình phải tuân thủ cách xác điều khoản Giấy phép Bất kỳ ý định chép, chỉnh sửa, cấp phép cung cấp Chương trình theo cách khác làm hiệu lực tự động huỷ bỏ quyền bạn khuôn khổ Giấy phép Tuy nhiên, bên nhận quyền từ bạn với Giấy phép không bị huỷ bỏ giấy phép bên tuân thủ đầy đủ điều khoản giấy phép Bạn không bắt buộc phải chấp nhận Giấy phép bạn chưa ký vào Tuy nhiên, khác đảm bảo cho bạn phép chỉnh sửa cung cấp Chương trình sản phẩm bắt nguồn từ Chương trình Những hành động bị luật pháp nghiêm cấm bạn không chấp nhận Giấy phép Do vậy, việc chỉnh sửa cung cấp Chương trình (hoặc sản phẩm dựa Chương trình), bạn thể chấp thuận Giấy phép này, với tất điều khoản điều kiện việc chép, cung cấp chỉnh sửa Chương trình sản phẩm dựa Mỗi bạn cung cấp lại Chương trình (hoặc sản phẩm dựa Chương trình), người nhận tự động nhận giấy phép từ người cấp phép cho phép chép, cung cấp chỉnh sửa Chương trình theo điều khoản điều kiện Bạn áp đặt hạn chế khác việc thực quyền người nhận cấp phép từ thời điểm Bạn chịu trách nhiệm bắt buộc bên thứ ba tuân thủ theo Giấy phép Nếu như, theo định án với chứng việc vi phạm quyền lý khác (không giới hạn vấn đề quyền), mà bạn phải tuân theo điều kiện (nêu lệnh án, biên thoả thuận nơi khác) trái với điều kiện Giấy phép này, chúng miễn cho bạn khỏi điều kiện Giấy phép Nếu bạn đồng thời thực nghĩa vụ khuôn khổ Giấy phép nghĩa vụ thích đáng khác, hậu bạn hoàn toàn không cung cấp Chương trình Ví dụ, giấy phép quyền không cho phép người nhận trực tiếp gián tiếp qua bạn cung cấp lại Chương trình trường hợp cách bạn thoả mãn hai điều kiện hoàn toàn không cung cấp Chương trình Nếu phần điều khoản hiệu lực thi hành hoàn cảnh cụ thể, cân đối áp dụng điều khoản, toàn điều khoản áp dụng hoàn cảnh khác Mục đích điều khoản không nhằm buộc bạn phải vi phạm quyền quyền sở hữu khác tranh luận giá trị hiệu lực quyền hạn vậy; mục đích điều khoản nhằm bảo vệ toàn vẹn hệ thống cung cấp phần mềm tự thực với giấy phép công cộng Nhiều người đóng góp nhiều vào đa dạng phần mềm tự cung cấp thông qua hệ thống với tin tưởng hệ thống sử dụng cách thống nhất; tác giả/người cung cấp có quyền định họ có mong muốn cung cấp phần mềm thông qua hệ thống khác hay không, người cấp phép có ảnh hưởng tới lựa chọn Điều khoản nhằm làm rõ hệ phần lại Giấy phép Nếu việc cung cấp và/hoặc sử dụng Chương trình bị cấm số nước định quy định quyền, người giữ quyền gốc đưa Chương trình vào Giấy phép bổ sung điều khoản hạn chế việc cung cấp nước đó, nghĩa việc cung cấp phép nước không bị liệt kê danh sách hạn chế Trong trường hợp này, Giấy phép đưa vào hạn chế ghi nội dung Tổ chức Phần mềm Tự theo thời gian công bố phiên chỉnh sửa và/hoặc phiên Giấy phép Công cộng Những phiên đồng với tinh thần phiên này, khác số chi tiết nhằm giải vấn đề hay lo ngại Mỗi phiên có mã số phiên riêng Nếu Chương trình "bất kỳ phiên sau đó" có áp dụng phiên Giấy phép cụ thể, bạn có quyền lựa chọn tuân theo điều khoản điều kiện phiên giấy phép phiên sau Tổ chức Phần mềm Tự công bố Nếu Chương trình không nêu cụ thể mã số phiên giấy phép, bạn lựa chọn phiên công bố Tổ chức Phần mềm Tự 10 Nếu bạn muốn kết hợp phần Chương trình vào chương trình tự khác mà điều kiện cung cấp khác với chương trình này, viết cho tác giả để phép Đối với phần mềm cấp quyền Tổ chức Phầm mềm Tự do, đề xuất với tổ chức này; có ngoại lệ Quyết định dựa hai mục tiêu bảo hộ tình trạng tự tất sản phẩm bắt nguồn từ phần mềm tự chúng tôi, thúc đẩy việc chia sẻ tái sử dụng phần mềm nói chung KHÔNG BẢO HÀNH DO CHƯƠNG TRÌNH ĐƯỢC CẤP PHÉP MIỄN PHÍ NÊN KHÔNG CÓ MỘT CHẾ ĐỘ BẢO HÀNH NÀO TRONG MỨC ĐỘ CHO PHÉP CỦA LUẬT PHÁP TRỪ KHI ĐƯỢC CÔNG BỐ KHÁC ĐI BẰNG VĂN BẢN, NHỮNG NGƯỜI GIỮ BẢN QUYỀN VÀ/HOẶC CÁC BÊN CUNG CẤP CHƯƠNG TRÌNH NGUYÊN BẢN SẼ KHÔNG BẢO HÀNH DƯỚI BẤT KỲ HÌNH THỨC NÀO, BAO GỒM NHƯNG KHÔNG GIỚI HẠN TRONG CÁC HÌNH THỨC BẢO HÀNH ĐỐI VỚI TÍNH THƯƠNG MẠI CŨNG NHƯ TÍNH THÍCH HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ BẠN LÀ NGƯỜI CHỊU TOÀN BỘ RỦI RO VỀ CHẤT LƯỢNG CŨNG NHƯ VIỆC VẬN HÀNH CHƯƠNG TRÌNH TRONG TRƯỜNG HỢP CHƯƠNG TRÌNH CÓ KHIẾM KHUYẾT, BẠN PHẢI CHỊU TOÀN BỘ CHI PHÍ CHO NHỮNG DỊCH VỤ SỬA CHỮA CẦN THIẾT TRONG TẤT CẢ CÁC TRƯỜNG HỢP TRỪ KHI CÓ YÊU CẦU CỦA LUẬT PHÁP HOẶC CÓ THOẢ THUẬN BẰNG VĂN BẢN, NHỮNG NGƯỜI CÓ BẢN QUYỀN HOẶC BẤT KỲ MỘT BÊN NÀO CHỈNH SỬA VÀ/HOẶC CUNG CẤP LẠI CHƯƠNG TRÌNH TRONG CÁC ĐIỀU KIỆN NHƯ ĐÃ NÊU TRÊN ĐỀU KHÔNG CÓ TRÁCH NHIỆM VỚI BẠN VỀ CÁC LỖI HỎNG HÓC, BAO GỒM CÁC LỖI CHUNG HAY ĐẶC BIỆT, NGẪU NHIÊN HAY TẤT YẾU NẢY SINH DO VIỆC SỬ DỤNG HOẶC KHÔNG SỬ DỤNG ĐƯỢC CHƯƠNG TRÌNH (BAO GỒM NHƯNG KHÔNG GIỚI HẠN TRONG VIỆC MẤT DỮ LIỆU, DỮ LIỆU THIẾU CHÍNH XÁC HOẶC CHƯƠNG TRÌNH KHÔNG VẬN HÀNH ĐƯỢC VỚI CÁC CHƯƠNG TRÌNH KHÁC), THẬM CHÍ CẢ KHI NGƯỜI CÓ BẢN QUYỀN VÀ CÁC BÊN KHÁC ĐÃ ĐƯỢC THÔNG BÁO VỀ KHẢ NĂNG XẢY RA NHỮNG THIỆT HẠI ĐÓ KẾT THÚC CÁC ĐIỀU KIỆN VÀ ĐIỀU KHOẢN Áp dụng điều khoản chương trình bạn Nếu bạn xây dựng chương trình mới, bạn muốn cung cấp cách tối đa cho công chúng sử dụng, biện pháp tốt để đạt điều phát triển chương trình thành phần mềm tự để cung cấp lại thay đổi theo điều khoản Để làm việc này, đính kèm thông báo sau với chương trình An toàn đính kèm chúng phần đầu tập tin mã nguồn để thông báo cách hiệu việc bảo hành; tệp tin phải có dòng “bản quyền” trỏ đến toàn thông báo Một dòng đề tên chương trình nội dung Bản quyền (C) năm, tên tác giả Chương trình phần mềm tự do, bạn cung cấp lại và/hoặc chỉnh sửa theo điều khoản Giấy phép Công cộng GNU Tổ chức Phần mềm Tự công bố; phiên Giấy phép, phiên sau (tuỳ lựa chọn bạn) Chương trình cung cấp với hy vọng hữu ích, nhiên KHÔNG CÓ BẤT KỲ MỘT BẢO HÀNH NÀO; chí kể bảo hành KHẢ NĂNG THƯƠNG MẠI TÍNH THÍCH HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ Xin xem Giấy phép Công cộng GNU để biết thêm chi tiết Bạn phải nhận Giấy phép Công cộng GNU kèm theo chương trình này; bạn chưa nhận được, xin gửi thư Tổ chức Phần mềm Tự do, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Xin bổ sung thông tin địa liên lạc bạn (thư điện tử bưu điện) Nếu chương trình chạy tương tác, đưa thông báo ngắn bắt đầu chạy chương trình sau: Gnomovision phiên 69, Copyright (C) năm, tên tác giả Gnomovision HOÀN TOÀN KHÔNG CÓ BẢO HÀNH; để xem chi tiết gõ `show w' Đây phần mềm miễn phí, bạn cung cấp lại với điều kiện định, gõ ‘show c’ để xem chi tiết Giả thiết lệnh `show w' `show c' cho xem phần tương ứng Giấy phép Công cộng Tất nhiên lệnh mà bạn dùng khác với ‘show w' `show c'; lệnh nhấn chuột lệnh công cụ - tuỳ theo chương trình bạn Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO THAO TÁC VỚI VĂN BẢN NÂNG CAO Tìm kiếm từ cụm từ văn lưu trữ sử dụng grep, fgrep egrep Các từ khoá sử dụng trình tìm kiếm tổ hợp ký tự gọi biểu thức quy ( regular expressions-regex) Biểu thức quy nhận dạng nhiều ứng dụng sed, vi Các biểu thức qui Bảng Danh sách regex Ký tự Tìm kiếm tươn ứng x ( ký tự Cacs chuỗi chứa đựng ‘x’ nào) \ Các từ kết thúc bằn ‘WORD’ ^ Bắt đầu dòng $ Kết thúc dòng [ Range] Giới hạn bảng mã ASCII [^c] Không phải ký tự ‘c’ \[ Dich ký tự ‘[‘ theo gốc “cat*” Chuỗi chứa đựng ‘ca’ ‘cat’ ký tự “.” Tìm kiếm ký tự đơn Copyright © ISE, 2006 109 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO Biểu thức quy mở rộng (extended regex- eregex): Các ký tự eregex là: ?,() | Bảng2: Danh sách eregex Ký tự Tìm kiếm tương ứng “A1|A2|A3” Chuỗi chứa đựng ‘A1’ ‘A2’ ‘A3’ “cat+” Chuỗi chứa đựng cat ký tự “cat?” Chuỗi chứa đựng ‘ca’ ‘cat’ ký tự Họ grep Tính grep hỗ trợ biểu thức quy regex mô tả bảng1 egrep Công cụ egrep hỗ trợ biểu thức quy mở rộng eregex mô tả bảng2 fgrep fgrep biểu diễn cho grep nhanh fgrep dịch chuỗi gốc ( hỗ trợ regex eregex) Làm việc với grep Cú pháp grep: grep PATTERN FILE Grep Main Options -c Đếm số lượng dòng trùng với PATTERN -f Tìm PATTERN từ file -i bỏ qua trường hợp nhạy cảm Copyright © ISE, 2006 110 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO -n số dòng file -v xuất tất dòng từ dòng chứa PATTERN -w Tìm kiếm xác tuyệt đối PATTERN Ví dụ đưa danh sách tất dòng không trống /etc/lilo.conf: grep –v “^$” /etc/lilo.conf egrep fgrrep Tiện ích fgrep không nhận biết ngữ nghĩa đặc biệt biểu thức quy Ví dụ fgrep “cat*” FILE Dòng lệnh tìm kiếm từ chứa đựng ‘cat’ Khả fgrep bổ sung thêm nhờ lựa chọn LIST Cú pháp sau : fgrep –f LIST FILE Tiện ích egrep thực với biểu thức quy Nó tìm kiếm vài từ khoá chúng bắt đầu với dòng lệnh chia pipes Ví dụ: egrep “linux|^image” /etc/lilo.conf Copyright © ISE, 2006 111 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO Bộ soạn thảo Stream – sed Tiện ích sed thông thường sử dụng để tìm kiếm thay đổi pattern văn Nó hỗ trợ phần lớn biểu thức quy (regex) Làm quen với sed Cú pháp : sed [option] ‘lệnh’ [INPUTFILE] file input tuỳ ý sed làm việc thư mục file pipes Đây vài ví dụ giả sử làm việc file gọi MODIF Xoá tất dòng thích : sed ‘/^/ d ‘MODIF Chú ý pattern tìm kiếm nằm hai gách chéo // Thay /dev/hda1 /dev/sdb3: sed ‘s/\/dev\/hda1/\/dev\/sdb3/g’ MODIF Ký tự s dòng lệnh biệu diễn cho ‘substitute’ Ký tự ‘g’ biểu diễn cho ‘globally’ ép substitution mội dòng Nếu dòng chứa đựng từ khoá KEY thay ‘:’ với ‘;’ Copyright © ISE, 2006 112 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO sed ‘/KEY/ s/:/;/g’ MODIF sed nâng cao Bạn sử dụng vài lệnh bắt đầu với –e dòng lệnh Ví dụ, (1) xoá tất dấu trống (2) thay ‘OLD’ ‘NEW’ file MODIF sed -e ‘/^$/ d’ –e ‘s/OLD/NEW/g’ MODIF Các lệnh viết vào file, ví dụ COMMANDS Khi dòng dịch dòng lệnh để chạy sed -e ‘/^$/ d’ –e ‘s/OLD/NEW/g’ MODIF s/old/new /keyword/ s/old/new/g 23,25 d Cú pháp sử dụng COMMANDS file là: sed -f COMMANDS MODIF Việc tiện lời nhiều việc phải đánh liên tục dòng lện dài Tóm tắt lựa chọn cho sed Cờ dòng lệnh Copyright © ISE, 2006 113 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO -e Thực lệnh tiếp sau -f Đọc lệnh từ file -n Không in dòng không sửa đổi Tuỳ chọn lệnh d Xoá dòng r Đọc file xuất file output s Thay w Ghi kết vào file Copyright © ISE, 2006 114 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO Thực hành Tạo file có tên FILE với nội dung sau: Using grep, fgrep and egrep to grep for 99% of the cats % these are two % commented lines Sử dụng grep để xuất dòng lệnh dòng thích Tìm kiếm dòng chứa đựng từ bắt đầu với ‘a’ Biểu thức quy Thêm dòng sau vào file trên: ca cat cats catss cat+ cat* cat? car carriage Xem kết lệnh sau sử dụng grep, egrep fgrep: grep ‘cat+’ FILE grep ‘cat?’ FILE grep ‘cat.’ FILE grep ‘cat*’ FILE Copyright © ISE, 2006 115 Tài liệu đào tạo Linux THAO TÁC VỚI VĂN BẢN NÂNG CAO Sử dụng sed để thực thay đổi sau FILE ( sử dụng file COMMAND, sau làm bước sau dòng lệnh) • dòng đầu thay ‘grep’, với ‘soap’ • xoá ‘fgrep’ dòng thứ hai • thay ‘egrep’ với ‘water’ • dòng thứ tư thay ‘grep for’ với ‘wash’ Save kết vào file sử dụng tuỳ chọn w Copyright © ISE, 2006 116 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI SỬ DỤNG TRÌNH SOẠN THẢO VI Dường vi được sử dụng trình soạn thảo Linix Nó coi công cụ hữu ích grep cat tổ chức thư mục /bin Các chế độ Vi Để thực thao tác phức tạp copy/paste, trình soạn thảo vi thực nhiều chế độ khác • Chế độ dòng lệnh (Command Mode) Đây chế độ soạn thảo đánh dấu thường sử dụng chữ Ví dụ dùng chữ j để nhảy xuống dòng Như qui tắc ngón tay (rule of thumb), bạn muốn thực thao tác nhiều lần, bạn điền số lần thực trước gõ câu lệnh Ví dụ: dùng lệnh 10j để nhảy đến 10 dòng • Chế độ dòng (hoặc cột) cuối Bạn sử dụng chế độ hình dòng lệnh (command line mode) cách đánh dấu hai chấm Cột hiển thị góc bên trái cuối hình Trong chế độ này, bạn thực thao tác đơn giản tìm kiếm, ghi liệu, thoát chạy câu lệnh shell • Chế độ chèn Cánh đơn giản để thực chế độ hình dòng lệnh (command Mode) dùng chữ i a Đây chế độ trực quan thường sử dụng để chèn văn vào tài liệu Phím Esc thoát chế độ chèn quay trở hình dòng lệnh Copyright © ISE, 2006 117 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI Các mục văn Các mục văn từ (words) đoạn văn (paragraph) đinh nghĩa chế độ dòng lệnh (command mode) cho phép soạn thảo lệnh sử dụng tài liệu văn mà không cần dòng đến thiết bị chuột Từ, câu đoạn (Words, sentences and paragraphs) e reps b Chuyển đến cuối / đầu từ thời ( reps ) Chuyển đến cuối / đầu câu thời { reps } Chuyển đến cuối / đầu đoạn thời w tương tự e thêm dấu cách sau từ thời Đầu cuối (Beginning and End) ^ Đầu dòng $ Cuối dòng 1G Đầu tệp G Cuối tệp Tất mục văn sử dụng để đánh dấu chữ (w) đoạn văn (})một lần, di chuyển đến đầu dòng (^) đầu tệp (G), vv sử dụng để thực câu lệnh xoá copy Chèn văn Trong chế độ dòng lệnh, i cho phép bạn chèn thêm văn vào tài liệu Các đặc tính khác trình soạn thảo vi thực tương tự Bảng sau liệt kê toàn đặc tính chèn văn vi Các câu lệnh chèn a Chèn văn với trỏ ký tự cuối dòng Copyright © ISE, 2006 118 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI A Chèn văn với trỏ ký tự cuối cuối dòng i Chèn văn vị trí trỏ o Chèn văn vào dòng O Chèn văn vào dòng phía s Xoá ký tự thời chèn văn S Xoá dòng thời chèn văn Xoá văn Nếu bạn muốn xoá ký tự đơn chế độ dòng lệnh dùng x để xoá dòng dùng dd Chú ý: Gần tất câu lện vi lặp lại cách gõ thêm số lần lặp lại phía trước Bạn cách mục văn (như từ, câu, đoạn văn bản, ) cách thay thực thể (entity) sau câu lệnh Bảng 4: Các từ ký tự w Chữ đơn l Ký tự đơn Ví dụ: Xoá từ dw Xoá văn từ vị trí trỏ đến cuối dòng d$ Xoá văn từ vị trí trỏ đến cuối đoạn d} Copyright © ISE, 2006 119 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI Bạn xoá lúc mục văn đồng thời chuyển sang chế độ chèn với lệnh c Như thường lệ bạn sử dụng câu lệnh với mục văn w { Copy / Paste Thao tác copy vi câu lệnh y (thay cho yank), thao tác chèn p Nếu dòng copy chèn vào dòng phía trỏ Việc lựa chọn văn thực với mục văn thông dụng w, l, }, $, Một số ngoại lệ mô tả ví dụ Ví dụ: Sao chép văn từ vị trí đến cuối dòng thời y$ Sao chép toàn dòng thời yy Sao chép dòng 3yy Mục xoá cuối thông thường đưa vào đệm chèn với câu lệnh p Điều tương đương với thao tác copy chèn Copyright © ISE, 2006 120 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI Tìm kiếm Do việc tìm kiếm đòi hỏi phải khớp theo mẫu lần lại đề cập đến biểu thức qui (regular expressions – regex) Như số công cụ thao tác với văn UNIX grep sed, vi tuân thủ biểu thức qui Để thực tìm kiếm, phải chuyển chế độ dấu hai chấm Câu lệnh / tìm kiếm từ vị trí xuống cuối câu lệnh ? tìm kiếm theo hướng ngược lại Để thực thao tác tìm kiếm thay Cú pháp tương tự sed Ví dụ: Tìm từ chữ ‘comp’ toàn văn /\ Tìm dòng chữ z /^z Tìm toàn văn với từ khoá ‘VAR’ thay ‘var’ :% s/VAR/var Làm lại (Undo) Chúng ta huỷ bỏ thao tác vừa thực (trong chế độ dòng lệnh) với câu lệnh u, sử dụng tệp chưa thao tác ghi chưa thực Copyright © ISE, 2006 121 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI Ghi văn Câu lệnh ghi liệu w Bằng cách tài liệu mặc định ghi lại Người dùng xác định tên cho tệp cần ghi Từng đoạn (portion) văn ghi lại sang tệp băn khác tệp văn khác đọc chèn tài liệu thời Ví dụ sau thể điều Ví dụ: Ghi tài liệu tệp có tên ‘newfile’ :w newfile Ghi dòng 15 đến dòng 24 sang tệp có tên ‘axtract’ :w 15,24 extract Đọc từ tệp ‘extract’ Văn chèn vào vị trí trỏ :r extract Chú ý: ngữ cảnh chế độ cột (column mode) phải thực sau dòng thời $ cuối tài liệu Copyright © ISE, 2006 122 Tài liệu đào tạo Linux SỬ DỤNG TRÌNH SOẠN THẢO VI Thực hành Tại root cp /var/log/messages to /tmp Sử dụng chức tìm kiếm thay thể vi để tạo tất dòng bắt đầu với “and end with”; Gõ “u” để huỷ bỏ tất thay đổi Copy /etc/lilo.conf tới /tmp, soạn thảo tệp thử copy/paste yy/p cut/paste với dd/p Kiểm tra kết :x, ZZ, :quit, :wq, :q! (câu lệnh ghi liệu câu lệnh không) Kiểm tra thử kết sau sử dụng số chế độ chèn văn như: A, a, O, o, S s Lựa chọn: Nếu bạn cài đặt gói vim-enhanced chương trình vimtutor cho thấy số lựa chọn thông dụng vi Copyright © ISE, 2006 123