LẬP TRÌNH TRONG MÔI TRƯỜNG SHELL (phần 1) ppt

27 593 3
LẬP TRÌNH TRONG MÔI TRƯỜNG SHELL (phần 1) ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LINUX, Lập trình shell UNIX/Linux LẬP TRÌNH TRONG MƠI TRƯỜNG SHELL Shell UNIX/LINUX SỬ DỰNG SHELL NHƯ NGÔN NGỮ LẬP TRÌNH 2.1 Điều khiển shell từ dịng lệnh 2.2 Điều khiển shell tập tin kịch (script file) 2.3 Thực thi script CÚ PHÁP NGÔN NGỮ SHELL 3.1 Sử dụng biến 3.1.1 Các kí tự đặc biệt (Metalcharacters Shell) 3.1.1.1 Chuyển hướng vào/ra 3.1.1.2 Các kí tự đặc biệt kiểm sốt tiến trình 1.& (Ampersand) 2.Ngoặc đơn ( ; ) Dấu nháy ` ` (backquotes) 4.Ống dẫn (Pipelines) 3.1.1.3 Dấu bọc chuỗi (quoting) 1.Backslash (\) 3.1.2 Biên môi trường (environment variable) 3.1.3 Biến tham số (parameter variable) 3.2 Điều kiện 3.2.1 Lệnh test [ ] 3.3 Cấu trúc điều khiển 3.3.1 Lệnh if 3.3.2 Lệnh elif 3.3.3 Vấn đề phát sinh với biến 3.3.4 Lệnh for 3.3.5 Lệnh while 3.3.6 Lệnh intil 3.3.7 Lệnh case 3.4 Danh shell thực thi lệnh (Lists) 3.4.1 Danh sách AND (&&) 3.4.2 Danh sáchl OR ( || ) 3.4.3 Khối lệnh 3.5 Hàm (function) 3.5.1 Biến cục bên toàn cục 3.5.2 Hàm cách truyền tham số 3.6 Các lệnh nội shell 3.6.1 break 3.6.2 continue Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell 3.6.3 Lệnh : (lệnh rổng) 3.6.4 Lệnh (thực thi) 3.6.5 eval 3.6.6 exec 3.6.7 exit n 3.6.8 export 3.6.9 Lệnh expr 3.6.10 printf 3.6.11 return 3.6.12 set 3.6.13 shift 3.6.14 trap 3.6.15 unset 3.7 Lấy kết lệnh 3.7.1 Ước lượng toán học 3.7.2 Mở rộng tham số 3.8 Tài liệu Here DÒ LỖI (DEBUG) CỦA SCRIPT HIỂN THỊ MÀU SẮC (COLOR) 5.1 Màu chữ 5.2 Thuộc tính văn 5.3 Màu XÂY DỰNG ỨNG DỤNG BẰNG NGÔN NGỮ SCRIPT 6.1 Phần tích yêu cầu 6.2 Thiết kế ứng dụng KẾT CHƯƠNG MỘT SỐ TÓM TẮT 8.1 Tạo chạy chương trình shell 8.1.1 Tạo chương trình shell 8.1.2 Chạy chương trình shell 8.2 Sử dụng biến 8.2.1 Gán giá trị cho biến 8.2.2 Truy nhập giá trị biến 8.2.3 Tham số vị trí biến xây dựng sẵn shell 8.2.4 Ký tự đặc biệt cách thoát khỏi ký tự đặc biệt 8.2.5 Lệnh test 8.3 Các hàm shell 8.3.2 Các ví dụ tạo hàm 8.4 Các mệnh đề điều kiện 8.4.1 Mệnh đề if 8.4.2 Mệnh đề case Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell 8.5 Các mệnh đề vòng lặp 8.5.1 Mệnh đề for 8.5.2 Mệnh đề while 8.5.3 Mệnh đề until 8.5.4 Câu lệnh shift TÀI LIỆU THAM KHẢO Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Trước bắt tay vào viết ứng dụng khơng cần tới ngơn ngữ lập trình phức tạp khác, chương đề cập cách tiếp cận với ngôn ngữ kịch (script) hệ vỏ (shell, từ gọi shell script), dùng điều khiển tương tác với Linux Khi tiếp cận với DOS, DOS cung cấp shell để tạo xử lí theo lô tập tin *.bat, tương đối rõ ràng, đơn giản Tuy nhiên shell DOS không mạnh hữu dụng shell script Linux Tài liệu cung cấp kiến thức vừa đủ để người dùng UNIX/LINUX dùng shell tạo chương trình thực thi hữu hiệu, chí cịn dùng shell để thực thao tác kiểm soát hệ điều hành (như nhà chuyên nghiệp nói) Những đích cần đạt sau: 1.Shell mục đích sử dụng 2.Cú pháp cách điều khiển lệnh ngôn ngữ shell 3.Hiển thị thể màu sắc 4.các ví dụ thực hành Shell UNIX/Linux Mọi thứ thực Unix tiến trình Vậy tạo tiến trình ? Cách thứ viết chương trình mà chương trình biết cách tạo tiến trình (C/C++) Tuy nhiên cách địi hỏi nhiều hiểu biết nỗ lực Cũng hệ điều hành làm việc kiểu ảo khác, Unix hổ trợ phương tiện xử lí lệnh làm giao diện lệnh máy (mà người dùng đưa vào) việc thực thi lệnh (bởi Unix) Phương tiện gọi shell Từ đời Unix có vài kiểu shell, Bourne, C, Korn shell Thực shell làm ? Tịan mục đích shell để khởi động tiến trình xử lí lệnh đưa vào: yêu cầu đưa (dòng) lệnh vào, đọc đầu vào, thơng dịch dịng lệnh đó, tạo tiến trình để thực lệnh Nói cách khác shell qt dịng lệnh đưa vào máy tính, cấu hình mơi trường thực thi tạo tiến trình để thực lệnh Hình 2: Vị trí shell “thực hiện” lệnh người dùng Shell dịch lệnh nhập vào thành lời gọi hệ thống, chuyển ký hiệu dẫn hướng >, >> hay | thành liệu di chuyển lệnh Đọc biến mơi trường để tìm thơng tin thực thi lệnh Như tìm hiểu shell thực tế học ngơn ngữ lập trình, cho dù không phức tạp C, hay ngôn ngữ khác, phải qua đòi hỏi cần thiết Trong Unix/Linux có lọai shell khác lựa chọn để dùng theo nhu cầu mà người dùng thấy phù hợp Hình mơ hình tương tác shell, chương trình ứng dụng, hệ X-Window hạt nhân Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell C shell (csh) Cac ung dung Nhan HDH Bourne Again shell (bash) X-Wimdows shell Hình Linux/Unix tách biệt ứng dụng, lệnh gọi hàm chức nhân thành đơn thể nhỏ (tiến trình) Tuy nhiên, nhiều lệnh Linux kết hợp lại với để tạo nên chức tổng hợp mạnh mẽ Ví dụ: $ ls -al | more lệnh kết hợp hai lệnh, ls liệt kê toàn danh sách tệp thư mục đĩa hình, danh sách dài, ls chuyển liệu kết xuất cho lệnh more xử lý hiển thị kết thành trang hình Linux có cách kết hợp liệu kết xuất lệnh với thông qua chế chuyển tiếp (redirect), ống dẫn (pipe) Kết hợp lệnh với dịng lệnh khơng chưa đủ Nếu muốn tổ hợp nhiều lệnh đồng thời với tùy vào điều kiện, kết xuất lệnh, mà có ứng xử thích hợp sao? Lúc dùng đến cấu trúc lập trình rẽ nhánh if, case Trường hợp bạn muốn thực thao tác vòng lặp, phải dùng lệnh for, while Shell trình diễn dịch cung cấp cho người dùng khả Hầu hết Shell Unix/Linux sử dụng ngôn ngữ gần giống với C (điều dễ hiểu giới Unix/Linux, C ngơn ngữ lập trình thống trị) Ngơn ngữ Shell giống C lập trình viên hay người điều khiển Linux cảm thấy thân thiện với HĐH Hệ thống cung cấp cho người dùng nhiều chương trình shell Mỗi shell có số tiện ích hỗ trợ chế độ gõ phím, ghi nhớ lệnh Kết hợp tiện ích shell để tạo chương trình chạy được, chương trình lưu dạng tệp, gọi tệp kịch (script, thử mở tệp quan sát cấu trúc tệp) Viết tệp script, thực chất lập trình theo shell Một quen thuộc với shell cách hoạt động shell đó, người dùng làm chủ shell khác cách để dàng Các shell Unix/Linux: sh ( Bourne ) Csh, tcsh zsh shell nguyên thủy áp dụng cho Unix dòng shell sử dụng cấu trúc lệnh C làm ngôn ngữ kịch Được tạo Bia Joy Là shell thông dụng thứ hai sau bash shell Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell bash rc shell chủ yếu Linux Ra đời từ dự án GNU bash (Viết tắt Bourne Again Shell có lợi điểm mã nguồn công bố rộng rãi Nếu bash chưa có sẵn hệ thống Unix hay Linux, tải về, biên dịch sử dụng miễn phí địa www.gnu.org shell mô rộng csh với nhiều tương thích với ngơn ngữ C rc đời từ dự án GNU Shell chuẩn thường nhà phân phối Linux sử dụng bash shell Khi cài đặt Linux, trình cài đặt thường mặc định bash shell khởi động Có thể tìm thấy chương trình shell thư mục /bin với tên chương trình bash bash đơi chương trình nhị phân script gọi đến liên kết nhị phân khác Có thể dùng lệnh file để xem bash tập tin nhị phân hay script sau: $ file /bin/bash /bin/bash: ELF 32-bit LSB executable Intel 80386 kết kết xuất dạng ELF có nghĩa bash chương trình nhị phân Tuy bash shell sử dụng phổ biến Linux, ví dụ lập trình sử dụng ngơn ngữ lệnh shell sh sh shell nguyên thủy, chạy Unix Bằng lệnh file ta thấy hầu hết Linux sh liên kết đến bash mà thơi Ví dụ: $ file /bin/sh /bin/sh: symbolic link to bash điều có nghĩa bash hồn tồn diễn dịch điều khiển lệnh shell sh SỬ DỰNG SHELL NHƯ NGÔN NGỮ LẬP TRÌNH Có hai cách để viết chương trình điều khiển shell: gõ chương trình từ dịng lệnh cách đơn giản Tuy nhiên thành thạo gộp lệnh vào tệp để chạy (chúng tương đương với cách DOS gọi tệp *.bat), điều hiệu tận dụng triệt để tính tự động hóa shell 2.1 Điều khiển shell từ dòng lệnh Chúng ta bắt đầu, giá sử đĩa cứng có nhiều file nguồn c, bạn muốn truy tìm hiển thị nội dung tệp nguồn chứa chuỗi main() Thay dùng lệnh grep để tìm file sau quay lại dùng lệnh more để hiển thị file, ta dùng lệnh điều khiển shell tự động sau: $ for file in * if grep -l 'main( ) ' $file then more $fỉle fi done Khi gõ lệnh chưa hoàn chỉnh từ dấu nhắc shell, shell chuyển dấu nhắc thành >, shell chờ nhập đầy đủ lệnh trước thực tiếp Shell tự trạng hiểu lệnh bắt đầu kết thúc Trong ví dụ lệnh for kết thúc done Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Khi gõ xong done, shell bắt đầu thực thi tất gõ vào for Ở đây, file biến shell, * tập hợp đại diện cho tên tệp tìm thấy thư mục hành Bất tiện việc điều khiển ngơn ngữ shell từ dịng lệnh khó lấy lại khối lệnh trước để sửa đổi thực thi lần Nếu ta nhấn phím Up/Down shell trả lại khối lệnh sau: $ for file in * ; ; if grep -1 'main( )’ $file; then ; more $file; fi; done Đây cách shell Linux thường làm phép thực thi nhiều lệnh lúc dòng lệnh Các lệnh cách dấu (;) Ví dụ: $ mkdir myfolđer; cd myfolder; tạo thư mục myfolder lệnh mkdir sau chuyển vào thư mục lệnh cd Chỉ cần gõ Enter lần để thực thi hai lệnh lúc Tuy nhiên sửa chữa khối lệnh không dễ dàng dễ gây lỗi Chúng thuận tiện cho kết hợp khoảng vài ba lệnh Để dễ bảo trì bạn đưa lệnh vào tập tin yêu cầu shell đọc nội dung tập tin để thực thi lệnh Những tập tin gọi tập tin kịch (shell script) 2.2 Điều khiển shell tập tin kịch (script file) Trước hết bạn dùng lệnh $cat > first.sh hay trình soạn thảo vi hay emacs (hoặc mc) để soạn nội dung tập tin first.sh sau: # ! /bin/ sh # first.sh # Script se tìm thư mục hành chuỗi # mang nội dung main( ) , nội dung fìle hiển thị hình tìm thấy for file in * if grep -l 'main( ) ' $file then more $fỉle fi done exit Khơng thích C, dịng thích (comment) ngơn ngữ shell bắt đầu ký tự # Tuy nhiên Ở có thích đặc biệt #!/bin/sh Đẩy thực khơng phải thích Cặp ký tự #! thị yêu cấu shell triệu gọi shell sh nằm thư mục /bin Shell sh chịu trách nhiệm thông dịch lệnh nằm tập tin script tạo Có thể định #!/bin/bash làm shell thơng dịch thay cho sh, Linux thật sh bash Tuy nhiên nêu, hệ Unix sử dụng shell sh làm chuẩn, thói quen tốt cho lập trình viên sử dụng shell sh Khi Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell tiếp cận với UNIX, ta cảm thấy quen thân thuộc với shell Nên chạy script shell phụ (như gọi sh chẳng hạn), thay đổi môi trường mà script gây khơng ảnh hưởng đến mơi trường làm việc Chỉ thị #! Cịn dùng để gọi chương trình ta muốn chạy trước script dịch Lệnh exit bảo đảm script sau thực thi trả mã lỗi, cách mà hầu hết chương trình nên làm, mã lỗi trả vế dùng đến trường hợp thực tương tác trực tiếp từ dòng lệnh Tuy nhiên, nhận biết mã trả đoạn script sau thực thi, lại thường có ích bạn triệu gọi script từ script khác Trong đoạn chương trình trên, lệnh exit trả 0, cho biết script thực thi thành công khỏi shell gọi Mặc dù lưu tập tin script với tên sh, UNIX Linux không bắt buộc điều Hiếm Linux sử dụng phần đuôi mở rộng tập tin làm dấu hiệu nhận dạng, tệp tệp script tùy ý Tuy sh cách nhận tập tin script shell cách nhanh chóng 2.3 Thực thi script Chúng ta vừa tạo tập tin script first.sh, gọi thực thi theo cách Cách đơn giản triệu gọi trình shell với tên tập tin script làm đối số Ví dụ: $ /bin/ sh first.sh Cách gọi bình thường, quen thuộc ta gọi first.sh từ dịng lệnh, tương tự lệnh Linux thơng thường Để làm điều này, trước hết cần chuyển thuộc tính thực thi (x) cho tập tin script lệnh chmod sau: $ chmod +x first.sh Sau triệu gọi script theo cách thứ hai tiện lợi hơn: $ first.sh Có thể lệnh khơng thực thành công ta nhận thông báo lỗi 'command not found' (khơng tìm thấy lệnh) Điều xảy biến mơi trường PATH bạn thường khơng chứa đường dẫn hay vị trí thư mục hành Để khắc phục, ta thêm vào biến môi trường PATH định thư mục hành sau: $ PATH=$PATH: Nếu muốn Linux tự động nhớ thư mục hành đăng nhập bạn thêm lệnh PATH=$PATH : vào cuối tệp bash_profile (file triệu gọi lúc hệ thống nhập - tương tự autoexec.bat DOS) Tuy nhiên cách gọn đơn giản mà ta thường làm định rõ dấu thư mục hiên hành / lệnh Ví dụ: $ / first.sh Lưu ý: Đối với tài khoản root, không nên thay đổi biến môi trường PATH (bằng cách thêm dấu định ) cho phép truy tìm thư mục hành Điều khơng an toàn dễ tạo lỗ hổng bảo mật Ví dụ, quản trị hệ đăng nhập quyền root, triệu gọi chương trình Linux mà họ tưởng thư mục qui định /bin, biến PATH cho phép tìm thư mục hành nhà quản trị thực thi chương trình thay chương trình Linux /bin Vậy nên tạo thói quen đặt dấu / trước tập tin để ám truy xuất thư mục hành Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Một bạn tin first.sh chạy tốt, di chuyển đến thư mục khác thích hợp thư mục hành Nếu lệnh script dành cho mục đích riêng bạn, bạn tạo thư mục /bin thư mục chủ (home) mà nhà quản trị qui định cho người dùng, sau thêm đường dẫn vào biến môi trường PATH Nếu muốn script gọi người dùng khác, đặt vào thư mục /usr/1ocal/bin Thông thường, phép script hay chương trình thực thi, cần người quản trị cho phép Nếu bạn nhà quản trị, cần cẩn thận xem xét script người dùng khác (hacker chẳng hạn) đặt vào hệ thống Ngôn ngữ script mạnh, làm chuyện kể hủy diệt hệ thống! Để ngăn script bị sửa đổi người dùng khác, sử dụng lệnh thiết lập quyền (thường phái đăng nhập với tư cách root để làm công việc này): #cp first.sh /usr/1ocal/bin #chown root /usr/local/bin/first.sh #chgrp root /usr/1ocal/bin/first.sh #chmod u=rwx go=rx /usr/1ocal/bin/firsc.sh Đoạn lệnh mang ý nghĩa: chuyển quyến sở hữu tập tin cho root, root toàn quyền đọc sửa nội dung thực thi tập tin, nhóm người dùng khác root phép đọc thực thi Nên nhớ bạn loại bỏ quyền ghi w tập tin, UNTX Linux cho phép bạn xoá tập tin thư mục chứa có quyền ghi w Để an toàn, với tư cách nhà quản trị, nên kiểm tra lại thư mục chứa script bảo đảm có root có quyền w thư mục chứa tệp sh CÚ PHÁP NGÔN NGỮ SHELL Chúng ta thấy cách viết lệnh gọi thực thi tập tin scirpt Phần dành cho bạn khám phá sức mạnh ngơn ngữ lập trình shell Trái với lập trình trình biên dịch khó kiểm lỗi nâng cấp, lập trình script cho phép bạn dễ dàng sửa đổi lệnh ngơn ngữ văn Nhiều đoạn script nhỏ kết hợp lại thành script lớn mạnh mẽ hữu ích Trong giới UNIX Linux đơi lúc gọi thực thi chương trình, bạn khó mà biết chương trình viết script hay thực thi theo mã chương trình nhị phân, tốc độ thực thi uyển chuyển chúng gần ngang Phần học về: • Biến: kiểu chuỗi, kiểu số, tham số biến mơi trường • Điều kiện: kiểm tra luận lý Boolean shell • Điều khiển chương trình: if, elif, for , while, until, case • Danh shell • Hàm • Các hình nội shell • Lấy kết lệnh • Tài liệu Here 3.1 Sử dụng biến Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Thường bạn không cần phải khai báo biến trước sử dụng Thay vào biến tự động tạo khai báo lần tên biến xuất hiện, chảng hạn phép gán Mặc định, tất biến khởi tạo chứa trị kiểu chuỗi (string) Ngay liệu mà bạn đưa vào biến số xem định dạng chuỗi Shell vài lệnh tiện ích tự động chuyển chuỗi thành số để thực phép tính có yêu cầu Tương tự thân hệ điều hành ngôn ngữ C, cú pháp shell phân biệt chữ hoa chữ thường, biến mang tên foo, Foo, FOO ba biến khác Bên script shell, bạn có thề lấy nội dung biến cách dùng dấu $ đặt trước tên biến Để hiển thị nội dung biến, bạn dùng lệnh echo Khi gán nội dung cho biến, bạn khơng cần phải sứ dụng ký tự $ Ví dụ dịng lệnh, bạn gán nội dung hiển thị biến sau: $ xinahao=hello $ echo $xinchao Hello $ xin chao= "I am here" $echo $xin chao I am here $ xinchao=12+l $echo $xin chao 12+1 Lưu ý, sau dấu = khơng có khoảng trắng Nếu gán nội dung chuỗi trắng cho biến, cần bao bọc chuỗi dấu “ “ có khoảng Có thể sử dụng lệnh read để đọc nhập liệu người dùng đưa vào giữ lại biến để sử dụng Ví dụ: $ read yourname XYZ $echo "Hello " $yourname Hello XYZ Lệnh read kết thúc bạn nhấn phím Enter (tương tự scanf C hay readln Pascal) 3.1.1 Các kí tự đặc biệt (Metalcharacters Shell) 3.1.1.1 Chuyển hướng vào/ra Một tiến trình Unix/Linux gắn liền với đầu xử lí dịng (stream) liệu: đầu vào chuẩn (stdin hay 0), thường từ bàn phím qua chức getty(); đầu chuẩn (stdout, hay 1), thường hình, sở liệu lỗi hệ thống (stderr, hay 2) Tuy nhiên hướng vào/ra thay đổi thơng báo đặc biệt: Kí hiệu Ý nghĩa ( … tượng trưng cho đích đổi hướbg) 10 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell $ fg Ngoặc đơn ( ; ) Dùng để nhóm số lệnh lại, phân cách ; Ví dụ: $ (date ; who) > system.status $ cat system.status (Hãy xem kết xuất hình) Dấu nháy ` ` (backquotes) (là dấu phím với ~) Hay cịn gọi dấu thay Bất kì lệnh xuất bên dấu nháy thực trước kết lệnh thay đầu chuẩn (stdout) trước lệnh dòng lệnh thực Ví dụ: $ echo Logged in `date` > login.time nói cho shell thực date trước tiên, trước thực phần khác lại dòng lệnh, tức sau thực lệnh echo Vậy cách diễn đạt dòng lệnh sau: echo Logged in Fri May 12:52:25 UTC 2004 > login.time Tức là: thực date với kết Fri May 12:52:25 UTC 2004 khơng stdout (màn hình), đầu vào echo; sau lệnh echo echo Logged in Fri May 12:52:25 UTC 2004, khơng đưa hình (stdout) mà đổi hướng vào tệp login.time Nếu gõ $ cat login.time, ta có kết xuất từ tệp hình: Logged in Fri May 12:52:25 UTC 2004 1.Hãy thử với lệnh: $echo Logged in Fri May 12:52:25 UTC 2004 Kết ? Kết hợp: $cat Logged in `date` > EOF > Login.time (ENTER) Sau thực hiện: $ cat login.time Kết ? Ống dẫn (Pipelines) Shêll cho phép kết thực thi lệnh (đầu lệnh), kết hợp trực tiếp (nối vào) đầu vào lệnh khác, mà khơng cần xử lí trung gian (lưu lại trước tệp trung gian) Ví dụ: $who | ls –l Đầu (stdout) who (đáng lẽ hình), sẽlà đầi vào (stdin) ls –l Ví dụ: $ (date ; who) | ls 13 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Tóm tắt: cmd & cmd1 ; cmd2 (cmd) `cmd` cmd1 | cmd2 đặt lệnh cmd chạy (background) chạy cmd1 trước, sau chạy cmd2 thực cmd shell (subshell) đầu cmd thay cho đàu lệnh dòng lệnh nối đầu cmd1 vào đầu vào cmd2 3.1.1.2 Dấu bọc chuỗi (quoting) Shell có tập kí tự đặc biệt mà hiệu lực chúng để vơ hiệu hóa ý nghĩa kí tự đặc biệt khác Khi kí tự đặc biệt bị giải trừ hiệu lực, ta gọi kí tự bị quoted Trước tiếp tục cần hiểu số tính chất dấu bọc chuỗi mà shell quy định Thông thường, tham số dòng lệnh thường cách khoảng trắng Khoảng trắng ký tự spacebar, tab ký tự xuống dịng Trường hợp muốn tham số chứa khoảng trắng, cần phải bọc chuỗi dấu nháy đơn ' nháy kép " Dấu nháy kép dùng trường hợp biến chuỗi bạn có khoảng trắng Tuy nhiên với dấu nháy kép, ký hiệu biến $ có hiệu lực Nội dung biến thay chuỗi Dấu nháy đơn có hiệu lực mạnh Nếu tên biến có ký tự $ đặt chuỗi có dấu nháy đơn, bị vơ hiệu hóa Có thể dùng dấu \ để hiển thị ký tự đặt biệt $ chuỗi Backslash (\) Ví dụ: $cat file1&2 lệnh gây nhiều lỗi, có hiểu nhầm & đơn giản thành phần tên tệp (file1&2) Để ý: $cat file1\&2 cho kết quae momg muốn: đưa nội dung tệp có tên file1&2 hình Dấu \ giải trừ ý nghĩa đặc biệt & Các ví dụ khác “ ” hay ‘ ‘: Ví dụ 3-1: variables.sh #!/bin/sh myvar="Hi there" echo echo echo echo $myvar "message : $myvar" 'message : $myvar' "messgae :\$myvar" echo Enter some text read myvar echo '$myvar' now equals $myvar 14 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell exit Kết xuất thực thi script: Hi there message : Hi there message : $myvar message : $myvar Enter some text Hello World $myvar now equals Hello World Cách chương trình làm việc: Biến myvar tạo khởi gán giá trị chuỗi Hi there Nội dung biến sau hiển thị lệnh echo trường hợp bọc chuôi nháy kép, nháy đơn dấu hiển thị ký tự đặc biệt \ Tóm lại 'nếu muốn thay nội dung biến chuỗi, cần bọc chuỗi nháy kép Nếu muốn hiển thị toàn nội dung chuỗi, dùng nháy đơn 3.1.2 Biên mơi trường (environment variable) Khi trình shell khởi động cung cấp sẳn số biến khai báo gán trị mặc định Chúng gọi biến môi trường Các biến thường viết hoa để phân biệt với biến người dùng tự định nghĩa (thường ký tự không hoa) Nội dung biến thường tùy vào thiết lập hệ thống người quản trị cho phép người dùng hệ thống sử dụng Danh shell biến môi trường nhiều, nhìn chung nên nhớ số biến môi trường chủ yếu sau: Biến môi trường $HOME $PATH $PS1 cho $SP2 $IFS $0 $# $$ Ý nghĩa Chứa nội dung thư mục chủ (Thư mục người dùng đăng nhập) Chứa danh shell đường dẫn (phần cách dấn hai chấm :) Linux thường tìm trình cần thi hành biến $PATH Dấu nhắc (prompt) hiển thị dịng lệnh Thơng thường $ user root Dấu nhắc thứ cấp, thông báo người dùng nhập thêm thông tin trước lệnh thực hiện.Thường dấu > Dấu phân cách trường danh shell chuỗi Biến chứa danh shell ký tự mà shell dùng tách chuỗi (thường tham số dịng lệnh) Ví dụ $IFS thường chứa ký tự Tab, ký tự trắng ký tự xuống hàng Chứa tên chương trình gọi dịng lệnh Số tham số truyền dịng lệnh Mã tiến trình (process id) shell script thực thi Bởi số process id tiến trình tồn hệ thống vào lúc script thực thi nên thường lệnh script' dùng số để tạo tên file tạm Ví dụ /tmp/tmpfile_$$ 15 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Mỗi môi trường mà uer đăng nhập chứa số danh shell biến môi trường dùng cho mục đích riêng Có thể xem đanh shell lệnh env Để tạo biến mơi trường mới, dùng lệnh export shell (một số shell sử dụng lệnh setenv) 3.1.3 Biến tham số (parameter variable) Nếu cần tiếp nhận tham số dòng lệnh để xử lý, dùng thêm biến mơi trường sau: Biến tham số $1, $2, $3 S* $@ Ý nghĩa Vị trí nội dung tham số dòng lệnh theo thứ tự từ trái sang phải Danh shell tất tham số dòng lệnh Chúng lưu chuỗi phản cách ký tự quy định biến $IFS Danh shell tham số chuyển thành chuỗi Không sử dụng dấu phân cách biến IFS Để hiểu rõ khác biệt biển $ * $@, xem ví dụ sau: $IFS= "A” $set foo bar bam $echo “$@” foo bar bam $echo "$*” foo^ bar^bam $unset IFS $echo "$*" foo bar bam Ta nhận thấy, lệnh set tiếp nhậnn tham số dòng lệnh foo bar bam Chúng ảnh hưởng đến biến môi trường $* $@ Khi IFS qui đinh ký tự ^ , $* chứa danh shell tham số phân cách ký tự ^ Khi đặt IFS vế NULL lệnh unset, biến $* trả danh shell tuý tham số tương tự biến $@ Biến $# chứa số tham số lệnh, trường hợp ta có: $echo " $ # " Khi lệnh khơng có tham số $0 tên lệnh cịn $# trả giá trị Đoạn trình mẫu sau minh họa số cách đơn giãn xử lý truy xuất biến mơi trường Ví dụ3-2: try_variables.sh #!/bin/sh salutation="Hello" echo $salutation echo "The program $0 is now running" 16 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell echo echo echo echo "The "The "The "The second parameter was $2" first parameter was $1" parameter list was $*" user's home directory is $HOME" echo "Please enter a new greeting" read salutation echo $salutation echo "The script is now complete" exit Lưu tên tập try-variables.sh, đổi thuộc tính thực thi x cho tập tin lệnh: $chmod +x try_variablebles.sh Khi chạy try-variables.sh từ dòng lệnh, bạn nhận kết qủa kết xuất sau: $./try_variables.sh foo bar baz Hello The program /try_vanables.sh is now running The second parameter was bar The first parameter was foo The parameter list was foo bar baz The user's home directory is /home/xyz #tên người dùng login xyz please enter a new greeting Xin chao! Xin chao! The scnpt is now complete 3.2 Điều kiện Nền tảng tất ngơn ngữ lập trình, khả kiểm tra điều kiện đưa định rẽ nhánh thích hợp tùy theo điều kiện hay sai Trước tìm hiểu cấu trúc điều khiển ngơn ngữ script, ta xem qua cách kiểm tra điề kiện Một script shell kiểm tra mã lỗi trả lệnh có triệu gọi từ dòng lệnh, bao gồm ả tập tin lệnh script khác ĐÓ lý thường sử dụng lệnh exit cuối scipt kết thúc 3.2.1 Lệnh test [ ] Thực tế, script sử dụng lệnh [] test để kiểm tra điều kiện boolean thường xuyên Trong hầu hết hệ thống UNIX Linux [ ] test có ý nghĩa tương tự nhau, thường lệnh [ ] dùng nhiều Lệnh [ ] trông đơn giản, dễ hiểu gần với ngữ lập trình khác Trong số shell Unix, lệnh test có khả lời triệu gọi đến chương trình bên ngồi khơng phải lệnh nội ngơn ngữ script Bởi 17 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell test dùng hầu hết lập trình viên có thói quen thường tạo chương trình với tên test, thử lệnh test không thành công bên script, xem lại bên hệ thống có chương trình tên test khác biệt tồn Hãy thử dùng lệnh which test, lệnh trả cho bạn đường dẫn đến thư mục test triệu gọi Chảng hạn /bin/test hay /usr/bin/test Dước cách sử dụng lệnh test đơn giản Dùng lệnh test để kiểm tra xem file mang tên hello.c có tồn hệ thống hay khơng Lệnh test trường hợp có cú pháp sau: test -f , script ta viết lệnh theo cách sau: if test -f hello.c then fi Cũng sử dụng [ ] để thay test if [-f hello.c ] then fi Mà lỗi giá trị trả lệnh mà test kiểm tra định điều kiện kiểm tra hay sai Lưu ý, phải đặt khoảng trắng lệnh [ ] biểu thức kiểm tra Để dễ nhớ thể xem [ ] tương đương với lệnh test, dĩ nhiên lệnh tham số truyền cho lệnh phải phân cách khoảng trắng để trình biên dịch hiểu Nếu thích đặt từ khóa then chung dịng với lệnh if, bạn phải phân cách then dấu chấm phấy (;) sau: if [ -f hello.c ] ; then fi Điều kiện mà lệnh test cho phép kiểm tra rơi vào kiểu sau: So sánh chuỗi So sánh stringl = string2 tring1 != string2 -n string1 -z stringl Kết true chuỗi bàng (chính xác ký tự) true chuỗi không true string1 không rổng true string1 rỗng (chuổi null) So sánh toán học So sánh Kết expression1 -eq expression2 true hai biểu thức expression1 -ne expression2 true hai biểu thức không 18 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell expression1 -gt expression2 true biểu thức expression1 lớn expression2 expreesion1 -ge expression2 true nểu biểu thức expression1 lớn hay expression2 expression1 -lt expression2 true biểu thức expression1 nhỏ expression2 expression1 -le exprebbion2 true biểu thức expression1 nhỏ hay expression2 !expression true biểu thức expression false (toán tử not) Kiểm tra điều kiện tập tin -d file -e file -f file -g file -r file -s f ile -u file -w file -x file true file thư mục true file tồn đĩa true file tập tin thông thường true set-group-id thiết lập file true file cho phép đọc true kích thước file khác true set-ser-id áp đặt file true file cho phép ghi true file phép thực thi Lưu ý vế mặt lịch sử tùy chọn -e không khả chuyển (portable) -f thường sử dụng thay Câu hỏi đặt set-group-id set-ser-id (còn gọi set-gid setuid) mang ý nghĩa Set-uid cho phép chương trình quyền chủ thể sở hữu (owner) thay quyền user thơng thường Tương tự set-gid cho phép chương trình quyền nhóm Tất cá điều kiện kiểm tra tập tin yêu cầu file phải tồn trước (có nghĩa lệnh test -f filename phải gọi trước) Lệnh test hay [ ] cịn có thêm nhiễu điều kiện kiểm tra khác nữa, thời ta chưa dùng đến Có thể tham khảo chi tiết test lệnh help test từ dấu nhắc hệ thống 3.3 Cấu trúc điều khiển Shell cung cấp cấu trúc lệnh điều khiển giống với ngôn ngữ lặp trình khác if, elif, for, while, until, case Đối với vài cấu trúc lệnh (ví dụ case), shell đưa cách xử lý uyển chuyển mạnh mẻ Những cấu trúc điếu khiển khác có thay đổi thay đổi nhỏ khơng đáng kể Trong phần sau statements hiểu biểu thức lệnh (có thể bao gồm tập hợp lệnh) thực thi điều kiện kiểm tra condition thoả mãn 3.3.1 Lệnh if Lềnh if đơn giản sử dụng nhiều if kiểm tra điều kiện sai để thực thi biểu thức thích hợp 19 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell if condition then statements else statements Ví dụ, đoạn script sau sử đụng if tùy vào cấu trá lời bạn mà đưa lời chào thích hợp Ví du 3-3 if_control.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday if [ $timeofday = "yes" ]; then echo "Good morning" else echo "Good afternoon" fi exit Kết kết xuất script $./ if_control.sh Is it mornining ? Please answer yes or no yes Good morning $ Ờ ví dụ sử dụng cú pháp [ ] để kiểm tra điều kiện thay cho lệnh test Biểu thức kiểm tra xem nội dung biến $timeofday có khớp với chuỗi "yes" hay khơng Nếu có lệnh echo cho in chuỗi “Good morningg”, không (mệnh đề else) in chuỗi “Goođ afternoon" Shell khơng địi hỏi phải canh lề hay thụt đầu dòng cho lệnh Chúng ta canh lề để có pháp rõ ràng Mặc dù sau bạn thấy ngôn ngữ chương trình make yêu cầu canh lề xem yêu cầu để nhận dạng lệnh 3.3 Lệnh elif Thật khơng may, có nhiễu vấn đề phát sinh với đoạn trình script Tất trả lời khác với “yes” có nghĩa “no” Chúng ta khắc phục điều cách dùng cấu trúc điều khiển elif Mệnh đề cho phép kiểm tra điếu kiện lần thứ hai bên else Script đãy sửa đổi hồn chỉnh hơn, bao gồm in thơng báo lỗi người dùng không nhập câu trả lời “yes” “no” Ví du 3-4: elif_control.sh 20 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday if [ $timeofday = "yes" ]; then echo "Good morning" elif [ $timeofday = "no" ]; then echo "Good afternoon" else echo "Sorry, $timeofday not recognized Enter yes or no" exit fi exit Cũng đơn gián ví dụ 3-3, sử dụng thêm elif để kiểm tra trường hợp người dùng không nhập “no" Thông báo lỗi in mã lỗi trả lệnh exit Trường hợp “yes” “no” nhập vào, mã lỗi trả 3.3.3 Vấn đề phát sinh với biến elif ví dụ khắc phục hầu hết điều kiện nhập liệu yêu cầu người dùng nhập trước định thực thi Mặc dù vậy, có vấn đề tinh tế cịn lại, chạy lại elif_control.sh nói trên, thay nhập vào chuỗi đó, gõ Enter (tạo chuỗi rỗng cho biến $timeofday), nhận thông báo lỗi shell sau: [ : = : unary operator expected Điều xảy ? Lỗi phát sinh mệnh đề if Khi biến timeofday kiềm tra cho trị rỗng lệnh if shell diễn dịch thành: if [= “yes " ] dĩ nhiên shell không hiểu phải so sánh chuỗi “yes" với Để tránh lỗi cần bọc nội dung biến dấu bao chuỗi sau: if [ “$timeofdayl” ="yes”] Trong trường hợp chuỗi nhập vào rổng, shell diễn dịch biểu thức thành: if [ “ “ =”yes”] script chạy tốt Elif_control.sh sửa lại hồn chỉnh sau: 21 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Ví du: 3-5: elif_control2.sh #!/bin/sh echo -n "Is it morning? Please answer yes or no: read timeofday " if [ "$timeofday" = "yes" ]; then echo "Good morning" elif [ "$timeofday" = "no" ]; then echo "Good afternoon" else echo "Sorry, $timeofday not recognized Enter yes or no" exit fi exit Hãy kiểm tra lại elif_controi2.sh cách chi nhấn Enter shell đưa câu hỏi Script chạy bảo đảm chuẩn Lệnh echo thường xuống hàng sau đưa thông báo Có thể đùng lệnh printf (sẽ đề cập phần sau) thay cho echo Một vài shell cho phép lệnh echo -e dịng, chúng khơng phải phố biến để bạn sử dụng 3.3.4 Lệnh for Sử dụng for để lặp lại số lần với giá trị xác định Phạm vi lặp nằm tập hợp chuỗi định tường minh chương trình kết qủa trả từ biến biểu thức khác Cú pháp: for variable in values statemens done Ví dụ sau in giá trị chuỗi tập hợp: Ví du 3-6: for_loop.sh #!/bin/sh for foo in bar fud 13 echo $foo done exit Kết kết xuất 22 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell $./ for_loop.sh bar fud 13 foo biến dùng vòng lặp for để duyệt tập hợp gồm phần tử (cách khoảng trắng) Mặc định shell xem tất giá trị gán cho biến kiểu chuỗi 13 xem chuỗi tương tự chuỗi bar fud Điều xảy bạn thay lệnh for foo in barr fud 13 thành for foo in “bar fud 13” Hãy nhớ lại, dấu nháy kép cho phép coi tất nội dung bên nháy kép biến chuỗi Kết kết xuất sử dụng dấu nháy kép, lệnh echo gọi lần để in chuỗi "bar fud 13 " for thường dùng để duyệt qua danh shell tên tập tin Bằng cách dùng ký tự đại diện * (wildcard) ví dụ first.sh, ta thấy cách for tìm kiếm tập tin kết hợp với lệnh grep Ví dụ sau cho thấy việc mở rộng biến thành tập hợp sử dụng lệnh for Giả sử bạn muốn in tất tệp *.sh có ký tự f Ví du 3-7: for_loop2.sh #!/bin/sh for file in $(ls f*.sh); lpr $file done Ví dụ cho thấy cách sử dụng cú pháp $(command) (sẽ tìm hiểu chi tiết phần sau) Danh shell phần tử lệnh for cung cấp kết trả vệ lệnh ls f* bọc cặp lệnh mở rộng biến $ ( ) Biến mở rộng nằm dấu bao $ (command) xác đinh lệnh command thực thi xong 3.3.5 Lệnh while Mặc dù lệnh for cho phép lặp tập hợp giá trị biết trước, trường hợp tập hợp lớn số lần lặp khơng biết trước, for khơng thích hợp Ví dụ for foo in 10 11 12 13 14 15 16 echo $foo done Lệnh while cho phép thực lặp vô hạn điều kiện kiểm tra 23 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Cú pháp while sau: while condition statements done Ví dụ sau cho thấy cách while liên tục kiểm tra mật (password) người dùng chuỗi secret, chấp nhận Ví du: 3-8: password.sh #!/bin/sh echo "Enter password" read trythis while [ "$trythis" != "secret" ]; echo "Sorry, try again" read trythis done exit Kết xuất scnpt $./password.sh Enter password: abc Sorry, try again secret #gõ $ Mặc dù để password hiển thị nhập liệu rõ ràng khơng thích hợp, ta chủ yếu minh họa lệnh while Lệnh while liên tục kiểm tra nội dung biến $trythis, yêu cầu nhập lại liệu lệnh read $trythis chưa với chuỗi "secret " Bằng cách sử dụng biến đếm biểu thức so sánh tốn học, while hồn tịan thay for trường hợp tập liệu lớn H theo dõi ví dụ sau: Ví dụ: 3-9 while_for.sh #!/bin/sh foo=1 while [ "$foo" -le 16 ] echo "Here $foo" foo=$(($foo+1)) done exit Lưu ý, cú pháp $( ( ) ) shell ksh xướng Cú pháp dùng để đánh giá 24 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell ước lượng biểu thức Với shell cũ khác thay cú pháp lệnh expr Tuy nhiên expr không hiệu Bất nào, nên dùng $ ( ( ) ) thay cho expr script while_for.sh sử dụng lệnh [ ] để kiểm tra giá trị biển $foo nhỏ hay 16 hay khơng Nếu cịn, lệnh lặp while in tổng cộng dồn biến $foo 3.3.6 Lệnh intil Cú pháp lệnh until sau: until condition statements done Lệnh until tương tự lệnh while điều kiện kiểm tra bi đảo ngược lại Vòng lặp bị dừng điều kiện kiểm tra Ví dụ sau sử dụng lệnh until để chờ user đăng nhập:1 Ví dụ 3-10: until_user.sh #!/bin/sh echo "Locate for user " until who | grep "$1" > /dev/null sleep 60 done echo -e \\a echo "***** $1 has just logged in *****" exit Để thử lệnh này, chạy ngồi hình console, dùng hai hình ảo (Alt+F1 Alt+F2), hình dùng chạy script until_user.sh, hình dùng đăng nhập với tên user muốn kiểm tra Nếu chế độ đồ họa, bạn mở hai cửa sổ terminal dễ hình dung Hãy chạy until_user.sh từ sau: $./until_user.sh xyz Locate for user Script rơi vào vòng lặp chờ user tên xyz dăng nhập Hãy nhập từ hình khác (với user tên xyz), ta thấy hình đưa thơng báo cho thấy vòng lặp until chấm dứt * * * * * xyz has just logged in * * * * * Cách chương trình làm việc: 25 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell Lệnh who lọc danh shell user đăng nhập vào hệ thống, chuyển danh shell cho grep chế đường ống ( | ) Lệnh grep lọc tên user theo biến môi trường $1 có nội dung chuỗi xyz Một lệnh grep lọc liệu, chuyển vùng tập tin rỗng /dev/null trả lại giá trị null, lệnh until kết thúc 3.3.7 Lệnh case Lệnh case có cách sử dụng phức tạp lệnh học Cú pháp lệnh case sau: case variable in pattern [ | partten] ) statements;; pattern [ | partten] ) statements;; esac Mặc dù nhìn khó hiểu, lệnh case linh động case cho phép thực so khớp nội dung biến với chuỗi mẫu pattern Khi mẫu so khớp, (lệnh) statement tương ứng thực Hãy lưu ý đặt hai dấu chầm nhảy ;; phía sau mệnh đề so khớp pattern, shell dùng dấu hiệu để nhận dạng mẫu pattern so khớp mà biến cần thực Việc cho phép so khớp nhiều mẫu khác làm case trở nên thích hợp cho việc kiểm tra nhập liệu người dùng Chúng ta xem lại ví dụ 3-4 với phiên viết case sau: Ví dụ 3-11 case1.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in "yes") echo "Good Morning";; "no" ) echo "Good Afternoon";; "y" ) echo "Good Morning";; "n" ) echo "Good Afternoon";; * ) echo "Sorry, answer not recognised";; esac exit Cách thực hiện: Sau người dùng nhập vào câu trả lời, lệnh case lấy nội dung biến $timeofday so sánh với chuỗi Khi gặp chuỗi thích hợp thực thi lệnh đằng sau dấu ) kết thúc (không tiếp tục so khớp với mẫu khác) Ký tự đại diện * cho phép so khớp với loại chuỗi * thường xem trường hợp so sánh cuối mẫu so sánh trước thất bại Bạn xem * mệnh đề default lệnh switch C hay case … else Pascal Việc so sánh thường thực từ mẫu thứ trở xuống bạn đừng bao 26 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn LINUX, Lập trình shell đặt * đầu tiên, chuỗi thỏa mãn case Hãy đặt mẫu dễ xảy đầu, mẫu có tần số xuất thấp Sau đặt mẫu * để xử lý trường hợp lại Nếu muốn dùng mẫu * đặt xen mẫu khác để theo dõi (debug) lỗi chương trình (như in nội dung biếntrong lệnh case chẳng hạn) Lệnh case ví dụ rõ ràng sáng sủa chương trình sử dụng if Tuy nhiên kết hợp chung mẫu so khớp với khiến cho case ngắn gọn sau: Ví du 3-12 case2.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in "yes" | "y" | "Yes" | "YES" ) echo "Good Morning";; "n*" | "N*" ) echo "Good Afternoon";; * ) echo "Sorry, answer not recognised";; esac exit Ở script sử dụng nhiều mẫu so khớp dòng so sánh lệnh case Các mẫu có ý nghĩa tương tự yêu cầu thực thi lệnh điều kiện xảy Cách viết thực tế thường dùng dễ đọc cách viết thứ Mặc dù vậy, thử tìm hiểu case ví dụ sau case sử dụng lệnh exit để trả mã lỗi cho trường hợp so sánh mẫu đồng thời case sử dụng cách so sánh tắt ký tự đại diện Ví du 3-13 case3.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in "yes" | "y" | "Yes" | "YES" ) echo "Good Morning" echo "Up bright and early this morning?" ;; "[nN]*" ) echo "Good Afternoon" ;; * ) echo "Sorry, answer not recognised" echo "Please answer yes or no" exit 27 Huỳnh Thúc Cước, Viện CNTT tập hợp biên soạn ... LINUX, Lập trình shell Mỗi môi trường mà uer đăng nhập chứa số danh shell biến môi trường dùng cho mục đích riêng Có thể xem đanh shell lệnh env Để tạo biến môi. .. NGỮ SHELL Chúng ta thấy cách viết lệnh gọi thực thi tập tin scirpt Phần dành cho bạn khám phá sức mạnh ngơn ngữ lập trình shell Trái với lập trình trình biên dịch khó kiểm lỗi nâng cấp, lập trình. .. thường tùy vào thiết lập hệ thống người quản trị cho phép người dùng hệ thống sử dụng Danh shell biến môi trường nhiều, nhìn chung nên nhớ số biến môi trường chủ yếu sau: Biến môi trường $HOME $PATH

Ngày đăng: 10/07/2014, 18:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan