Shell, Bash และ Scripts: ทุกอย่างเกี่ยวกับ Shell Scripting

ในโอกาสใหม่นี้ (รายการ # 8) บน "เรียนรู้เชลล์สคริปต์" เราจะเน้นทฤษฎีมากกว่าการปฏิบัติ นั่นคือเราจะไม่ติดตั้งหรือศึกษาโค้ดหรือติดตั้งซอฟต์แวร์เฉพาะ (แพ็คเกจ) แต่เราจะเจาะลึกว่าโลกของ การเขียนสคริปต์เชลล์ พูดอย่างถูกต้องโดยใช้คำตอบสำหรับคำถามเล็ก ๆ แต่ตรงตามที่แสดงด้านล่างเพื่อชี้แจงสิ่งที่ได้รับการสอนซึ่งไม่ได้อ้างถึงรหัสภายในที่ตั้งโปรแกรมไว้โดยตรง:

การเขียนสคริปต์เชลล์

เชลล์ในระบบปฏิบัติการ GNU / Linux คืออะไร?

เชลล์ซึ่งในภาษาสเปนหมายถึง CONCHA (เปลือก, ฝาปิด, การป้องกัน) ใช้คำนี้ในระบบปฏิบัติการหมายถึงตัวแปลคำสั่งของระบบปฏิบัติการ โดยทั่วไปเป็นอินเทอร์เฟซข้อความประสิทธิภาพสูงซึ่งแสดงออกมาในรูปแบบของ Terminal (คอนโซล) และใช้เป็นหลักในการทำงานที่สำคัญ 3 ส่วน:

1.- จัดการระบบปฏิบัติการ
2.- เรียกใช้แอปพลิเคชันและโต้ตอบกับพวกเขาและ
3.- ทำหน้าที่เป็นสภาพแวดล้อมการเขียนโปรแกรมพื้นฐาน

มากมาย GNU / Linux พวกเขายังคงได้รับการจัดการอย่างมีประสิทธิภาพมากขึ้นโดยการแก้ไขไฟล์การกำหนดค่าผ่าน Terminal ตามกฎทั่วไปสิ่งเหล่านี้อยู่บนเส้นทางปลายทาง: «/ ฯลฯ "และภายในไดเรกทอรีเฉพาะสำหรับแต่ละแอปพลิเคชัน ตัวอย่างเช่นโปรแกรม Lilo (ซึ่งย่อมาจาก Linux Loader) ได้รับการกำหนดค่าโดยการแก้ไขไฟล์ข้อความที่อยู่และเรียกว่าเป็น "/Etc/lilo/lilo.conf". ในกรณีของโปรแกรม (แอปพลิเคชัน) สิ่งเหล่านี้จะถูกเรียกใช้งาน (เรียกใช้งาน / เปิดใช้งาน) โดยการเขียนชื่อของไฟล์ปฏิบัติการหากพบในพา ธ (เส้นทางเริ่มต้น) สำหรับไฟล์ปฏิบัติการทั้งหมดตามปกติ "/ usr / bin" หรือโดยการพิมพ์ชื่อของไฟล์ปฏิบัติการที่นำหน้าด้วย: ./จากไดเร็กทอรีที่พวกเขาอยู่

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

Shell Scripting คืออะไร?

เป็นเทคนิค (ทักษะ / ความชำนาญ) ในการออกแบบและสร้าง Script (ไฟล์งานอัตโนมัติ) โดยใช้ Shell (โดยเฉพาะอย่างยิ่ง) ของระบบปฏิบัติการหรือ Text Editor (Graphic หรือ Terminal) นี่คือภาษาโปรแกรมประเภทหนึ่งที่ถูกตีความโดยทั่วไป นั่นคือในขณะที่โปรแกรมส่วนใหญ่ถูกคอมไพล์ (โค้ด) เนื่องจากถูกแปลงเป็นโค้ดเฉพาะ (พิเศษ) อย่างถาวรก่อนที่จะดำเนินการได้ (กระบวนการคอมไพล์) เชลล์สคริปต์จะยังคงอยู่ในรูปแบบเดิม (ที่มาของรหัสข้อความ) และ ตีความคำสั่งโดยคำสั่งทุกครั้งที่ดำเนินการ แม้ว่าจะเป็นไปได้ว่าสามารถรวบรวมสคริปต์ได้เช่นกันแม้ว่าจะไม่ใช่เรื่องปกติก็ตาม

อะไรคือลักษณะของโปรแกรมตามการเขียนโปรแกรมภายใต้ Shell Scripting?

1. - เขียน (โปรแกรม) ได้ง่ายกว่า แต่มีต้นทุนการประมวลผลที่สูงกว่าเมื่อดำเนินการ

2.- พวกเขาใช้ล่ามแทนคอมไพเลอร์ในการเรียกใช้

3.- มีความสัมพันธ์ในการสื่อสารกับส่วนประกอบที่เขียนด้วยภาษาโปรแกรมอื่น ๆ

4.- ไฟล์ที่มีจะถูกจัดเก็บเป็นข้อความธรรมดา

5.- การออกแบบขั้นสุดท้าย (โค้ด) มักจะมีขนาดเล็กกว่าที่จะเทียบเท่าในภาษาโปรแกรมที่คอมไพล์

ประเภทของภาษาที่ได้รับความนิยมมากที่สุดใน Shell Scripting คืออะไร?

1.- งานและภาษาควบคุมเชลล์:

ก) cmd.exe (Windows NT, Windows CE, OS / 2),
ข) COMMAND.COM (DOS, Windows 9x),
c) csh, ทุบตี, AppleScript, sh,
d) JScript ผ่านโฮสต์สคริปต์ของ Windows
จ) VBScript ผ่านโฮสต์สคริปต์ของ Windows
f) REXX และอื่น ๆ อีกมากมาย

2. - การเขียนสคริปต์ GUI (ภาษามาโคร):

ก) AutoHotkey
b) AutoIt
c) คาดหวัง
d) Automator และอื่น ๆ

3.- ภาษาสคริปต์ของแอปพลิเคชันเฉพาะ:

ก) ActionScript ใน Flash
ข) MATLAB
c) สคริปต์ mIRC
d) QuakeC และอื่น ๆ

4.- การเขียนโปรแกรมเว็บ (สำหรับเพจไดนามิก):

ก) ทางฝั่งเซิร์ฟเวอร์:

- PHP,
- ASP (Active Server Pages),
- หน้า JavaServer
- ColdFusion
- IPTSCRAE,
- เชือก
- สคริปต์ MIVA
- SMX,
- XSLT และอื่น ๆ

b) ในฝั่งไคลเอ็นต์:

- จาวาสคริปต์
- JScript
- VBScript,
- Tcl และอื่น ๆ

5.- ภาษาประมวลผลคำ:

- AWK,
- เพิร์ล
- ความกระหายน้ำ,
- XSLT,
- ทุบตีและอื่น ๆ

6. - ภาษาไดนามิกสำหรับวัตถุประสงค์ทั่วไป:

- APL,
- บู
- ดีแลน
- เฟอร์ไรต์
- Groovy,
- IO,
- เสียงกระเพื่อม
- ลัวะ
- มัมมี่ (M)
- NewLISP,
- นูวา
- เพิร์ล
- PHP,
- งูหลาม
- ทับทิม
- โครงการ
- หูฟัง,
- ซูเปอร์การ์ด
- Tcl,
- การปฏิวัติและอื่น ๆ

Bash ใน GNU / Linux คืออะไร?

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

Shell Script ใน GNU / Linux คืออะไร?

เชลล์สคริปต์ มีประโยชน์อย่างยิ่ง เป็นความคิดที่ดีที่จะเขียนความต้องการเหล่านั้นที่เรามีแล้วแก้ไขสคริปต์ที่ทำงานนี้ให้เรา ตอนนี้ถึงเวลาถามตัวเองว่าสคริปต์คืออะไร เป็นไฟล์ข้อความที่มีชุดคำสั่งเชลล์ซึ่งระบบจะดำเนินการตามลำดับจากบนลงล่าง ในการแก้ไขคุณต้องมีโปรแกรมแก้ไขข้อความเช่น Emacs, Vi, Nano และอื่น ๆ ที่มีอยู่ โดยจะบันทึกด้วยนามสกุล“ .sh” (หรือไม่มีในบางกรณี) และเรียกใช้จากเชลล์โดยใช้คำสั่ง: sh script name.sh สคริปต์ทำงานในลักษณะเดียวกับคำสั่งเชลล์

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

มันทำงานและทำงานอย่างไรใน GNU / Linux Shell?

ขั้นตอนแรกในการทำงานกับเชลล์คือการรันเชลล์ สิ่งที่ดูเหมือนจริงมีเหตุผลในการเป็น ในการแจกแจง GNU / Linux ที่มุ่งเน้นผู้ใช้ปลายทางบางส่วนเชลล์จะถูกซ่อนไว้ค่อนข้างมาก โดยปกติจะเรียกว่า Konsole, Terminal, X Terminal หรืออะไรที่คล้ายกัน อีกทางเลือกหนึ่งคือการใช้คอนโซลเสมือน การใช้: Ctrl + Alt + f1 หรือ f2 หรือ f3 ถึง f7 หรือ f8 ขึ้นอยู่กับการกระจาย GNU / Linux ที่คุณใช้ เชลล์ที่ใช้มากที่สุดใน GNU / Linux คือ Bash แม้ว่าจะมีอื่น ๆ เช่น ksh หรือ C Shell ในกรณีของฉันโดยเฉพาะอย่างยิ่งสำหรับสิ่งพิมพ์ของฉันฉันใช้ Bash Shell

ให้สคริปต์ที่สร้างใน Bash Shell เรียกว่า hello_world.sh สามารถอธิบายได้ดังต่อไปนี้:

เนื้อหา:

#! / bin / ทุบตี
ก้องสวัสดีชาวโลก

แตกหัก:

บรรทัดแรกของสคริปต์
#! / bin / ทุบตี

ระบุโปรแกรมที่สคริปต์ควรรัน หากไม่พบโปรแกรมจะเกิดข้อผิดพลาด

บรรทัดที่สองของสคริปต์
ก้องสวัสดีชาวโลก

ดำเนินการคำสั่ง echo ด้วยอาร์กิวเมนต์ Hello World ทำให้แสดงบนหน้าจอ

การดำเนินการ: เราสามารถเรียกใช้สคริปต์ได้สองวิธี

การเรียกใช้ล่ามเพื่อรันสคริปต์:
# ทุบตี hello_world.sh

นอกจากนี้ยังสามารถเรียกใช้เป็น:
# sh hello_world.sh

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

คุณยังสามารถรันสคริปต์ได้โดยตรงดังต่อไปนี้:
# ./hello_world.sh

หมายเหตุ: ./ ระบุว่ารันจากไดเร็กทอรีปัจจุบัน

ส่วนที่เหลือที่ต้องวิเคราะห์คือโค้ดที่คุณใส่เข้าไป ฉันหวังว่าคุณจะชื่นชอบเช่นเคย (มากกว่าคนอื่น ๆ ตามความต้องการด้านการเรียนรู้และความรู้) ชุดนี้ การเขียนสคริปต์เชลล์.

มีลิงค์ดีๆมากมายเกี่ยวกับหัวข้อนี้บนเว็บ แต่ฉันขอฝากคุณไว้ที่นี่ที่ DesdeLinuxสุทธิ. และอื่น ๆ คู่มือภายนอก.

จนกว่าจะโพสต์ต่อไป!


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   d4ny dijo

    Lilo .. Linux Loader .. ส่วนที่เหลือข้อมูลดีมาก .. ขอบคุณ .. salu2 d4ny.-

  2.   Jose Albert dijo

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

    ฉันหวังว่าคุณจะคอยติดตามเพราะในเร็ว ๆ นี้ฉันจะเริ่มต้นด้วยรหัสขั้นสูงกว่านี้ แต่เปิดเผยในแบบที่เข้าใจได้แม้จะมีความซับซ้อน

    โปรดจำไว้ว่าด้วย Shell Scripting คุณสามารถทำสิ่งที่ซับซ้อนมากมายที่ข้ามแพลตฟอร์ม (Distros ที่แตกต่างกัน) โดยใช้ไฟล์ขนาดเล็กมาก ฉันจะปล่อยให้คุณฉายภาพเล็ก ๆ ที่ฉันจะสอนคุณเร็ว ๆ นี้สำหรับผู้ที่ดูหลักสูตรต่อไปและด้วยเพียง 50Kb ที่สัญญาไว้มาก! และเป็นเพียงครึ่งหนึ่งของสิ่งที่สามารถทำได้ด้วย Shell Scripting

    LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    ดู Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

    1.    อัลเบอร์โตคาร์โดนา dijo

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

  3.   Jose Albert dijo

    สวัสดีทุกคนที่ติดตามหลักสูตรออนไลน์ของ "Learn Shell Scripting" เร็ว ๆ นี้เราจะดำเนินการต่อโดยใช้สคริปต์พื้นฐานอื่น ๆ เพื่อนำความรู้ที่เหมาะสมและไปสู่สังคมต่อไปสำหรับทุกคน ฉันหวังว่าคุณจะคอยติดตามเพราะเร็ว ๆ นี้ฉันจะเริ่มต้นด้วยรหัสขั้นสูงกว่านี้ แต่เปิดเผยในรูปแบบที่เข้าใจได้ง่ายแม้จะมีความซับซ้อน

    โปรดจำไว้ว่าด้วย Shell Scripting คุณสามารถทำสิ่งที่ซับซ้อนมากมายที่ข้ามแพลตฟอร์ม (Distros ที่แตกต่างกัน) โดยใช้ไฟล์ขนาดเล็กมาก ฉันจะปล่อยให้คุณฉายภาพเล็ก ๆ ที่ฉันจะสอนคุณเร็ว ๆ นี้สำหรับผู้ที่ดูหลักสูตรต่อไปและด้วยเพียง 50Kb ที่สัญญาไว้มาก! และเป็นเพียงครึ่งหนึ่งของสิ่งที่สามารถทำได้ด้วย Shell Scripting

    LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    ดู Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

  4.   อัลแบร์โต dijo

    สวัสดี Jose
    ก่อนอื่นขอขอบคุณสำหรับการแบ่งปันความรู้ของคุณ บทความของคุณน่าสนใจมาก

    สองสิ่งนี้ฉันคิดว่ามันสำคัญมากที่จะต้องใช้เครื่องหมายคำพูดคู่ "Hello World" และเพื่อให้สคริปต์ของเราได้ผลลัพธ์ที่ชัดเจนด้วยทางออก 0

  5.   Jose Albert dijo

    ขอบคุณสำหรับการมีส่วนร่วมของคุณในสคริปต์ถัดไปคุณจะเห็นการใช้ exit 0, break และอื่น ๆ !

  6.   วิลลาร์มันด์ dijo

    อาศิรพจน์
    น่าสนใจมากคุณทำให้มันดูเรียบง่าย ตอนนี้ฉันพบว่าฉันไม่สามารถเขียนโปรแกรมใน Linux ด้วย cron หรือ at ปิด / ระงับ / ไฮเบอร์เนตด้วยการเริ่มต้นอัตโนมัติที่ตามมาโดยใช้คำสั่ง rtc wake ฉันไม่รู้ว่าสคริปต์ที่มีคำสั่งนั้นจะช่วยได้หรือไม่ จะทำตาม cron และ t โดยไม่ทำอะไรเลยหรือมันทำไม่ได้หรือทำได้ด้วยวิธีอื่นหรือฉันมีความทะเยอทะยานมาก แต่ใน Windows มันค่อนข้างง่ายที่จะทำ ฉันต้องการย้ายไปใช้ Linux แต่สิ่งสำคัญสำหรับฉันคือการกำหนดเวลาปิด / ระงับ / ไฮเบอร์เนตและให้พีซีเริ่มทำงานด้วยตัวเอง ความนับถือ.

  7.   Jose Albert dijo

    บางทีนี่อาจจะให้แนวคิดใหม่ ๆ แก่คุณ: http://cirelramos.blogspot.com/2016/01/reiniciar-apagar-o-ejecutar-otra-tarea.html

  8.   วิลลาร์มันด์ dijo

    ขอบคุณฉันจะอ่านอย่างละเอียดมีบางอย่างจะช่วยฉันได้ ความนับถือ.

  9.   เอดูอาร์โดคูโอโม dijo

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

    https://github.com/reduardo7/bashx

    ทักทาย!

    1.    จิ้งจก dijo

      เรียนเอดูอาร์โด ฉันคิดว่านี่เป็นโครงการที่ยอดเยี่ยม บางทีคุณอาจแบ่งปันกับชุมชนทั้งหมดของได้ desdelinuxโปรดจำไว้ว่าคุณสามารถเผยแพร่บทความเกี่ยวกับโครงการของคุณบนเว็บไซต์ของเราได้ หากคุณไม่ทราบวิธีดำเนินการ ฉันแนะนำให้อ่าน https://blog.desdelinux.net/guia-redactores-editores/ แนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างบทความอยู่ที่ใด desdelinux และขั้นตอนที่จะต้องดำเนินการ อาจเป็นไปได้สำหรับชุมชน การรู้เกี่ยวกับประโยชน์ของโครงการของคุณก่อน และอย่างที่สองคือการเรียนรู้วิธีทำสิ่งประเภทนี้ เราขอเชิญคุณและขอเชิญชวนผู้อื่นให้แบ่งปันโครงการของพวกเขากับเราและชุมชนขนาดใหญ่ที่อยู่รอบตัวเรา

  10.   มิเกลอูโรซารุยซ์ dijo

    สวัสดี.
    ฉันยังใหม่กับโลกของการดูแลระบบเครื่อง Linux และฉันอยากรู้ว่าคุณแนะนำอะไรบ้าง: ksh, bash, perl, php, python ….
    ขอบคุณมากและขอแสดงความนับถือ
    มิเกล.