Shell Scripting คืออะไรและทำไมคุณควรใช้

Shell Scripting คืออะไรและทำไมคุณควรใช้

เชลล์เป็นโปรแกรมภายในระบบปฏิบัติการ Linux หรือ Unix ซึ่งอนุญาตให้คุณป้อนคำสั่งสำหรับการดำเนินการโดยระบบ เมื่อเปิดหน้าต่างเทอร์มินัลบนคอมพิวเตอร์ linux มันจะเริ่มโปรแกรมเชลล์ซึ่งแสดงอินเทอร์เฟซเพื่อป้อนคำสั่ง อินเทอร์เฟซนี้เรียกว่าอินเทอร์เฟซบรรทัดคำสั่ง เมื่อป้อนคำสั่ง เชลล์จะดำเนินการและเอาต์พุตจะแสดงบนหน้าจอ





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





1. ประวัติของเชลล์

เริ่มต้นด้วย Unix ในปี 1970 มีโปรแกรมเชลล์ที่เรียกว่า V6 เชลล์ พัฒนาโดยเคนทอมสัน มันเป็นเชลล์แบบโต้ตอบและขาดความสามารถในการเขียนสคริปต์





ตามด้วย บอร์น เชลล์ ในปี 1977 และยังคงใช้งานอยู่ในปัจจุบันเป็นเชลล์เริ่มต้นสำหรับ ราก บัญชีผู้ใช้. เชลล์นี้เพิ่มความสามารถในการเขียนสคริปต์ซึ่งพิสูจน์แล้วว่ามีประโยชน์อย่างมากในทางปฏิบัติตลอดหลายปีที่ผ่านมา

การพัฒนาเพิ่มเติมของเปลือกหอยในทศวรรษ 1980 ทำให้เกิดรูปแบบเปลือกหอยที่ได้รับความนิยมมากมาย ซึ่งเป็นที่นิยมมากที่สุดคือ ซี-เชลล์ และ คอร์นเชลล์ . แต่ละเชลล์เหล่านี้มีไวยากรณ์ของตัวเองซึ่ง ในบางกรณี แตกต่างอย่างมากจากเชลล์ดั้งเดิม



หนึ่งในเปลือกหอยที่ได้รับความนิยมมากที่สุดในปัจจุบันคือ ทุบตีเชลล์ . Bash ย่อมาจาก บอร์น-อีกครั้ง-เชลล์ และเป็นตัวแปรที่ได้รับการปรับปรุงอย่างมากจาก Bourne Shell รุ่นดั้งเดิม

วิธีบีบอัดไฟล์เสียง

ในบทความนี้ เราจะอธิบายเกี่ยวกับเชลล์สคริปต์สำหรับ ทุบตีเชลล์ .





2. การดำเนินการเชลล์สคริปต์

คุณจะรันเชลล์สคริปต์ได้อย่างไร? เรียบง่าย. เพียงส่งเส้นทางของสคริปต์เป็นอาร์กิวเมนต์ไปยังเชลล์:

เชลล์สคริปต์ตัวอย่าง:





echo 'hello world'

เรียกใช้ดังนี้:

$ bash hello.sh
# prints
hello world

บันทึก: เชลล์ต้องการการสิ้นสุดบรรทัดด้วยอักขระ LF (Line-Feed) หากคุณเขียนเชลล์สคริปต์บน Windows และพยายามเรียกใช้งานโดยตรงบนระบบ Linux คุณอาจพบข้อผิดพลาด Windows ใช้ชุดค่าผสม CR-LF (Carriage-Return-Line-Feed) สำหรับการยกเลิกรายการ ต้องแปลงเป็น LF เท่านั้น ตรวจสอบตัวแก้ไข Windows ของคุณสำหรับวิธีการนี้

มีอีกวิธีหนึ่งในการรันเชลล์สคริปต์โดยตรงเป็นคำสั่ง แทรกบรรทัดต่อไปนี้ (the แฮชบัง ประกาศ) เป็นบรรทัดแรกของเชลล์สคริปต์ของคุณ

จะรู้ได้อย่างไรว่าใครเป็นเจ้าของเพจเฟสบุ๊ค
#!/bin/bash

ด้วยการเปลี่ยนแปลงนี้ เชลล์สคริปต์อย่างง่ายของเราคือ:

#!/bin/bash
echo 'hello world'

ตอนนี้ คุณต้องทำให้ไฟล์สคริปต์ทำงานได้ดังนี้:

$ chmod +x hello.sh

ณ จุดนี้ คุณสามารถรันไฟล์สคริปต์ได้โดยตรงโดยไม่ต้องอ้างอิงเชลล์อย่างชัดเจน

$ hello.sh
# prints
hello world

ให้เรามาดูข้อดีบางประการของการใช้เชลล์สคริปต์

3. งานอัตโนมัติ

ข้อได้เปรียบประการแรกของการใช้เชลล์สคริปต์คือการทำงานอัตโนมัติที่ดำเนินการบ่อย สมมติว่าคุณมีงานที่คุณต้องทำทุกวัน หากคุณต้องการรันคำสั่งหลายคำสั่งบนระบบ linux ของคุณทุกวัน คุณสามารถเก็บคำสั่งเหล่านี้ไว้ในไฟล์และรันสคริปต์ได้ ตัวอย่าง ได้แก่

  • เก็บถาวรและอัปโหลดไฟล์หรือโฟลเดอร์ทุกวันไปที่a ที่เก็บข้อมูลบนคลาวด์ เช่น S3
  • บีบอัดไฟล์บันทึกซึ่งมีแนวโน้มที่จะเติบโตทุกวัน
  • ดึงราคาหุ้น แยกวิเคราะห์ข้อมูลที่ดึงออกมา และเรียกใช้อีเมลหรือ SMS เมื่อตรงตามเงื่อนไขบางประการ (ราคาสูงหรือต่ำเกินไป)

4. การรวมหลายคำสั่งเข้าด้วยกัน

นอกจากการทำให้งานที่ใช้บ่อยเป็นอัตโนมัติแล้ว คุณอาจพบว่าคุณสามารถรวมคำสั่งหลาย ๆ ลำดับเป็นคำสั่งเดียวได้ การจำคำสั่งเดียวง่ายกว่าหลายคำสั่งมาก ไม่ต้องพูดถึงลำดับที่ต้องดำเนินการ

ตัวอย่างจะเป็นลำดับการบูทอัพของระบบปฏิบัติการลินุกซ์เอง ในการบูทเครื่อง ระบบปฏิบัติการจะดำเนินการตามคำสั่งจำนวนหนึ่งเพื่อให้ระบบอยู่ในสถานะที่เหมาะสม คำสั่งเหล่านี้เป็นเชลล์สคริปต์จริงที่อยู่ภายใต้ /ฯลฯ ไดเรกทอรี หากคุณลองดูหนึ่งในเชลล์สคริปต์เหล่านี้ คุณจะเข้าใจถึงความซับซ้อนของการบูตระบบ ซึ่งคุณอาจต้องดำเนินการด้วยตนเองในกรณีที่ไม่มีเชลล์สคริปต์

ต่อไปนี้เป็นตัวอย่างเชลล์สคริปต์ /etc/profile ซึ่งจะดำเนินการทุกครั้งที่ผู้ใช้เข้าสู่ระบบ ลองนึกภาพการพิมพ์คำสั่งเหล่านี้ด้วยมือ!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. ง่ายต่อการพัฒนา

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

โปรแกรม C/C++ ดีกว่าสำหรับการทำงานในระดับที่ต่ำกว่ามาก เช่น การเรียกใช้การเรียกระบบ การจัดการโครงสร้างข้อมูล ฯลฯ

6. ความโปร่งใส

เชลล์สคริปต์โดยอาศัยการเป็นไฟล์ข้อความ สามารถดูได้ง่าย ๆ เพื่อตรวจสอบการทำงานของมัน ในทางตรงกันข้าม วิธีเดียวที่คุณจะรู้ได้ว่าโปรแกรมที่เขียนในภาษาเช่น C/C++ (และคอมไพล์ไปยังไฟล์สั่งการ) นั้นกำลังทำอะไรอยู่คือถ้ามันเลือกที่จะบอกคุณหรือว่าคุณมีสิทธิ์เข้าถึงซอร์สโค้ดหรือไม่ ตัวอย่างเช่น คุณสามารถตรวจสอบว่าเชลล์สคริปต์กำลังลบไฟล์ใดๆ หรือไม่ และหากคุณต้องการไฟล์เหล่านั้น คุณสามารถคัดลอกไฟล์เหล่านั้นไปยังตำแหน่งอื่นได้

นอกจากนี้ยังง่ายต่อการวินิจฉัยปัญหากับเชลล์สคริปต์มากกว่าโปรแกรมปกติ เนื่องจากคุณสามารถดูซอร์สโค้ดได้ สคริปต์นั้นล้มเหลวเพราะไม่มีไดเร็กทอรีหรือไม่? คุณสามารถดูโค้ดสคริปต์และสร้างไดเร็กทอรีได้ (แม้ว่าเชลล์สคริปต์ที่ทำงานได้ดีควรตรวจสอบและสร้างเพื่อหลีกเลี่ยงข้อผิดพลาดดังกล่าว)

7. แบบพกพา

ถึง เชลล์สคริปต์ สามารถถ่ายโอนไปยังระบบปฏิบัติการอื่นที่คล้าย Unix และ Unix และดำเนินการได้ (หากมีเชลล์อยู่) แม้เมื่อถ่ายโอนเชลล์สคริปต์จากสถาปัตยกรรมต่างๆ เช่น x86, MIPS, Sparc เป็นต้น เชลล์สคริปต์ก็พกพาได้ง่ายกว่าโปรแกรม C/C++

วิธีเดียวที่จะถ่ายโอนและใช้โปรแกรม C/C++ บนระบบอื่นได้คือการคัดลอกซอร์สโค้ด สร้างโปรแกรม และพยายามเรียกใช้ ถึงอย่างนั้นก็อาจไม่ทำงานตามที่คาดไว้หากใช้รหัสเฉพาะสถาปัตยกรรม

ตอนนี้ คุณมีความคิดแล้วว่าเชลล์สคริปต์คืออะไรและมีข้อดีหลายประการ คุณไม่ต้องการที่จะใช้มันสำหรับงานของคุณหรือไม่? คุณประสบปัญหาอะไรบ้างเมื่อใช้มัน? โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง

วิธีรีเซ็ตคอนโทรลเลอร์ xbox one
แบ่งปัน แบ่งปัน ทวีต อีเมล 5 เคล็ดลับในการเพิ่มพลังให้เครื่อง VirtualBox Linux ของคุณ

เบื่อกับประสิทธิภาพที่ย่ำแย่ของเวอร์ชวลแมชชีนหรือไม่? นี่คือสิ่งที่คุณควรทำเพื่อเพิ่มประสิทธิภาพ VirtualBox ของคุณ

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • Linux Bash Shell
เกี่ยวกับผู้เขียน เจ ศรีธา(เผยแพร่บทความ 17 บทความ) เพิ่มเติมจาก Jay Sridhar

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก