Bash ซึ่งย่อมาจาก "Bourne Again SHell" เป็นเชลล์ Unix และภาษาคำสั่งที่ทำหน้าที่เป็นทั้งตัวแปลคำสั่งสำหรับระบบปฏิบัติการและภาษาการเขียนโปรแกรมสำหรับการเขียนสคริปต์เชลล์ สร้างขึ้นมาเป็นทางเลือกแทน Bourne Shell (sh) Bash รวมฟีเจอร์จาก Korn Shell (ksh) และ C Shell (csh) ทำให้มันเป็นเครื่องมือที่ทรงพลังและหลากหลายสำหรับงานที่เกี่ยวกับคำสั่งและการเขียนสคริปต์ Bash ถูกใช้อย่างแพร่หลายในหลายการแจกจ่ายของ Linux, macOS และระบบปฏิบัติการที่คล้าย Unix อื่น ๆ และทำหน้าที่เป็นเชลล์เริ่มต้นในหลายระบบ
Bash ถูกพัฒนาโดย Brian Fox สำหรับโครงการ GNU ในปี 1987 เป็นซอฟต์แวร์ฟรีที่ใช้แทน Bourne Shell (sh) เป้าหมายคือการให้ผู้ใช้มีเชลล์ที่มีฟีเจอร์มากขึ้นในขณะที่ยังคงความเข้ากันได้กับสคริปต์ sh ที่มีอยู่ ตลอดหลายปีที่ผ่านมา Bash ได้พัฒนาขึ้นผ่านการมีส่วนร่วมจากนักพัฒนาหลายคน และการเติบโตของมันได้รับแรงผลักดันจากความนิยมที่เพิ่มขึ้นของ Linux และซอฟต์แวร์โอเพนซอร์ส
ในปีแรก ๆ Bash ได้รับความนิยมอย่างรวดเร็วในหมู่ผู้ใช้และนักพัฒนาจากความสามารถในการขยายและชุดฟีเจอร์ที่หลากหลายที่มันนำเสนอ ฟีเจอร์หลัก ๆ ได้แก่ การแก้ไขคำสั่งในบรรทัดคำสั่ง, การควบคุมงาน และความสามารถในการเขียนสคริปต์ที่ดีขึ้น ขณะนี้ Bash ยังคงได้รับการดูแลอย่างต่อเนื่อง โดยมีเวอร์ชัน 5.2 ที่ปล่อยออกมาในเดือนกันยายน 2021 มันยังคงเป็นเครื่องมือมาตรฐานสำหรับผู้ดูแลระบบ, นักพัฒนา และผู้ที่ทำงานกับระบบปฏิบัติการที่คล้าย Unix
Bash ได้รับแรงบันดาลใจจากเชลล์และภาษาการเขียนโปรแกรมอื่น ๆ หลายภาษา โครงสร้างไวยากรณ์และคำสั่งของ Korn Shell (ksh) และ C Shell (csh) มีอิทธิพลต่อการออกแบบของมันอย่างมาก นอกจากนี้ ฟีเจอร์ภาษาคำสั่งของมันทำให้สามารถรวมเข้ากับภาษาการเขียนโปรแกรมเช่น Python และ Ruby ได้ง่าย ซึ่งมักถูกใช้ในสคริปต์เพื่อเพิ่มฟังก์ชันการทำงาน
Bash ถูกใช้กันอย่างแพร่หลายสำหรับการเขียนสคริปต์และการทำงานอัตโนมัติของงานระบบ, การจัดการการติดตั้งซอฟต์แวร์, การทำหน้าที่ดูแลระบบ และการจัดการงานประมวลผลข้อมูล มันถูกบูรณาการเข้าไปในกระบวนการพัฒนาของแอปพลิเคชันซอฟต์แวร์หลายตัวและ CI/CD pipelines รวมถึงในสภาพแวดล้อมคลาวด์และแนวทาง DevOps
Bash รองรับการกำหนดค่าตัวแปรโดยไม่ต้องมีการประกาศประเภทก่อนหน้า ตัวอย่างเช่น:
name="World"
echo "Hello, $name!"
Bash รวมคำสั่งเงื่อนไขเช่น if-else สำหรับการควบคุมการไหล:
if [ "$name" == "World" ]; then
echo "Hello, World!"
else
echo "Hello, Stranger!"
fi
Bash อนุญาตให้ใช้ลูปเช่น for
, while
, และ until
นี่คือตัวอย่างของลูป for
:
for i in {1..5}; do
echo "Iteration $i"
done
คุณสามารถกำหนดและเรียกใช้ฟังก์ชันใน Bash:
greet() {
echo "Hello, $1!"
}
greet "User"
Bash รองรับการแทนที่คำสั่งโดยใช้ backticks หรือ $(...)
:
today=$(date)
echo "Today is $today"
Bash รองรับอาร์เรย์เชิงหนึ่งมิติ:
fruits=("apple" "banana" "cherry")
echo "First fruit: ${fruits[0]}"
Bash มีฟีเจอร์การจัดการสตริงเช่นการดึงซับสตริง:
text="Hello World"
echo ${text:6:5} # แสดงผล "World"
Bash อนุญาตให้ทำการดำเนินการทางคณิตศาสตร์พื้นฐานโดยใช้ $((...))
:
result=$((5 + 3))
echo "Result is $result"
คุณสามารถเปลี่ยนทิศทางการนำเข้าและส่งออกใน Bash:
echo "Hello" > output.txt
Bash อนุญาตให้ใช้เอกสารที่นี่สำหรับการนำเข้าหลายบรรทัด ทำให้สะดวกในการส่งสตริงหลายบรรทัดไปยังคำสั่ง:
cat << EOF
This is a multi-line string.
EOF
ในขณะที่สคริปต์ Bash สามารถแก้ไขได้ในโปรแกรมแก้ไขข้อความใด ๆ แต่มีสภาพแวดล้อมการพัฒนาที่รวม (IDEs) หลายตัวที่เสนอการสนับสนุนสำหรับ Bash ซึ่งรวมถึง Visual Studio Code, Atom, Sublime Text และ Eclipse พร้อมปลั๊กอิน
สคริปต์ Bash จะถูกตีความแทนที่จะถูกคอมไพล์ โดยตัวแปล Bash เองจะทำการรันสคริปต์ คำสั่งในการรันสคริปต์คือ:
bash script.sh
ในการสร้างโปรเจกต์ มักจะสร้าง Makefile โดยใช้ make
หรือใช้สคริปต์ Bash เพื่อทำให้งานอัตโนมัติเช่นการติดตั้งหรือการปรับใช้
Bash ถูกใช้ในหลายโดเมน รวมถึง:
Bash มีการเปรียบเทียบที่ใกล้เคียงที่สุดกับภาษาต่าง ๆ เช่น Python และ Perl สำหรับการเขียนสคริปต์ ในขณะที่มันอาจถูกเปรียบเทียบกับภาษาที่ใช้ทั่วไปมากขึ้นเช่น C หรือ Java ในกรณีการใช้งานเฉพาะ
Bash มีความโดดเด่นในด้านการโต้ตอบผ่านบรรทัดคำสั่งและงานระบบ ในขณะที่ Python มีความหลากหลายมากกว่าในงานการเขียนโปรแกรมที่ซับซ้อน, การประมวลผลข้อมูล และการพัฒนาแอปพลิเคชัน Python มีไลบรารีมาตรฐานที่หลากหลายซึ่งทำให้เหมาะสำหรับแอปพลิเคชันขนาดใหญ่
Perl มักถูกใช้สำหรับการประมวลผลข้อความและงานการดูแลระบบ อย่างไรก็ตาม มันมีไวยากรณ์ที่ซับซ้อนมากกว่า Bash Bash มุ่งเน้นไปที่การดำเนินการคำสั่ง ในขณะที่ Perl มุ่งเน้นไปที่การเขียนโปรแกรมมากกว่า
JavaScript เป็นภาษาที่ใช้ด้านเว็บฝั่งลูกค้าเป็นหลัก ในขณะที่ Bash ทำหน้าที่เป็นตัวแปลคำสั่งและตัวประมวลผลสคริปต์สำหรับการดำเนินการระบบ Bash ไม่เหมาะสำหรับการพัฒนาเว็บ ในขณะที่ JavaScript มีความโดดเด่นในด้านนั้น
เมื่อแปลสคริปต์ Bash ไปยังภาษาอื่น ให้ตรวจสอบให้แน่ใจว่าได้ตรวจสอบความเทียบเท่าของคำสั่งและตรวจสอบการพึ่งพาฟีเจอร์ระดับระบบ เครื่องมือเช่น sh2py
มีอยู่เพื่อแปลงสคริปต์เชลล์เป็น Python แต่ความแตกต่างทางความหมายควรได้รับการจัดการอย่างระมัดระวัง
มีเครื่องมือบางอย่างที่มีอยู่สำหรับการแปลจากแหล่งสู่แหล่ง รวมถึง: