ฉันสามารถสร้างคำสั่งของตัวเองได้หรือไม่?


12

ฉันสงสัยว่าฉันสามารถสร้างคำสั่งของตัวเองได้หรือไม่หากฉันพิมพ์ 'music' ที่บรรทัดคำสั่ง vlc ของฉันควรเปิดขึ้นและเริ่มเล่นรายการเพลงของฉัน สิ่ง vlc เป็นเพียงตัวอย่าง แต่คำถามยังคงอยู่

ฉันสามารถสร้างคำสั่งของตัวเองได้หรือไม่? ถ้าใช่เป็นอย่างไร


คุณสามารถสร้างสคริปต์ถ้านั่นคือสิ่งที่คุณต้องการ?
Alvar

คำตอบ:


19

ใช่ - สร้างไฟล์ชื่อmusicและวางสิ่งต่อไปนี้ไว้ภายใน:

#!/bin/bash
echo "Hello world"

ถัดไปพิมพ์chmod +x music- สิ่งนี้ทำให้สามารถเรียกใช้ไฟล์ได้ ตอนนี้คุณสามารถพิมพ์./musicเพื่อเรียกใช้สคริปต์นี้

เป็นความคิดที่ดีที่จะพิมพ์echo $PATHและคัดลอกสคริปต์ไปยังหนึ่งในไดเรกทอรีเหล่านั้น ผมจะแนะนำการสร้าง$HOME/binและเพิ่มว่าที่คุณเส้นทางผ่านหรือ~/.bash_profile ~/.profileซึ่งสามารถทำได้โดยการเพิ่ม export PATH="$HOME/bin:$PATH"(ที่หนึ่งของไฟล์เหล่านั้น): จากนั้นคุณจะต้องเรียกใช้source .bash_profile(สมมติว่าคุณใส่ไว้ในไฟล์นั้น) เพื่อโหลดซ้ำ

อีกทางเลือกหนึ่งคือการเพิ่มคำสั่งที่คุณต้องการเรียกใช้เป็นนามแฝงทุบตี คุณสามารถทำได้โดยเพิ่มสิ่งต่อไปนี้ในไฟล์ที่มีชื่อ.bash_aliasesในโฮมไดเร็กตอรี่ของคุณ:

alias music='vlc --some-option --foo'

เรียกใช้source ~/.bash_aliasesหรือออกจากระบบและเข้าสู่ระบบและมันควรจะทำงาน :-)


3

วิธีที่ดีที่สุดในการทำเช่นนี้คือการแก้ไข (หรือสร้าง) ไฟล์ที่เรียกว่า.bash_aliasesในโฟลเดอร์บ้านของคุณ

ไวยากรณ์ค่อนข้างง่าย:

alias install='sudo apt-get -y install'

ด้วยคำสั่งนี้หากคุณพิมพ์installเทอร์มินัลคำสั่งนั้นจะถูกตีความว่าเป็น

sudo apt-get -y install

อย่างไรก็ตามคำสั่งเหล่านี้จะไม่ทำงานที่ใดก็ได้นอกเทอร์มินัล


1

ไฟล์เรียกทำงานใด ๆ ในไดเรกทอรีในพา ธ ของคุณอาจเป็น "คำสั่ง" อาจเป็นสคริปต์ตามคำแนะนำในคำตอบอื่น ๆ แต่อาจเป็นโปรแกรมที่คอมไพล์ในภาษาที่คุณสนับสนุน

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

หากคุณใส่คำสั่งใหม่ลงในไดเรกทอรีในพา ธ ของคุณเชลล์จะสามารถพบคำสั่งนั้นได้ สถานที่ที่พบได้บ่อยที่สุดคือ $ HOME / bin หากมีไดเรกทอรีนี้อยู่บ่อยครั้งมันจะถูกเพิ่มลงในพา ธ ของคุณโดยอัตโนมัติ

ข้อควรจำสองประการเมื่อตั้งค่านี้คือ: 1) โดยปกติแล้วควรใช้ชื่อเฉพาะสำหรับคำสั่งของคุณที่ไม่ตรงกับชื่อที่กำหนดไว้ในระบบของคุณ มีการถกเถียงกันมากมายเกี่ยวกับเรื่องนี้ แต่ประเด็นหลักคือคำสั่งที่คุ้นเคยไม่ควรให้ผลลัพธ์ที่คาดไม่ถึงหากมีคนอื่นกำลังใช้ระบบของคุณและการใช้ความคุ้นเคยกับคำสั่งทั่วไปที่ทำสิ่งพิเศษอาจทำให้คุณมีปัญหาเมื่อคุณทำงานบนระบบอื่น ไม่ได้กำหนดไว้ในที่นั้น

2) คุณสามารถเพิ่ม $ HOME / bin ไปที่จุดเริ่มต้นหรือจุดสิ้นสุดของเส้นทางของคุณ (หรือที่ใดก็ได้ในระหว่าง แต่ไม่ปกติทำ)

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

การเพิ่มในส่วนท้ายของคำสั่งพา ธ ของคุณนั้นปลอดภัยกว่าเล็กน้อยเพราะคำสั่งใด ๆ ที่มีชื่อเดียวกับคำสั่งของคุณที่อยู่ในพา ธ ของคุณจะถูกพบก่อนแล้วจึงเรียกใช้แทน - และสิ่งอื่น ๆ ที่อาศัยคำสั่งนั้น .

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

เช่นเดียวกับสิ่งส่วนใหญ่ใน Linux มีหลายวิธีในการสร้างและใช้คำสั่งใหม่และแต่ละคำสั่งมีข้อดีและข้อ จำกัด ของตัวเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.