Trong windows chúng ta có batch file, trong linux có Shell Script. Nói chung shell là chương trình có thể tương tác người dùng, có thể input dữ liệu, có thể output ra màn hình, có thể tự động thực thi một nhóm lệnh do chúng ta tạo ra theo một lịch trình đã thiết lập.
1. Cách tạo và thực thi một chương trình shell
- Tạo file hello.sh với nội dung:
#!/bin/bash
echo "hello world"
- Thiết lập user có quyền (x) được phép thực thi cho file hello.sh
chmod u+x hello.sh
- Chạy chương trình - file hello.sh vừa tạo
Có thể thực hiện 1 trong 3 cách như dưới
- sh hello.sh- bash hello.sh- ./hello.sh
Ví dụ:
khanhvc@ubutu:~/projects/shell$ sh hello.sh
hello world
2. Shell variables
2.1 Biến của hệ thống: dùng lệnh printenv để in ra các biến đang tồn tại trong hệ thống linux
khanhvc@ubutu:~/projects/shell$ printenvSHELL=/bin/bashLC_ADDRESS=vi_VNLC_NAME=vi_VNLC_MONETARY=vi_VNPWD=/home/khanhvc/projects/shellLOGNAME=khanhvcXDG_SESSION_TYPE=ttyMOTD_SHOWN=pamHOME=/home/khanhvcLC_PAPER=vi_VNLANG=en_US.UTF-8LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:SSH_CONNECTION=192.168.0.48 63977 192.168.0.73 22LESSCLOSE=/usr/bin/lesspipe %s %sXDG_SESSION_CLASS=userLC_IDENTIFICATION=vi_VNTERM=xtermLESSOPEN=| /usr/bin/lesspipe %sUSER=khanhvcSHLVL=1LC_TELEPHONE=vi_VNLC_MEASUREMENT=vi_VNXDG_SESSION_ID=330XDG_RUNTIME_DIR=/run/user/1000SSH_CLIENT=192.168.0.48 63977 22LC_TIME=vi_VNXDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktopPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binDBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/busSSH_TTY=/dev/pts/0LC_NUMERIC=vi_VNOLDPWD=/home/khanhvc/projects_=/usr/bin/printenvkhanhvc@ubutu:~/projects/shell$
Ví dụ: Tạo file demo.sh để in các thông tin các biến theo yêu cầu dưới:
- Thông tin version của shell hiện tại
- Tên của shell
- Thư mục gốc của user hiện tại
- Thông tin đường dẫn đã được thiết lập
#!/bin/bashecho $BASH_VERSIONecho $BASHecho $HOMEecho $PATH
khanhvc@ubutu:~/projects/shell$ ./demo.sh5.0.17(1)-release/bin/bash/home/khanhvc/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binkhanhvc@ubutu:~/projects/shell$
2.2 Biến do người dùng định nghĩa UDV - User Defined variables, biến CÓ phân biệt chữ hoa, chữ thường
- Cú pháp:
ten_bien=gia_tri
- Ví dụ:
#!/bin/basha=6b=3expr $a + $b
- Ví dụ khác:
#!/usr/bin/basha=6b=3tong=$(expr $a + $b)echo "Ket qua cua a CONG b = " $tonghieu=$(expr $a - $b)echo "Ket qua cua a TRU b = " $hieuthuong=$(expr $a / $b)echo "Ket qua cua a CHIA b = " $thuong#phép nhân chúng ta phải thêm dấu "\" trước dấu "*" để thực hiện phép nhântich=$(expr $a \* $b)echo "Ket qua cua a NHAN b = " $tich
khanhvc@ubutu:~/projects/shell$ sh demo.shKet qua cua a CONG b = 9Ket qua cua a TRU b = 3Ket qua cua a CHIA b = 2Ket qua cua a NHAN b = 18khanhvc@ubutu:~/projects/shell$
- Ví dụ
#!/usr/bin/basha=6let a+=1echo "a = 6, a + 1 = " ${a}let b=a+1echo "b = a + 1 = " $blet c=a+becho "c = a + b = " $c
- Kết quả:
khanhvc@ubutu:~/projects/shell$ ./demo.sha = 6, a + 1 = 7b = a + 1 = 8c = a + b = 15khanhvc@ubutu:~/projects/shell$
2.2.3 “bc” – An arbitrary precision calculator language”
- Ví dụ:
#!/usr/bin/bash#in ra kết quả của 5 + 3echo "5 + 3" | bc#in ra kết quả là giá trị của x + yx=10y=20echo "$x + $y" | bc#in ra kết quả là giá trị của x + ybc <<< "$x + $y"
- Kết quả:
khanhvc@ubutu:~/projects/shell$ ./demo.sh83030khanhvc@ubutu:~/projects/shell$
Xong!
No comments:
Post a Comment