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
$