สร้างสคริปต์ของคุณเองโดยใช้ bash

การเรียนรู้ลินุกซ์

โดยไม่คำนึงถึงการแจกจ่าย 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.

ฉันหวังว่าและขอให้สคริปต์นี้มีประโยชน์สำหรับคุณ


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

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

*

*

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

      มิเกล dijo

    ดีมากและอธิบายได้ดี แต่พารามิเตอร์หมายถึงอะไร?

         ภาพแทนของ Pedro Ruiz Hidalgo dijo

      ขอบคุณมิเกล!

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

      ในคำสั่ง linux เพื่อคัดลอกไฟล์ a.txt ไปยังไฟล์ b.txt เราจะเขียนสิ่งต่อไปนี้:

      $cp a.txt b.txt

      โปรแกรม cp ที่นี่รับสองพารามิเตอร์ซึ่งเป็นชื่อของสองไฟล์ตัวแรก (ต้องมี) a.txt และ b.txt ตัวที่สอง

      อีกตัวอย่างหนึ่ง: หากคุณส่งไปพิมพ์จากคอนโซลด้วยคำสั่ง

      $ lp file.pdf

      ในกรณีนี้ "file.pdf" คือพารามิเตอร์สำหรับโปรแกรม lp

      ฉันหวังว่าฉันจะพอใจกับข้อสงสัยของคุณ

      ความนับถือ

      มิเกล dijo

    ความคิดเห็นของฉันไม่ออกมามันเป็นการขาดความเคารพฉันไม่กลับไปที่ฟอรัมนี้

         ภาพแทนของ Pedro Ruiz Hidalgo dijo

      ฉันไม่ทราบว่าเกิดอะไรขึ้นไม่ว่าในกรณีใดสิ่งนี้ได้รับการเผยแพร่

      อาศิรพจน์