วิธีค้นหาไดเร็กทอรีที่มี Bash Script จากภายในสคริปต์

Withi Khnha Direkthxri Thi Mi Bash Script Cak Phayni Skhript



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

วิธีค้นหาไดเร็กทอรีที่มี Bash Script จากภายในสคริปต์

ในขณะที่เขียนสคริปต์ทุบตี คุณอาจต้องการตำแหน่งของสคริปต์เพื่อทำงานต่างๆ โดยอัตโนมัติ มีพาธสองประเภทใน Linux:

  • เส้นทางญาติ: ญาติคือไดเร็กทอรีการทำงานปัจจุบัน
  • เส้นทางสัมบูรณ์: นี่คือเส้นทางที่สมบูรณ์ของไดเร็กทอรีและไฟล์

วิธีหนึ่งที่พบได้บ่อยที่สุดในการกำหนดตำแหน่งของสคริปต์ทุบตีคือการใช้ รหัสผ่าน สั่งการ. เดอะ รหัสผ่าน สั่งการ ( พิมพ์ไดเรกทอรีการทำงาน) จะแสดงไดเรกทอรีปัจจุบัน







ดังนั้นในหลาย ๆ สถานการณ์เพียงแค่ใช้ รหัสผ่าน คำสั่งไม่ทำงานเนื่องจากให้เฉพาะเส้นทางของไดเร็กทอรีที่กำลังทำงานอยู่เท่านั้น



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



บทช่วยสอนนี้เกี่ยวกับการรับเส้นทางของไดเร็กทอรีซึ่งมีไฟล์สคริปต์ bash จากภายในสคริปต์





วิธีรับเส้นทางไดเรกทอรีซึ่งเป็นที่ตั้งของไฟล์ Bash Script

อีกวิธีในการกำหนดไดเร็กทอรีของสคริปต์ Bash คือการใช้ ชื่อ สั่งการ. เดอะ ชื่อ คำสั่งใช้เส้นทางของไฟล์เป็นอาร์กิวเมนต์และส่งคืนส่วนไดเร็กทอรีของเส้นทาง

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



สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ ชื่อ รันคำสั่งต่อไปนี้ในเทอร์มินัล:

$ ผู้ชาย ชื่อ

เท่านั้น ชื่อ จะไม่ทำงาน เราต้องการคำสั่งอื่นนั่นคือ อ่านลิงค์ . เดอะ อ่านลิงค์ คำสั่งพิมพ์แก้ไขลิงก์สัญลักษณ์ รับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งนี้โดยเรียกใช้:

$ ผู้ชาย อ่านลิงค์

ตอนนี้, สร้างสคริปต์ :

$ ซูโด นาโน myScript.sh

และพิมพ์:

#!/bin/bash

เสียงสะท้อน 'เส้นทางสคริปต์ทุบตีคือ $(dirname -- '$(readlink -f – '$0') ' ; ) ';

ในการเรียกใช้สคริปต์ให้ใช้:

$ ทุบตี myScript.sh

ลองเปลี่ยนไดเร็กทอรีและดูว่าผลลัพธ์คืออะไร:

บันทึก: ในกรณีหนึ่ง สคริปต์ด้านบนจะไม่ทำงานหากไฟล์มีแหล่งที่มาแทนที่จะดำเนินการ ดังที่เห็นได้จากเอาต์พุตต่อไปนี้:

ผลลัพธ์คือ /home/sam/เดสก์ท็อป ในขณะที่ไฟล์สคริปต์มีอยู่ในไฟล์ /บ้าน/แซม ไดเรกทอรี

บทสรุป

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