/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Basic Shell Script In Linux/Ubuntu/CentOS - P1

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"

Giải thích: 
- #!/bin/bash: là shellbang, là dòng bắt buộc trong shell script
- echo "hello world": Khi chạy file hello.sh nó sẽ xuất ra màn hình chữ "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$ printenv
SHELL=/bin/bash
LC_ADDRESS=vi_VN
LC_NAME=vi_VN
LC_MONETARY=vi_VN
PWD=/home/khanhvc/projects/shell
LOGNAME=khanhvc
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/home/khanhvc
LC_PAPER=vi_VN
LANG=en_US.UTF-8
LS_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 22
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
LC_IDENTIFICATION=vi_VN
TERM=xterm
LESSOPEN=| /usr/bin/lesspipe %s
USER=khanhvc
SHLVL=1
LC_TELEPHONE=vi_VN
LC_MEASUREMENT=vi_VN
XDG_SESSION_ID=330
XDG_RUNTIME_DIR=/run/user/1000
SSH_CLIENT=192.168.0.48 63977 22
LC_TIME=vi_VN
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
SSH_TTY=/dev/pts/0
LC_NUMERIC=vi_VN
OLDPWD=/home/khanhvc/projects
_=/usr/bin/printenv
khanhvc@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 
Nội dung file demo.sh
#!/bin/bash
echo $BASH_VERSION
echo $BASH
echo $HOME
echo $PATH

Kết quả:
khanhvc@ubutu:~/projects/shell$ ./demo.sh
5.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/bin
khanhvc@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

2.2.1 EXPR
  • Ví dụ:
#!/bin/bash
a=6
b=3
expr $a + $b
Kết quả là: 9, vì nó lấy giá trị của a cộng cho giá trị của b

  • Ví dụ khác:
#!/usr/bin/bash
a=6
b=3

tong=$(expr $a + $b)
echo "Ket qua cua a CONG b = " $tong

hieu=$(expr $a - $b)
echo "Ket qua cua a TRU b = " $hieu

thuong=$(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ân
tich=$(expr $a \* $b)
echo "Ket qua cua a NHAN b = " $tich
Kết quả:
khanhvc@ubutu:~/projects/shell$ sh demo.sh
Ket qua cua a CONG b =  9
Ket qua cua a TRU b =  3
Ket qua cua a CHIA b =  2
Ket qua cua a NHAN b =  18
khanhvc@ubutu:~/projects/shell$

2.2.2 LET

  • Ví dụ 

#!/usr/bin/bash
a=6
let a+=1
echo "a = 6, a + 1 = " ${a}

let b=a+1
echo "b = a + 1 = " $b

let c=a+b
echo "c = a + b = " $c
  • Kết quả:
khanhvc@ubutu:~/projects/shell$ ./demo.sh
a = 6, a + 1 =  7
b = a + 1 =  8
c = a + b =  15
khanhvc@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 + 3
echo "5 + 3" | bc

#in ra kết quả là giá trị của x + y
x=10
y=20
echo "$x + $y" | bc

#in ra kết quả là giá trị của x + y
bc <<< "$x + $y"
  • Kết quả:
khanhvc@ubutu:~/projects/shell$ ./demo.sh
8
30
30
khanhvc@ubutu:~/projects/shell$

P/s: Kiểm tra câu lệnh chạy trong linux chúng ta dùng echo $? nếu kết quả số 0 thì câu lệnh kết thúc thành công, ngược lại là lỗi


Xong!

No comments:

Post a Comment

/*header slide*/