Unix / Linux - Shells คืออะไร?
ก Shellให้คุณมีอินเทอร์เฟซสำหรับระบบ Unix รวบรวมข้อมูลจากคุณและรันโปรแกรมตามอินพุตนั้น เมื่อโปรแกรมทำงานเสร็จสิ้นโปรแกรมจะแสดงผลลัพธ์ของโปรแกรมนั้น
เชลล์เป็นสภาพแวดล้อมที่เราสามารถรันคำสั่งโปรแกรมและเชลล์สคริปต์ของเรา มีรสชาติที่แตกต่างกันของเปลือกเช่นเดียวกับระบบปฏิบัติการที่มีรสชาติที่แตกต่างกัน แต่ละรสชาติของเชลล์มีชุดคำสั่งและฟังก์ชันที่รู้จักเป็นของตัวเอง
เชลล์พร้อมท์
พรอมต์ $ซึ่งเรียกว่า command promptออกโดยเชลล์ ในขณะที่พรอมต์ปรากฏขึ้นคุณสามารถพิมพ์คำสั่ง
เชลล์อ่านข้อมูลของคุณหลังจากที่คุณกด Enter. กำหนดคำสั่งที่คุณต้องการดำเนินการโดยดูที่คำแรกของข้อมูลที่คุณป้อน คำคือชุดอักขระที่ไม่ขาดตอน ช่องว่างและแท็บแยกคำ
ต่อไปนี้เป็นตัวอย่างง่ายๆของไฟล์ date คำสั่งซึ่งแสดงวันที่และเวลาปัจจุบัน -
$date
Thu Jun 25 08:30:19 MST 2009
คุณสามารถปรับแต่งพรอมต์คำสั่งของคุณโดยใช้ตัวแปรสภาพแวดล้อม PS1 ที่อธิบายไว้ในบทช่วยสอนสภาพแวดล้อม
ประเภทเชลล์
ใน Unix มีเชลล์สองประเภทใหญ่ ๆ -
Bourne shell - หากคุณใช้เชลล์ประเภทบอร์นไฟล์ $ อักขระคือพรอมต์เริ่มต้น
C shell - หากคุณใช้เชลล์ชนิด C อักขระ% คือพรอมต์เริ่มต้น
Bourne Shell มีหมวดหมู่ย่อยดังต่อไปนี้ -
- เปลือกบอร์น (sh)
- เปลือกหอย (ksh)
- Bourne Again เชลล์ (ทุบตี)
- POSIX เชลล์ (sh)
เปลือกชนิด C ที่แตกต่างกันมีดังนี้ -
- C เชลล์ (csh)
- TENEX / TOPS C เชลล์ (tcsh)
เปลือก Unix ดั้งเดิมถูกเขียนขึ้นในช่วงกลางทศวรรษ 1970 โดย Stephen R.Bourne ขณะที่เขาอยู่ที่ AT&T Bell Labs ในรัฐนิวเจอร์ซีย์
บอร์นเชลล์เป็นเชลล์ตัวแรกที่ปรากฏบนระบบยูนิกซ์ดังนั้นจึงเรียกว่า "เชลล์"
บอร์นเชลล์มักจะติดตั้งเป็นไฟล์ /bin/shใน Unix เกือบทุกเวอร์ชัน ด้วยเหตุนี้จึงเป็นเชลล์ทางเลือกสำหรับการเขียนสคริปต์ที่สามารถใช้ได้กับ Unix เวอร์ชันต่างๆ
ในบทนี้เราจะกล่าวถึงแนวคิดของเชลล์ส่วนใหญ่ที่มีพื้นฐานมาจาก Borne Shell
เชลล์สคริปต์
แนวคิดพื้นฐานของเชลล์สคริปต์คือรายการคำสั่งซึ่งแสดงรายการตามลำดับการดำเนินการ เชลล์สคริปต์ที่ดีจะมีความคิดเห็นนำหน้าด้วย# ลงชื่ออธิบายขั้นตอน
มีการทดสอบตามเงื่อนไขเช่นค่า A มากกว่าค่า B ลูปช่วยให้เราผ่านข้อมูลจำนวนมหาศาลไฟล์เพื่ออ่านและจัดเก็บข้อมูลและตัวแปรในการอ่านและจัดเก็บข้อมูลและสคริปต์อาจรวมถึงฟังก์ชัน
เราจะเขียนสคริปต์มากมายในส่วนถัดไป มันจะเป็นไฟล์ข้อความธรรมดาที่เราจะใส่คำสั่งทั้งหมดของเราและโครงสร้างที่จำเป็นอื่น ๆ อีกหลายอย่างที่บอกสภาพแวดล้อมเชลล์ว่าต้องทำอะไรและควรทำเมื่อใด
ทั้งสคริปต์เชลล์และฟังก์ชันถูกตีความ ซึ่งหมายความว่าไม่มีการคอมไพล์
สคริปต์ตัวอย่าง
สมมติว่าเราสร้างไฟล์ test.shสคริปต์ โปรดทราบว่าสคริปต์ทั้งหมดจะมีไฟล์.shส่วนขยาย. ก่อนที่คุณจะเพิ่มสิ่งอื่นลงในสคริปต์ของคุณคุณต้องแจ้งเตือนระบบว่าเชลล์สคริปต์กำลังเริ่มทำงาน ซึ่งทำได้โดยใช้ไฟล์shebangสร้าง. ตัวอย่างเช่น -
#!/bin/sh
สิ่งนี้บอกระบบว่าคำสั่งที่ตามมาจะถูกดำเนินการโดย Bourne เชลล์ เรียกว่า Shebang เพราะ#สัญลักษณ์เรียกว่าแฮและ! สัญลักษณ์ที่เรียกว่าปัง
ในการสร้างสคริปต์ที่มีคำสั่งเหล่านี้คุณต้องใส่บรรทัด shebang ก่อนแล้วจึงเพิ่มคำสั่ง -
#!/bin/bash
pwd
ls
ความคิดเห็นของเชลล์
คุณสามารถใส่ความคิดเห็นของคุณในสคริปต์ของคุณได้ดังนี้ -
#!/bin/bash
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls
บันทึกเนื้อหาข้างต้นและทำให้สคริปต์ทำงานได้ -
$chmod +x test.sh
ขณะนี้เชลล์สคริปต์พร้อมที่จะดำเนินการแล้ว -
$./test.sh
เมื่อดำเนินการคุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
/home/amrood
index.htm unix-basic_utilities.htm unix-directories.htm
test.sh unix-communication.htm unix-environment.htm
Note - ในการรันโปรแกรมที่มีอยู่ในไดเร็กทอรีปัจจุบันให้ใช้ ./program_name
สคริปต์เชลล์แบบขยาย
เชลล์สคริปต์มีโครงสร้างที่จำเป็นหลายอย่างที่บอกสภาพแวดล้อมเชลล์ว่าต้องทำอะไรและควรทำเมื่อใด แน่นอนว่าสคริปต์ส่วนใหญ่ซับซ้อนกว่าสคริปต์ข้างต้น
เชลล์คือภาษาโปรแกรมจริงพร้อมด้วยตัวแปรโครงสร้างควบคุมและอื่น ๆ ไม่ว่าสคริปต์จะซับซ้อนแค่ไหนก็ยังคงเป็นเพียงรายการคำสั่งที่ดำเนินการตามลำดับ
สคริปต์ต่อไปนี้ใช้ read คำสั่งที่รับอินพุตจากแป้นพิมพ์และกำหนดให้เป็นค่าของตัวแปร PERSON และสุดท้ายจะพิมพ์บน STDOUT
#!/bin/sh
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
นี่คือตัวอย่างการรันสคริปต์ -
$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$