โดยไม่คำนึงถึงการแจกจ่าย Linux ที่เราใช้ ― ไม่ต้องสงสัยเลยว่าสิ่งที่ฉันชอบคือ Ubuntu as ทันทีที่เราเข้าสู่การใช้ระบบนี้แน่นอน ความต้องการระบบอัตโนมัติ. นั่นคือ: สร้างไฟล์ คำสั่งของตัวเอง ที่ดำเนินการคำสั่งบางอย่างในแบบของคุณ ความต้องการนี้อาจเกิดจากสาเหตุบางประการ:
- ลดความซับซ้อนของไวยากรณ์ ของคำสั่งที่เรามักจะดำเนินการ
- ดำเนินการที่ครอบคลุมใด ๆ ความต้องการที่ไม่ได้คาดการณ์ไว้ในระบบ ปฏิบัติการ.
- ลำดับตามลำดับ ที่เราทำซ้ำอย่างตั้งใจ
แม้ว่าสคริปต์ทุบตีสามารถเรียกใช้ใน / จากไดเร็กทอรีใดก็ได้ แต่โดยปกติแล้ว สร้างไดเร็กทอรีเพื่อโฮสต์สคริปต์เหล่านี้. ในกรณีของฉัน:
$ mkdir /home/pedro/.bin
ฉันเชื่อเรื่องนี้ ไดเรกทอรี (ซ่อนโดยนำจุดหน้าชื่อ) เพื่อเก็บสคริปต์ทั้งหมดที่ฉันใช้ที่นั่น ชื่อของไดเร็กทอรีถูกซ่อนไว้ไม่มีความหมายอื่นใดนอกจาก - เว้นแต่จะระบุไว้อย่างชัดเจนเป็นอย่างอื่น - จะไม่ปรากฏเมื่อดู / home / pedro จากโปรแกรมดูไฟล์ในโหมดกราฟิก.
ตอนนี้คุณต้อง แจ้งลินุกซ์ว่าควรดูที่นั่นด้วย (/home/pedro/.bin) คำสั่งที่ดำเนินการจากเทอร์มินัล
$ PATH=$PATH;/home/pedro/.bin
ด้วยวิธีนี้ระบบจะค้นหาคำสั่งซื้อของเราที่นั่น จนกว่าเราจะปิดเซสชัน. เพื่อให้สมาคมนี้ถาวร:
$ sudo nano /etc/environment
และเราเพิ่ม
:/home/pedro/.bin
ในตอนท้ายของเส้น PATH เป็นสิ่งสำคัญมากที่จะต้องไม่ลืมเครื่องหมายจุดคู่ก่อนที่อยู่ของไดเร็กทอรีที่เรารวมอยู่ด้วยเนื่องจาก นี่คือกลไกการเพิ่ม.
สคริปต์ทีละขั้นตอนแรกของเรา
เราสร้างไฟล์ของเราเช่นนี้ในกรณีของฉัน:
$ touch ~/.bin/donde
และในการแก้ไขคุณสามารถใช้โปรแกรมแก้ไขที่คุณต้องการหรือทำตามข้อบ่งชี้นี้:
$ gedit ~/.bin/donde &
และเราเพิ่มเนื้อหาต่อไปนี้:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
การวิเคราะห์สคริปต์
สายแรกของเรา «Shebang» (#! / usr / bin / env bash) ขอให้ Linux รายงาน ที่ตั้งของ bash shell และสิ่งที่ตามมาจะถูกดำเนินการตามข้อกำหนดของ bash ข้อควรระวังนี้ สะดวกที่จะตรวจสอบให้แน่ใจ สคริปต์ของเราทำงานกับการติดตั้งใด ๆ. เป็นไปได้อีก Shebang เขาหัวเราะ:
#!/bin/bash
ความแตกต่างระหว่างพวกเขาอาจเป็นเรื่องแปลกมากและฉันจะอธิบายให้ฟัง ในช่วงสุดท้ายนี้ ฉันคิดว่าในระบบของเรา bash shell อยู่ที่ / bin / bash address. อย่างไรก็ตามที่ฉันเสนอในสคริปต์ ฉันเดาว่าฉันไม่รู้ว่ามันอยู่ที่ไหน ล่ามทุบตี ฉันขอให้ระบบเขาให้ที่อยู่นั้น.
บรรทัดที่สาม: อย่างที่คุณเห็นบรรทัดที่สองคือ if สำหรับทุบตีตัวละคร«$#« มีจำนวนพารามิเตอร์ที่เราส่งผ่านจากบรรทัดคำสั่ง. ดังนั้น»ถ้า [$ # -lt 1]; » หมายถึง "ถ้าจำนวนพารามิเตอร์น้อยกว่า 1".
บรรทัดที่สี่: แล้วก็ (แปลจากภาษาอังกฤษตามตัวอักษร: แล้ว) ที่นี่จะระบุว่าสิ่งที่จะเกิดขึ้นต่อไป จะถูกดำเนินการเมื่อมีการประเมินเงื่อนไข if เป็นความจริง: กล่าวอีกนัยหนึ่งจำนวนพารามิเตอร์น้อยกว่า 1 นั่นคือศูนย์
บรรทัดที่ห้า: หากเรารันสคริปต์ของเราโดยไม่มีพารามิเตอร์ใด ๆ เราจะแสดงในเทอร์มินัล«คุณต้องส่งพารามิเตอร์»
บรรทัดที่หก: ระบุว่าสิ่งต่อไปนี้จะถูกดำเนินการ เมื่อเงื่อนไขที่เราประกาศไม่เป็นความจริง.
บรรทัดที่เจ็ด: Se เรียกใช้คำสั่ง«อยู่ไหน« มาพร้อมกับเนื้อหาที่เราได้ส่งผ่านไป พารามิเตอร์แรก.
บรรทัดที่แปด: ด้วย«fi»แสดงว่าบล็อกสิ้นสุดลง if.
ทดสอบสคริปต์ของเรา
มันเป็นสิ่งสำคัญ เพิ่มสิทธิ์การเขียน ไปที่สคริปต์:
$ chmod -x ~/.bin/donde
หากไม่มีสิ่งนี้ข้อผิดพลาด "ปฏิเสธการอนุญาต" จะปรากฏขึ้น. หลังจากนั้นเราสามารถเรียกใช้สคริปต์ของเราได้
$ donde php
ควรแสดงตำแหน่งของไบนารี php ไฟล์ต้นฉบับและหน้าคน อะไรแบบนั้น:
php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php /usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache /usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz
การสรุป
- เราเปิดใช้งานไฟล์ ".bin" เพื่อเก็บสคริปต์ของเรา.
- เรามีให้ ข้อมูลไปยัง Linux เพื่อรวมไดเร็กทอรีนี้ในการค้นหาคำสั่ง.
- เราสร้างสคริปต์ของเรา
- ความแตกต่างระหว่าง แตกต่างกัน Shebang.
- การใช้ จำนวนพารามิเตอร์ที่ส่งผ่านด้วย $ #.
- การใช้ พารามิเตอร์แรก กับ $1.
ฉันหวังว่าและขอให้สคริปต์นี้มีประโยชน์สำหรับคุณ
ดีมากและอธิบายได้ดี แต่พารามิเตอร์หมายถึงอะไร?
ขอบคุณมิเกล!
ฉันเข้าใจโดยพารามิเตอร์ข้อมูลเสริมทั้งหมดที่ให้กับโปรแกรมฟังก์ชันหรือระบบ เนื่องจากอาจเป็นเรื่องยุ่งยากให้ฉันตอบคุณด้วยตัวอย่างบางส่วน
ในคำสั่ง linux เพื่อคัดลอกไฟล์ a.txt ไปยังไฟล์ b.txt เราจะเขียนสิ่งต่อไปนี้:
$cp a.txt b.txt
โปรแกรม cp ที่นี่รับสองพารามิเตอร์ซึ่งเป็นชื่อของสองไฟล์ตัวแรก (ต้องมี) a.txt และ b.txt ตัวที่สอง
อีกตัวอย่างหนึ่ง: หากคุณส่งไปพิมพ์จากคอนโซลด้วยคำสั่ง
$ lp file.pdf
ในกรณีนี้ "file.pdf" คือพารามิเตอร์สำหรับโปรแกรม lp
ฉันหวังว่าฉันจะพอใจกับข้อสงสัยของคุณ
ความนับถือ
ความคิดเห็นของฉันไม่ออกมามันเป็นการขาดความเคารพฉันไม่กลับไปที่ฟอรัมนี้
ฉันไม่ทราบว่าเกิดอะไรขึ้นไม่ว่าในกรณีใดสิ่งนี้ได้รับการเผยแพร่
อาศิรพจน์