Create by : https://globalizethis.org Show
Shell là một chương trình thông dịch lệnh của một hệ điều hành, cung cấp cho người dùng khả năng tương tác với hệ điều hành bằng cách gõ từng lệnh ở chế độ dòng lệnh, đồng thời trả lại kết quả thực hiện lệnh lại cho người sử dụng. Shell cung cấp tập hợp các lệnh đặc biệt mà từ đó có thể tạo nên chương trình, khi đó được gọi là shell script. Bạn đang xem: Cách Chạy File .Sh Là Gì ? Phần Mềm & Cách Mở File Sự Khác Nhau Giữa Sh Và Bash Bạn đang xem: File .sh là gì Ngoài các lệnh đơn giản của hệ thống Unix shell còn bổ sung thêm các cấu trúc phức tạp như điều khiển rẽ nhánh,vòng lặp. Trong MS-DOS thì shell chính là Command, trong Linux thì có nhiều loại shell khác nhau như sh, zsh, bash, csh… Xem thêm: Phường, Khu Phố Tiếng Anh Là Gì ? Giải Nghĩa Từ Khu Phố Trong Tiếng Anh trong đó phổ biến nhất vẫn là bash shell (shell mặc định cho rất nhiều distro khác nhau). Nếu bạn là người sử dụng terminal hàng ngày thì cái bạn phải nhìn thấy nhiều nhất chính là cái gọi là “Command prompt”, nó chính là cái này: Phía sau $ chúng ta có thể bắt đầu gõ lệnh ~ $ dateThứ năm, 26 Tháng mười một năm 2015 17:50:04 ICTChúng ta có thể làm đuợc nhiều thứ vui vẻ với prompt này bằng cách thay biến PS1, tham khảo thêm ở đây: Bash Shell PS1: 10 Examples to Make Your Linux Prompt like Angelina Jolie Có 2 loại shell chính: Bourne shell (mặc định có dấu nhắc lệnh là $ như ở trên)C shell (dấu nhắc lệnh là %) Trong Bourne shell còn có các loại khác nhau như: Bourne shell (sh)Korn shell (ksh)Bourne Again shell (bash)POSIX shell (sh) C shell thì có: C shell (csh)TENEX/TOPS C shell (tcsh) Về cơ bản shell script là 1 tập hợp các lệnh được thực thi nối tiếp nhau, bắt đầu 1 shell script thường có ghi chú comment mở đầu bằng # như này: ~ $ bash test.shXin chào, thao!Hôm nay là ngày Thứ năm, 26 Tháng mười một năm 2015 18:19:25 ICT variable_name=variable_valueVí dụ: ~ $ THAO=”Nguyễn Thế Thạo” ~ $ readonly THAO ~ $ THAO=”Muốn Thay Tên Khác”bash: THAO: readonly variable ~ $ a=”value” ~ $ echo $avalue ~ $ unset a ~ $ echo $a ~ $ Biến hệ thống: tạo ra và quản lý bởi system, tên là chữ hoa, ví dụ ~ $ echo $SHELL/bin/bash ~ $ echo $TERMxtermBiến do người dùng định nghĩa: tạo ra và quản lý bởi người dùng, tên lung tung, thỏa mãn yêu cầu đặt tên của shell. NAME=”Zara”NAME=”Qadir”NAME=”Mahnaz”NAME=”Ayan”NAME=”Daisy”Nếu dùng ksh shell thì có thể khai báo: set -A array_name value1 value2 … valuenNếu dùng bash shell thì khai báo thế này: array_name=(value1 … valuen)Để sử dụng 1 giá trị trong mảng: ${array_name}hoặc tất cả giá trị trong mảng: ${array_name}${array_name>}Ví dụ: #!/bin/shNAME=”Zara”NAME=”Qadir”NAME=”Mahnaz”NAME=”Ayan”NAME=”Daisy”echo “First Index: ${NAME}”echo “Second Index: ${NAME}”echo “First Method: ${NAME}”echo “Second Method: ${NAME>}”Kết quả: $./test.shFirst Index: ZaraSecond Index: QadirFirst Method: Zara Qadir Mahnaz Ayan DaisySecond Method: Zara Qadir Mahnaz Ayan Daisy Để thực hiện các phép toán số học, cần dùng expr để thực hiện: #!/bin/shval=`expr 2 + 2`echo “Total value : $val”Kết quả: Total value : 4Với $a có giá trị 10 và $b có giá trị 20, ta có bảng sau: Xem thêm : Đừng bỏ qua những điều này khi mua máy khắc laser Phép tínhÝ nghĩaVí dụ
Vẫn với $a có giá trị 10 và $b có giá trị 20, ta có bảng sau: Phép tínhÝ nghĩaVí dụ
Ví dụ: Xem thêm : Mối quan hệ giữa vật chất và ý thức liên hệ bản thân #!/bin/sha=10b=20if then echo “a is equal to b”fiif then echo “a is equal to b”elif then echo “a is greater than b”elif then echo “a is less than b”else echo “None of the condition met”fi Vòng lặp while#!/bin/sha=0while do echo $a a=`expr $a + 1`doneVòng lặp for#!/bin/shfor var in 0 1 2 3 4 5 6 7 8 9do echo $vardoneVòng lặp until#!/bin/sha=0until do echo $a a=`expr $a + 1`doneVòng lặp select#!/bin/kshselect DRINK in tea cofee water juice appe all nonedo case $DRINK in tea|cofee|water|all) echo “Go to canteen” ;; juice|appe) echo “Available at home” ;; none) break ;; *) echo “ERROR: Invalid selection” ;; esacdoneKết quả của vòng select $./test.sh1) tea2) cofee3) water4) juice5) appe6) all7) none#? juiceAvailable at home#? none #!/bin/sh# Define your function hereHello () { echo “Hello World”}# Invoke your functionHelloChạy script $./test.shHello WorldDùng hàm với parameters: #!/bin/sh# Define your function hereHello () { echo “Hello World $1 $2 $3”}# Invoke your functionHello Nguyễn Thế ThạoKết quả: $./test.shHello World Nguyễn Thế ThạoLấy kết quả trả về từ hàm #!/bin/sh# Define your function hereHello () { echo “Hello World $1 $2 $3” return 10}# Invoke your functionHello Nguyễn Thế Thạo# Capture value returnd by last commandret=$?echo “Return value is $ret”Kết quả: $./test.shHello World Nguyễn Thế ThạoReturn value is 10 Chạy thử một số script vô dụng này cho vui các bạn nhé
Shell là một chương trình thông dịch lệnh của một hệ điều hành, cung cấp cho người dùng khả năng tương tác với hệ điều hành bằng cách gõ từng lệnh ở chế độ dòng lệnh, đồng thời trả lại kết quả thực hiện lệnh lại cho người sử dụng. Shell cung cấp tập hợp các lệnh đặc biệt mà từ đó có thể tạo nên chương trình, khi đó được gọi là shell script. Ngoài các lệnh đơn giản của hệ thống Unix shell còn bổ sung thêm các cấu trúc phức tạp như điều khiển rẽ nhánh,vòng lặp. Trong MS-DOS thì shell chính là Command, trong Linux thì có nhiều loại shell khác nhau như sh, zsh, bash, csh... trong đó phổ biến nhất vẫn là bash shell (shell mặc định cho rất nhiều distro khác nhau). Shell PromptNếu bạn là người sử dụng terminal hàng ngày thì cái bạn phải nhìn thấy nhiều nhất chính là cái gọi là “Command prompt”, nó chính là cái này: Phía sau $ chúng ta có thể bắt đầu gõ lệnh [email protected] ~ $ date Thứ năm, 26 Tháng mười một năm 2015 17:50:04 ICTChúng ta có thể làm đuợc nhiều thứ vui vẻ với prompt này bằng cách thay biến PS1, tham khảo thêm ở đây: Bash Shell PS1: 10 Examples to Make Your Linux Prompt like Angelina Jolie Shell typesCó 2 loại shell chính:
Trong Bourne shell còn có các loại khác nhau như:
C shell thì có:
Shell ScriptVề cơ bản shell script là 1 tập hợp các lệnh được thực thi nối tiếp nhau, bắt đầu 1 shell script thường có ghi chú comment mở đầu bằng # như này: #!/bin/bash # Author : Không AI # Copyright (c) Viblo.asia # Script chạy linh tinh lắm HELLO="Xin chào, " HELLO=$(printf "%s %s" "$HELLO" "$(whoami)" "!") DAY="Hôm nay là ngày " DAY=$(printf "%s %s" "$DAY" "$(date)") echo $HELLO echo $DAY
kết quả: [email protected] ~ $ bash test.sh Xin chào, thao! Hôm nay là ngày Thứ năm, 26 Tháng mười một năm 2015 18:19:25 ICTBiến trong shellĐặt tênNhư mọi ngôn ngữ khác, tên biến chỉ bao gồm các chữ cái a đến z, từ A đến Z, chữ số từ 0 tới 9 và dấu _, tên biến không được bắt đầu bằng chữ số. Khai báovariable_name=variable_valueVí dụ: THAO="Nguyễn Thế Thạo"Sử dụngTHAO="Nguyễn Thế Thạo" echo $THAOBiến Read-onlySau khi khai báo biến này, thì giá trị của biến không thể bị thay đổi. [email protected] ~ $ THAO="Nguyễn Thế Thạo" [email protected] ~ $ readonly THAO [email protected] ~ $ THAO="Muốn Thay Tên Khác" bash: THAO: readonly variableXóa giá trị của biến[email protected] ~ $ a="value" [email protected] ~ $ echo $a value [email protected] ~ $ unset a [email protected] ~ $ echo $a [email protected] ~ $Các loại biến
MảngNAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy"Nếu dùng ksh shell thì có thể khai báo: set -A array_name value1 value2 ... valuenNếu dùng bash shell thì khai báo thế này: array_name=(value1 ... valuen)Để sử dụng 1 giá trị trong mảng: ${array_name[index]}hoặc tất cả giá trị trong mảng: ${array_name[*]} ${array_name[@]}Ví dụ: #!/bin/sh NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz" NAME[3]="Ayan" NAME[4]="Daisy" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}" echo "First Method: ${NAME[*]}" echo "Second Method: ${NAME[@]}"Kết quả: $./test.sh First Index: Zara Second Index: Qadir First Method: Zara Qadir Mahnaz Ayan Daisy Second Method: Zara Qadir Mahnaz Ayan DaisyCác phép toán số họcĐể thực hiện các phép toán số học, cần dùng expr để thực hiện: #!/bin/sh val=`expr 2 + 2` echo "Total value : $val"Kết quả: Total value : 4Với $a có giá trị 10 và $b có giá trị 20, ta có bảng sau:
Phép toán quan hệVẫn với $a có giá trị 10 và $b có giá trị 20, ta có bảng sau:
Cấu trúc rẽ nhánhVí dụ: #!/bin/sh a=10 b=20 if [ $a == $b ] then echo "a is equal to b" fi if [ $a == $b ] then echo "a is equal to b" elif [ $a -gt $b ] then echo "a is greater than b" elif [ $a -lt $b ] then echo "a is less than b" else echo "None of the condition met" fiCấu trúc lặpVòng lặp while#!/bin/sh a=0 while [ $a -lt 10 ] do echo $a a=`expr $a + 1` doneVòng lặp for#!/bin/sh for var in 0 1 2 3 4 5 6 7 8 9 do echo $var doneVòng lặp until#!/bin/sh a=0 until [ ! $a -lt 10 ] do echo $a a=`expr $a + 1` doneVòng lặp select#!/bin/ksh select DRINK in tea cofee water juice appe all none do case $DRINK in tea|cofee|water|all) echo "Go to canteen" ;; juice|appe) echo "Available at home" ;; none) break ;; *) echo "ERROR: Invalid selection" ;; esac doneKết quả của vòng select $./test.sh 1) tea 2) cofee 3) water 4) juice 5) appe 6) all 7) none #? juice Available at home #? noneHàm#!/bin/sh # Define your function here Hello () { echo "Hello World" } # Invoke your function HelloChạy script $./test.sh Hello WorldDùng hàm với parameters: #!/bin/sh # Define your function here Hello () { echo "Hello World $1 $2 $3" } # Invoke your function Hello Nguyễn Thế ThạoKết quả: $./test.sh Hello World Nguyễn Thế ThạoLấy kết quả trả về từ hàm #!/bin/sh # Define your function here Hello () { echo "Hello World $1 $2 $3" return 10 } # Invoke your function Hello Nguyễn Thế Thạo # Capture value returnd by last command ret=$? echo "Return value is $ret"Kết quả: $./test.sh Hello World Nguyễn Thế Thạo Return value is 10Một số ví dụChạy thử một số script vô dụng này cho vui các bạn nhé Kết luậnNguồn: Tutorialspoint |