File .Sh Là Gì

     

Shell là 1 trong chương trình thông ngôn lệnh của một hệ điều hành, cung cấp cho tất cả những người dùng kĩ năng tương tác với hệ điều hành bằng phương pháp gõ từng lệnh ở chính sách dòng lệnh, bên cạnh đó trả lại công dụng thực hiện nay lệnh lại cho người sử dụng. Shell cung cấp tập hợp những lệnh đặc trưng mà từ bỏ đó có thể tạo bắt buộc chương trình, khi này được gọi là shell script.

Bạn đang xem: File .sh là gì

Ngoài những lệnh đơn giản và dễ dàng của khối hệ thống Unix shell còn bổ sung thêm các kết cấu phức tạp như điều khiển và tinh chỉnh rẽ nhánh,vòng lặp. Vào MS-DOS thì shell đó là Command, trong Linux thì có không ít loại shell không giống nhau như sh, zsh, bash, csh... Vào đó phổ cập nhất vẫn luôn là bash shell (shell khoác định cho không hề ít distro không giống nhau).

Shell Prompt

Nếu các bạn là người tiêu dùng terminal hàng ngày thì cái chúng ta phải nhận thấy nhiều nhất đó là cái gọi là “Command prompt”, nó chính là cái này:

*

Phía sau $ bạn cũng có thể bắt đầu gõ lệnh

~ $ dateThứ năm, 26 tháng mười 1 năm 2015 17:50:04 ICTChúng ta có thể làm đuợc những thứ niềm vui với prompt này bằng cách thay biến đổi PS1, tham khảo thêm ở đây: Bash Shell PS1: 10 Examples lớn Make Your Linux Prompt lượt thích Angelina Jolie

Shell types

Có 2 loại shell chính:

Bourne shell (mặc định bao gồm dấu nhắc lệnh là $ như sinh hoạt trên)C shell (dấu đề cập lệnh là %)

Trong Bourne shell còn tồn tại các loại không giống 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)

Shell Script

Về cơ bản shell script là một tập hợp những lệnh được thực thi nối liền nhau, bước đầu 1 shell script thông thường sẽ có ghi chú comment khởi đầu bằng # như này:

~ $ bash test.shXin chào, thao!Hôm ni là ngày đồ vật năm, 26 mon mười một năm 2015 18:19:25 ICT

Biến vào shell

Đặt tên

Như mọi ngôn từ khác, tên biến đổi chỉ bao hàm các vần âm a mang đến z, từ bỏ A đến Z, chữ số từ 0 cho tới 9 với dấu _, tên biến chuyển không được ban đầu bằng chữ số.

Xem thêm: Tập Văn Cúng Gia Tiên - (Văn Khấn Nôm Tại Nhà)

Khai báo

variable_name=variable_valueVí dụ:

THAO="Nguyễn nỗ lực Thạo"

Sử dụng

THAO="Nguyễn vắt Thạo"echo $THAO

Biến Read-only

Sau khi khai báo vươn lên là này, thì cực hiếm của trở nên không thể bị nạm đổi.

Xem thêm: Cách Làm Chân Gà Chiên Nước Mắm Cực Ngon, Hấp Dẫn Dễ Làm Tại Nhà

~ $ THAO="Nguyễn cố Thạo" ~ $ readonly THAO ~ $ THAO="Muốn cầm cố Tên Khác"bash: THAO: readonly variable

Xóa giá trị của biến

~ $ a="value" ~ $ echo $avalue ~ $ unset a ~ $ echo $a ~ $

Các các loại biến

Biến hệ thống: tạo ra và làm chủ bởi system, thương hiệu là chữ hoa, ví dụ ~ $ echo $SHELL/bin/bash ~ $ echo $TERMxtermBiến do người tiêu dùng định nghĩa: tạo thành và thống trị bởi tín đồ dùng, thương hiệu lung tung, thỏa mãn nhu cầu yêu cầu đặt thương hiệu của shell.

Mảng

NAME<0>="Zara"NAME<1>="Qadir"NAME<2>="Mahnaz"NAME<3>="Ayan"NAME<4>="Daisy"Nếu dùng ksh shell thì hoàn toàn có thể khai báo:

set -A array_name value1 value2 ... ValuenNếu sử dụng bash shell thì khai báo thế này:

array_name=(value1 ... Valuen)Để áp dụng 1 quý giá trong mảng:

$array_namehoặc tất cả giá trị vào mảng:

$array_name<*>$array_name<
>Ví dụ:

#!/bin/shNAME<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.shFirst Index: ZaraSecond Index: QadirFirst Method: Zara Qadir Mahnaz Ayan DaisySecond Method: Zara Qadir Mahnaz Ayan Daisy

Các phép toán số học

Để thực hiện các phép toán số học, nê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ó mức giá trị 10 và $b có giá trị 20, ta tất cả bảng sau:

Phép tínhÝ nghĩaVí dụ
+Phép cộngexpr $a + $b trả tác dụng 30
-Phép trừexpr $a - $b trả hiệu quả -10
*Phép nhânexpr $a * $b trả kết quả 200
/Phép chiaexpr $b / $a trả hiệu quả 2
%Phép phân tách lấy dưexpr $b % $a trả hiệu quả 0
=Gán giá trịa=$b giá trị của b đã gán mang lại $a, tiếng $a có giá trị là 20
==So sánh bằng, trả về true trường hợp 2 biến đổi cùng giá chỉ trị< $a == $b > trả về false
!=So sánh không bằng, trả về true ví như 2 đổi thay khác giá trị< $a == $b > trả về true

Phép toán quan liêu hệ

Vẫn cùng với $a có giá trị 10 với $b có giá trị 20, ta tất cả bảng sau:

Phép tínhÝ nghĩaVí dụ
-eqKiểm tra cực hiếm 2 toán tử có đều nhau hay không, bằng thì trả về true< $a -eq $b > trả hiệu quả không đề xuất là true
-neKiểm tra giá trị 2 toán tử có cân nhau hay không, ko thì trả về true< $a -ne $b > trả hiệu quả true
-gtKiểm tra quý giá của toán tử phía trái có to hơn giá trị bên buộc phải hay không, bao gồm trả về true< $a -gt $b > trả hiệu quả không nên là true
-ltKiểm tra cực hiếm của toán tử phía bên trái có bé dại hơn giá trị bên nên hay không, tất cả trả về true< $a -lt $b > trả hiệu quả true
-geKiểm tra giá trị của toán tử phía bên trái có to hơn hoặc bởi giá trị bên đề xuất hay không, gồm trả về true< $a -ge $b > trả kết quả không đề xuất là true
-leKiểm tra quý giá của toán tử bên trái có nhỏ tuổi hơn hoặc bằng giá trị bên phải hay không, bao gồm trả về true< $a -le $b > trả tác dụng là true

Cấu trúc rẽ nhánh

Ví dụ:

#!/bin/sha=10b=20if < $a == $b >then echo "a is equal lớn b"fiif < $a == $b >then echo "a is equal lớn 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"fi

Cấu trúc lặp

Vòng lặp while#!/bin/sha=0while < $a -lt 10 >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 < ! $a -lt 10 >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

Hàm

#!/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 vắt ThạoKết quả:

$./test.shHello World Nguyễn cố kỉnh ThạoLấy tác dụng trả về trường đoản cú hàm

#!/bin/sh# Define your function hereHello () echo "Hello World $1 $2 $3" return 10# Invoke your functionHello Nguyễn thay Thạo# Capture value returnd by last commandret=$?echo "Return value is $ret"Kết quả:

$./test.shHello World Nguyễn rứa ThạoReturn value is 10

Một số ví dụ

Chạy thử một số script vô bổ này cho vui các bạn nhé
*
(nhắc lại là vô dụng, chỉ khiến cho vui thôi nhé)

#!/bin/shfor i in 1..9; vày for j in $(seq 1 $i); vày echo -ne $i×$j=$((i*j))\t;done; echo;done#!/bin/bashstr=" 0 1 2 3 45 6 7 8 9 q w e r t y u o pa sd fgh jk lizxcvbnmQ WER TY U O p A S D FG HJ KLZX CV B NM"color<0>="E<30;40m"color<1>="E<31;40m"color<2>="E<34;40m"color<3>="E<37;40m"clearecho "hacking $1"sleep 2echo "Initializing"sleep 2echo "Server hacking module is loading"sleep 2echo "Server hacking module is ready"sleep 2echo "Hack module is starting in 5 seconds"sleep 1echo "4 seconds"sleep 1echo "3 seconds"sleep 1echo "2 seconds"sleep 1echo "1 seconds"sleep 1ping -c 3 $1sleep 2netstatsleep 1findsmbsleep 1for i in 1..10000do number1=$RANDOM let "number1 %= $#str"number2=$RANDOMlet "number2 %=4"echo -n -e "33<1m$color<$number2>$str:number1:133<0m"donesleep 3echo "$1 succesfully hacked!"sleep 1echo "PASSWORD ACCPTED: token is 453572345763425834756376534"#!/bin/bash#disables control ctrap "" 2# disables control ztrap "" SIGTSTPcolor="E<30;40m"clearecho "Formating disk(s): " /dev/sd*sleep 2echo "Initializing..."sleep 2echo -ne "Are you sure you want to format these disks?(y/n): "sleep 1echo "Y"sleep 1echo "formating starts in 5 seconds"sleep 1echo "4 seconds"sleep 1echo "3 seconds"sleep 1echo "2 seconds"sleep 1echo "1 second"sleep 1for i in 1..50000doecho -n -e "33<1m$color033<0m"donesleep 1echo ""echo /dev/sd* "are formatted."sleep 1echo "be sure to lớn make sure you reboot lớn clear operating system from RAM"

Kết luận