Cách lặp trình shell trong fedora Ta có thể lập trình trực tiếp trên terminal trong fedora Và các lệnh sẽ được ngăn cách với nhau bằng dấu phẩy , Tuy nhiên cách làm này dễ gây
Trang 2Nguyễn Tuấn Anh
Trần Huỳnh Bảo Tiên
Võ Thị Thùy Dung
GIỚI THIỆU NHÓM
Trang 31 Cách lập trình shell trên fedora
Trang 41 Cách lặp trình shell trong fedora
Ta có thể lập trình trực tiếp trên
terminal trong fedora
Và các lệnh sẽ được ngăn cách với
nhau bằng dấu phẩy ( , )
Tuy nhiên cách làm này dễ gây khó
khăn cho việc lập trình 1 đoạn code dài
hay phức tạp.
Ta có thể lập trình trực tiếp trên
terminal trong fedora
Và các lệnh sẽ được ngăn cách với
nhau bằng dấu phẩy ( , )
Tuy nhiên cách làm này dễ gây khó
khăn cho việc lập trình 1 đoạn code dài
hay phức tạp.
Vì vậy, ta có thể lập trình trên các
emacs ,… Ở đây, ta sẽ được hướng dẫn phương pháp lập trình shell trên vi.
Trang 5c 1 Bướ
c 1
• Khở
i đ ộng vi v
ới t erm ina
l b ằng c
âu l ệnh
$
vi <t ên ch ươ
ng t rìn h>
( thư ờng s
ẽ đ
ặt t
ên chư ơng trì
nh phù hợp v
h c
ho d
ễ n
hớ )
• Sau khi c
ửa
sổ
vi hi
ện lên t
hì bấ
m p hím
a đ
ể thự
c h iện việ
c s oạn t hảo.
• Khở
i đ ộng vi v
ới t erm ina
l b ằng c
âu l ệnh
$
vi <t ên ch ươ
ng t rìn h>
( thư ờng s
ẽ đ
ặt t
ên chư ơng trì
nh phù hợp v
h c
ho d
ễ n
hớ )
• Sau khi c
ửa
sổ
vi hi
ện lên t
hì bấ
m p hím
a đ
ể thự
c h iện việ
c s oạn t hảo.
Bướ
c 2 Bướ
c 2
• Thự
c hi
ện vi
ệc l
ập trì
nh t ron
ết t húc v iệc lập trì
nh bấ
m p hím
vi ho
ặc double c
lic
k vào tha
nh trạ
ng thá
i gõ lệnh
:q uit
sau
đó
EN TE R.
• Sau khi k
ết t húc v iệc lập trì
nh bấ
m p hím
vi ho
ặc double c
lic
k vào tha
nh trạ
ng thá
i gõ lệnh
:q uit
sau
đó
EN TE R.
Bướ
c 4 Bướ
c 4
• Dùn
g te rm ina
l gọ
i c hươn
g trì
nh v
ừa đ ược lập trì
ng t rìn h> rìn ng t ươ ch ên ash <t p $b ú phá g c nh bằn trì lập ược ừa đ nh v g trì hươn i c l gọ ina rm g te Dùn •
h>.
Các bước lập trình shell trên vi
Trang 6B1: Khởi động vi với terminal bằng câu lệnh $ vi <tên chương trình> ( thường sẽ đặt tên chương trình phù hợp với nội dung sẽ lập
trình cho dễ nhớ )
Sau khi cửa sổ vi hiện lên thì bấm phím a để thực hiện việc soạn thảo.
Trang 9B2: Thực hiện việc lập trình trong vi.
Trang 10B3: Sau khi kết thúc việc lập trình bấm phím ESC sau đó gõ ZZ ( Shift + zz )
để thoát vi hoặc double click vào thanh trạng thái gõ lệnh :quit sau đó ENTER.
B4: Dùng terminal gọi chương trình vừa được lập trình bằng cú pháp
$bash <tên chương trình>.
B3: Sau khi kết thúc việc lập trình bấm phím ESC sau đó gõ ZZ ( Shift + zz )
để thoát vi hoặc double click vào thanh trạng thái gõ lệnh :quit sau đó ENTER.
B4: Dùng terminal gọi chương trình vừa được lập trình bằng cú pháp
$bash <tên chương trình>.
Trang 12Chú ý:
Không có khoảng trống trước và sau dấu =
Để hiển thị giá trị biến thường dùng dấu $ trước tên biến
Không có khoảng trống trước và sau dấu =
Để hiển thị giá trị biến thường dùng dấu $ trước tên biến
Ví dụ: $ count=1 $ dh=DaiHoc
Ví dụ: $ count=1 $ dh=DaiHoc
Trang 13• Dấu slash ngược: \
Back quot e
Sin gle q uot
e uot gle q Sin e
Back slash
Dou b
le
quo t e
Dou b
le
quo t e
3 Các dấu nháy
Có 4 kí tự dấu đặc biệt:
Trang 143.1 Dấu nháy ngược `…`
Thường được sử dụng để bọc một cấu trúc lệnh
Mục đích của dấu nháy ngược là yêu cầu shell thi hành lệnh trong cặp dấu nháy ngược và chèn sddout của lệnh này vào vị trí cặp dấu nháy ngược (tương tự cách sử dụng cặp ngoặc tạo độ ưu tiên cao hơn khi tính toán)
Thường được sử dụng để bọc một cấu trúc lệnh
Mục đích của dấu nháy ngược là yêu cầu shell thi hành lệnh trong cặp dấu nháy ngược và chèn sddout của lệnh này vào vị trí cặp dấu nháy ngược (tương tự cách sử dụng cặp ngoặc tạo độ ưu tiên cao hơn khi tính toán)
Ví dụ:
$ echo The Date and Time is: `date`
The Date and Time is: Wed Mar 22 15: 25: 07 ICT 2000
$ echo The current directory is: `pwd`
The current directory is: /tmp/testdir/testshell
Ví dụ:
$ echo The Date and Time is: `date`
The Date and Time is: Wed Mar 22 15: 25: 07 ICT 2000
$ echo The current directory is: `pwd`
The current directory is: /tmp/testdir/testshell
Trang 153.2 Dấu nháy đơn ‘…’
Ta có tập tin phonebook như sau:
$ cat phonebook
Nguyen Van An 8822191
Nguyen Thanh Tam 8899111
Nguyen Hau 98233131
Tran Van Tam 7761122
Vo Van Dung 9787878
Vo An 9998899
Khi dùng lệnh grep tìm dòng có tên Hau thì: $ grep Hau phonebook Nguyen Hau 98233131
Hoặc $ grep An phonebook Nguyen van An 8822191 Vo An 9998899
Nếu ta muốn chọn chuỗi Vo An thì hệ thống báo lỗi $ grep Vo An phonebook grep: An: no such file or direetory phonebook: Vo van Dung 9787878
phonebook: Vo An 9998899
Vì theo cú pháp của lệnh grep đối số đầu tiên cho biết chuỗi ký tự cần tìm và các đối số kế tiếp là tên các tập tin được truy tìm; xem sơ đồ phân tích sẽ thấy rõ ý tưởng này Khi dùng lệnh grep tìm dòng có tên Hau thì: $ grep Hau phonebook Nguyen Hau 98233131
Hoặc $ grep An phonebook Nguyen van An 8822191 Vo An 9998899
Nếu ta muốn chọn chuỗi Vo An thì hệ thống báo lỗi $ grep Vo An phonebook grep: An: no such file or direetory phonebook: Vo van Dung 9787878
phonebook: Vo An 9998899
Vì theo cú pháp của lệnh grep đối số đầu tiên cho biết chuỗi ký tự cần tìm và các đối số kế tiếp là tên các tập tin được truy tìm; xem sơ đồ phân tích sẽ thấy
rõ ý tưởng này
Trang 16Lúc này cặp dấu nháy đơn ‘…’ cần thiết để báo cho shell biết chuỗi ‘Vo An‘ là một đối số
$ grep ’Vo An’ phonebook
Trang 17Tuy nhiên chú ý
$ echo ’* means all files in this directory’
* means all files in this directory
$ T=’* means all files in this directory’
$ echo $T
myfile newfile testfile Zdir means all files in this directory
Vì shell gán giá trị biến T xong thì gán tiếp giá trị tên tập tin cho dấu *.
Trang 18Dấu slash ngược
Dấu slash ngược
Dấu nháy ngượ c
Dấu nháy ngượ c
3.3 Dấu nháy kép “…”
Dấu nháy kép hoạt động tương tự nháy đơn nhưng có vài sự khác biệt Trong dấu nháy kép có 3 ký
tự sau đây không được bỏ qua chức năng của chúng
Trang 19* means all files in this dir
$ ADDRESS =”59C Nguyen dinh Chieu,
> Quan 3, Tp HCM”
$ echo $ADDRESS
59C Nguyen dinh Chieu, Quan 3, Tp HCM
(shell biên dịch bỏ qua ký tự xuống dòng mới [newline] trong ADDRESS vì nó xem đó là dấu phân cách đối số thông thường)
Trang 203.4 Dấu slash ngược \
• Về mặt cơ bản dấu \ có vẽ giống như ý nghĩa cặp dấu nháy đơn ‘ ’ cho ký tự liền sau dấu \, nhưng có vài
điểm khác biệt như sau
• Ví Dụ:
$ echo >
bash: syntax error near unexpected token ’>‘
(shell hiểu ký tự > ám chỉ sự định hướng dữ liệu nên thấy thiếu đối số chỉ tên tập tin)
Trang 214 Biểu thức tính toán trong shell
Trang 235.2 Cấu trúc elif
• Khi có nhiều điều kiện lồng vào nhau như hình bên trái thì shell cho phép dùng elif thay “else if”, và chỉ cần dùng một chữ fi để kết thúc tất cả các điều kiện như hình bên phải; tuy nhiên cách này sẽ tạo khó khăn khi ta cần debug chương trình.
Trang 25Trong phần mô tả trên, lần thi hành thứ nhất giá trị word1 được gán cho biến var, lần thứ hai giá trị word2 được gán cho biến var và lần thứ n giá trị wordn được gán cho biến var
Trang 265.4 Vòng lặp while:
Dạng của vòng lặp while là:
• Trước tiên lệnh test–command được thực hiện và shell xem giá trị trả về của nó; nếu giá trị trả về là 0 thì các lệnh command 1 command k nằm giữa cặp từ khoá do done được thực hiện; kế đó lệnh test–command được thực hiện lại nếu giá trị trả về lại là 0 thì tập lệnh lại được thực hiện và cứ thế cho đến khi nào lệnh test–command trả vì giá trị khác 0 thì vòng lặp được chấm dứt và shell tiếp tục phần sau từ khoá done
• $ cat shwhile $ shwhile
command k done
Trang 28Thí dụ 2: Tính giai thừa của n