Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

15 คำสั่งในตัวของ Bash Shell ที่มีประโยชน์ (พร้อมตัวอย่าง)

15 คำสั่งในตัวของ Bash Shell ที่มีประโยชน์ (พร้อมตัวอย่าง)Bash มีคำสั่งหลายคำสั่งที่มาพร้อมกับเชลล์ (เช่น สร้างขึ้นภายใน bash shell)

เมื่อคุณรันคำสั่งในตัว bash shell จะรันคำสั่งนั้นทันที โดยไม่ต้องเรียกใช้โปรแกรมอื่น

คำสั่งในตัวของ Bash shell จะเร็วกว่าคำสั่งภายนอก เนื่องจากคำสั่งภายนอกมักจะแยกกระบวนการเพื่อดำเนินการ

ในบทความนี้ให้เราตรวจสอบ bash shell builtins ที่มีประโยชน์พร้อมตัวอย่าง

1. ตัวอย่างคำสั่งส่งออก Bash

คำสั่ง export ใช้เพื่อเอ็กซ์พอร์ตตัวแปรหรือฟังก์ชันไปยังสภาพแวดล้อมของโปรเซสลูกทั้งหมดที่ทำงานอยู่ในเชลล์ปัจจุบัน

export varname=value
export -f functionname # exports a function in the current shell.

มันส่งออกตัวแปรหรือฟังก์ชันด้วยค่า คำสั่ง “env” แสดงรายการตัวแปรสภาพแวดล้อมทั้งหมด ในตัวอย่างต่อไปนี้ คุณจะเห็นว่า env แสดงตัวแปรที่ส่งออก

$ export country=India

$ env
SESSIONNAME=Console
country=India
_=/usr/bin/env

คำสั่ง “export -p” ยังแสดงตัวแปรที่เอ็กซ์พอร์ตทั้งหมดในเชลล์ปัจจุบันด้วย

2. ตัวอย่างคำสั่ง Bash eval

คำสั่ง eval จะรวมอาร์กิวเมนต์ที่ให้มาทั้งหมดและประเมินนิพจน์ที่รวมกันและดำเนินการ และส่งคืนสถานะการออกของคำสั่งที่ดำเนินการ

$ cat evalex.sh
if [ ! -z $1 ]
then
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1"
else
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu"
fi
eval $proccomm

ข้อมูลโค้ดด้านบนยอมรับอาร์กิวเมนต์ ซึ่งเป็นรูปแบบสำหรับคำสั่ง grep รายการนี้จะแสดงรายการกระบวนการตามลำดับการใช้ cpu และ grep สำหรับรูปแบบเฉพาะที่กำหนดในบรรทัดคำสั่ง

หมายเหตุ: บทความนี้เป็นส่วนหนึ่งของ Bash Tutorial Series ที่กำลังดำเนินการอยู่

3. ตัวอย่างคำสั่ง Bash hash

คำสั่ง hash รักษาตารางแฮชซึ่งมีชื่อพาธของคำสั่งที่ใช้ เมื่อคุณรันคำสั่ง มันจะค้นหาคำสั่งในตัวแปร $PATH
แต่ถ้าคำสั่งนั้นมีอยู่ในตารางแฮช คำสั่งนั้นจะหยิบขึ้นมาจากที่นั่นและดำเนินการคำสั่งนั้น ตารางแฮชจะรักษาจำนวน Hit ที่พบสำหรับแต่ละคำสั่งที่ใช้ในเชลล์นั้นจนถึงตอนนี้

$ hash
hits command
 1 /usr/bin/cat
 2 /usr/bin/ps
 4 /usr/bin/ls

คุณสามารถลบคำสั่งเฉพาะออกจากตารางแฮชได้โดยใช้ตัวเลือก -d และตัวเลือก -r เพื่อรีเซ็ตตารางแฮชทั้งหมด

$ hash -d cat
$ hash
hits command
 2 /usr/bin/ps
 4 /usr/bin/ls

4. ตัวอย่างคำสั่ง Bash pwd

pwd เป็นคำสั่งในตัวของเชลล์เพื่อพิมพ์ไดเร็กทอรีการทำงานปัจจุบัน โดยทั่วไปจะส่งกลับค่าของตัวแปรในตัว ${PWD}

$pwd
/home/sasikala/bash/exercises

$echo $PWD
/home/sasikala/bash/exercises

5. Bash ตัวอย่างคำสั่งแบบอ่านอย่างเดียว

คำสั่ง readonly ใช้เพื่อทำเครื่องหมายตัวแปรหรือฟังก์ชันเป็นแบบอ่านอย่างเดียว ซึ่งไม่สามารถเปลี่ยนแปลงเพิ่มเติมได้

$ cat readonly_ex.sh
#!/bin/bash
# Restricting an array as a readonly
readonly -a shells=("ksh" "bash" "sh" "csh" );
echo ${#shells[@]}

# Trying to modify an array, it throws an error
shells[0]="gnu-bash"

echo ${shells[@]}

$ ./readonly_ex.sh
4
readonly_ex.sh: line 9: shells: readonly variable

6. ตัวอย่างคำสั่ง Bash shift

คำสั่ง shift ใช้เพื่อเลื่อนพารามิเตอร์ตำแหน่งไปทางซ้าย N จำนวนครั้ง และเปลี่ยนชื่อตัวแปรตามนั้นหลังจากขยับ

$ cat shift.sh
#! /bin/bash

while [ $# -gt 0 ]
do
 case "$1" in

 -l) echo "List command"
 ls
 shift
 ;;
 -p) echo "Process command"
 ps -a
 shift
 ;;
 -t) echo "Hash Table command"
 hash
 shift
 ;;
 -h) echo "Help command"
 help
 shift
 ;;
 esac
done

$./shift.sh -l -t
List command analysis break testing t1.sh temp Hash Table command
hits command
 1 /usr/bin/ls

7. ตัวอย่างคำสั่งทดสอบ Bash

คำสั่งทดสอบประเมินนิพจน์เงื่อนไขและส่งคืนศูนย์หรือหนึ่งตามการประเมิน ดูหน้าคู่มือของ bash สำหรับตัวดำเนินการทดสอบเพิ่มเติม

#! /bin/bash

if test -z $1
then
 echo "The positional parameter \$1 is empty"
fi

8. ตัวอย่างคำสั่ง bash getopts

คำสั่ง getopts ใช้เพื่อแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่งที่กำหนด เราสามารถกำหนดกฎสำหรับตัวเลือก เช่น ตัวเลือกใดยอมรับข้อโต้แย้ง และตัวเลือกใดไม่ยอมรับ ในคำสั่ง getopts หากตัวเลือกถูกตามด้วยโคลอน ก็คาดหวังอาร์กิวเมนต์สำหรับตัวเลือกนั้น

getopts มีตัวแปรสองตัวคือ $OPTIND และ $OPTARG ซึ่งมีดัชนีของพารามิเตอร์ถัดไปและอาร์กิวเมนต์ของตัวเลือกตามลำดับ

$ cat options.sh
#! /bin/bash

while getopts :h:r:l: OPTION
do
 case $OPTION in
 h) echo "help of $OPTARG"
 help "$OPTARG"
 ;;
 r) echo "Going to remove a file $OPTARG"
 rm -f "$OPTARG"
 ;;
 esac
done

$ ./options.sh -h jobs
help of jobs
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 Lists the active jobs. The -l option lists process id's in addition
 to the normal information; the -p option lists process id's only.

9. คำสั่งออกจากระบบ Bash

ล็อกเอาต์ในตัวใช้เพื่อออกจากเชลล์ปัจจุบัน

10. ตัวอย่างคำสั่ง Bash umask

คำสั่ง umask ตั้งค่ามาสก์การสร้างโหมดไฟล์สำหรับกระบวนการปัจจุบัน เมื่อผู้ใช้สร้างไฟล์ การอนุญาตเริ่มต้นจะขึ้นอยู่กับค่าที่ตั้งไว้ใน umask สิทธิ์เริ่มต้นสำหรับไฟล์คือ 666 และจะถูกปิดบังด้วยบิต umask เมื่อผู้ใช้สร้างไฟล์

สำหรับรายละเอียดเพิ่มเติม โปรดดูบทความ สิทธิ์อนุญาตไฟล์และไดเรกทอรี

เมื่อผู้ใช้สร้างไฟล์ 666 ถูกปิดบังด้วย 022 ดังนั้นการอนุญาตไฟล์เริ่มต้นจะเป็น 644

$ umask
0022

$ > temporary

$ ls -l temporary
-rw-r--r-- 1 root root 4 Jul 26 07:48 temporary

11. Bash set ตัวอย่างคำสั่ง

set เป็นคำสั่งในตัวของเชลล์ ซึ่งใช้ในการตั้งค่าและแก้ไขตัวแปรภายในของเชลล์ คำสั่ง set โดยไม่มีอาร์กิวเมนต์แสดงรายการตัวแปรทั้งหมดและเป็นค่าของมัน คำสั่ง set ยังใช้เพื่อตั้งค่าสำหรับพารามิเตอร์ตำแหน่ง

$ set +o history # To disable the history storing.
+o disables the given options.

$ set -o history
-o enables the history

$ cat set.sh
var="Welcome to thegeekstuff"
set -- $var
echo "\$1=" $1
echo "\$2=" $2
echo "\$3=" $3

$ ./set.sh
$1=Welcome
$2=to
$3=thegeekstuff

12. Bash unset ตัวอย่างคำสั่ง

unset built-in ใช้เพื่อตั้งค่าตัวแปรเชลล์เป็น null unset ยังใช้เพื่อลบองค์ประกอบของอาร์เรย์และ
เพื่อลบอาร์เรย์ทั้งหมด

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Bash Array โปรดดูบทความก่อนหน้า 15 Bash Array Operations

$ cat unset.sh
#!/bin/bash
#Assign values and print it
var="welcome to thegeekstuff"
echo $var

#unset the variable
unset var
echo $var

$ ./unset.sh
welcome to thegeekstuff

ในตัวอย่างข้างต้น หลังจากยกเลิกการตั้งค่าตัวแปร “var” จะถูกกำหนดด้วยสตริงว่าง

13. Bash ให้ตัวอย่างคำสั่ง

คำสั่ง let ใช้เพื่อดำเนินการคำนวณกับตัวแปรเชลล์

$ cat arith.sh
#! /bin/bash

let arg1=12
let arg2=11

let add=$arg1+$arg2
let sub=$arg1-$arg2
let mul=$arg1*$arg2
let div=$arg1/$arg2
echo $add $sub $mul $div

$ ./arith.sh
23 1 132 1

14. ตัวอย่างคำสั่ง Bash shopt

คำสั่ง shopt ในตัวใช้เพื่อตั้งค่าและยกเลิกการตั้งค่าตัวเลือกเชลล์ คุณสามารถใช้คำสั่งนี้เพื่อใช้ประโยชน์จากเชลล์อัจฉริยะได้

$cat shopt.sh
#! /bin/bash

## Before enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"
shopt -s xpg_echo
## After enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"

# Before disabling aliases
alias l.='ls -l .'
l.

# After disabling aliases
shopt -u expand_aliases
l.

$ ./shopt.sh
WELCOME\n
GEEKSTUF\n
WELCOME

GEEKSTUF

total 3300
-rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg
-r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup
drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop
shopt.sh: line 17: l.: command not found

ก่อนเปิดใช้งานตัวเลือก xpg_echo คำสั่ง echo ไม่ได้ขยายลำดับการหลบหนี “ล” นามแฝงเป็น ls -l ของไดเร็กทอรีปัจจุบัน หลังจากปิดการใช้งานตัวเลือก expand_aliases ในเชลล์ มันไม่ขยายนามแฝง คุณอาจสังเกตเห็นข้อผิดพลาด l ไม่พบคำสั่ง

15. ตัวอย่างคำสั่ง Bash printf

คล้ายกับ printf ในภาษา C bash printf ในตัวถูกใช้เพื่อจัดรูปแบบการดำเนินการพิมพ์

ในตัวอย่างที่ 13 สคริปต์ดำเนินการคำนวณกับอินพุตสองตัว ในสคริปต์นั้นแทนคำสั่ง echo คุณสามารถใช้คำสั่ง printf เพื่อพิมพ์เอาต์พุตที่จัดรูปแบบดังที่แสดงด้านล่าง

ใน arith.sh ให้แทนที่คำสั่ง echo ด้วยคำสั่ง printf นี้

printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div

$ ./arith.sh
Addition=23
Subtraction=1
Multiplication=132
Division=1.000000