Saturday, July 11, 2015

Bài viết liên quan:
+ Linux Architecture


1. Shell
Shell là một chương trình thông dịch, có tác dụng dịch các user requests thành các chương trình thực thi dưới kernel và trả về kết quả cho user. Shell nhận requests từ stdin, xuất kết quả ra stdoutstderr, thể hiện qua màn hình terminal vì thế còn gọi là CLIs - Command Line Interfaces.

                

            

Shell bao gồm các câu lệnh được xây dựng sẵn, user có thể chạy lệnh trược tiếp trên Terminal (Shell prompt) hoặc thông qua các hàm gọi trong các chương trình Application. Trong Shell cũng được xây dựng một môi trường bao gồm các biến, cấu trúc điều kiện, điều khiển,... tương tự như ngôn ngữ lập trình bậc cao như C/C++, vì thế có thể viết một đoạn mã lệnh shell trong một script (shell script), công việc đó có thể gọi là Shell programming.

1.1 Shell prompt
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$ date  
 Tue Jul 7 22:51:47 ICT 2015  
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$ ls -l  
 total 128  
 drwxrwxr-x. 5 ninhld ninhld 4096 Feb 19 00:29 carmeter  
 drwxr-xr-x. 2 ninhld ninhld 49152 Jun 7 21:33 Desktop  
 drwxr-xr-x. 10 ninhld ninhld 4096 Jul 5 17:26 Documents  
 drwxr-xr-x. 2 ninhld ninhld 4096 Jul 7 22:36 Downloads  
 drwx------. 14 ninhld ninhld 4096 Jul 7 20:45 Dropbox  
 drwxrwxr-x. 5 ninhld ninhld 4096 Mar 14 19:38 freescale  
 drwxrwxr-x. 7 ninhld ninhld 4096 Jun 28 21:49 Github  
 drwxrwxr-x. 3 ninhld ninhld 4096 Dec 10 2014 GoldenDict  
 drwxrwxrwx. 8 ninhld ninhld 4096 Jun 29 22:00 mini2440  
 drwxr-xr-x. 2 ninhld ninhld 4096 Jun 28 22:23 Music  
 drwxr-xr-x. 4 ninhld ninhld 16384 Jul 5 22:41 Pictures  
 drwxr-xr-x. 2 ninhld ninhld 4096 Dec 10 2014 Public  
 drwx------. 2 ninhld ninhld 4096 May 30 15:58 SkypeDownload  
 drwxr-xr-x. 2 ninhld ninhld 4096 Dec 10 2014 Templates  
 drwxr-xr-x. 3 ninhld ninhld 4096 Jul 7 22:29 Videos  
 drwxrwxr-x. 4 ninhld ninhld 4096 May 23 21:02 VirtualBox VMs  
 drwxrwxr-x. 5 ninhld ninhld 4096 May 24 10:51 workspace  
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$ uptime   
  22:51:58 up 2:08, 3 users, load average: 0.58, 0.54, 0.53  
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$  

hoặc
 [ninhld@localhost ex]$ for txt in hello everybody ^_^   #enter here
 > do  
 > echo $txt  
 > done  
 hello  
 everybody  
 ^_^  
 [ninhld@localhost ex]$   

1.2 Shell script 
helloworld.sh
 #!/bin/sh  
 for txt in Hello everybody ^_^  
 do  
 echo $txt  
 done  
 exit 0  

 [ninhld@localhost ex]$ chmod 755 helloworld.sh   
 [ninhld@localhost ex]$ ./helloworld.sh  
 Hello  
 everybody  
 ^_^  
 [ninhld@localhost ex]$   

1.3 Shell comments
Khi dùng shell script cần có các ghi chú vì thế shell cung cấp ký tự # để dùng làm comments
 #!/bin/bash  
   
 # Author : ninhld  
 # Copyright (c) eslinuxprogramming.blogspot.com  
 # Script follows here:  
 pwd  
 ls  

2. Các loại Shell
Hiện có nhiều phiên bản shell chạy trên các bản phân phối khác nhau của Linux.

Tuy nhiên trong phạm vi của các bản phân phối Ubuntu / FedoraEmbedded Linux mà chúng ta đề cập trong blog này thì chỉ quan tâm đễn shbash mà thôi.

Khi viết một shell script thường sẽ đi kèm với một dấu hiệu nhận biết loại shell như dưới đây:
 #!/bin/sh  
   
 hoặc  
   
 #!/bin/bash  

Phần đuôi mở rộng của script được dùng là ".sh", xem lại ví dụ helloworld.sh ở trên.

3. Cách chạy chương trình Shell
Shell script có thuộc tính executeable tương tự nhu file nhị phân, vì thế để chạy chương trình shell cần thỏa mãn hai điều kiện:
+ Được cấp quyền "x" bằng các lệnh chmod, chown, chgrp (File Permissions)
+ Shell script được chạy bằng đường dẫn tuyệt đối hoặc qua biến môi trường PATH

 [ninhld@localhost ex]$   
 [ninhld@localhost ex]$ chmod 755 helloworld.sh   #cấp quyền executeable
 [ninhld@localhost ex]$ ./helloworld.sh   #execute bằng đường dẫn cụ thể
 Hell  
 everybody  
 ^_^  
 [ninhld@localhost ex]$   
 [ninhld@localhost ex]$   
 [ninhld@localhost ex]$ pwd  
 /home/ninhld/Github/eslinuxprogramming/Shell/ex  
 [ninhld@localhost ex]$   
 [ninhld@localhost ex]$ cd $HOME       #chuyển thư mục
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$ export PATH=$PATH:/home/ninhld/Github/eslinuxprogramming/Shell/ex  
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$ helloworld.sh   #execute script thông qua biến môi trường PATH
 Hello  
 everybody  
 ^_^  
 [ninhld@localhost ~]$  


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -