จะตรวจสอบว่ามีไดเร็กตอรี่อยู่ในบรรทัดคำสั่ง Linux หรือไม่?


28

จะตรวจสอบว่ามีไดเร็กตอรี่อยู่ในบรรทัดคำสั่ง Linux หรือไม่?

วิธีการแก้: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨


4
ดังนั้นทำเครื่องหมายว่าเป็นวิธีแก้ปัญหา
BlueRaja - Danny Pflughoeft

คำตอบ:


40
$ if test -d /the/dir; then echo "exist"; fi 

ฉันต้องการมันในบรรทัดคำสั่งไม่ใช่ในสคริปต์

5
นั่นคือบรรทัดคำสั่ง คุณสามารถพิมพ์ลงในทุบตีโดยตรงหรือคุณสามารถกลับไปที่test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"แต่มันจะเหมือนกันจริงๆ
David Rodríguez - dribeas

ไม่ใช่ทุกคนของเชลล์bash!
reinierpost

@reinierpost โชคดีสำหรับคุณ ...
Stefano Borini

@Stefano Borini: ฉันยังใช้tcshเพราะฉันขี้เกียจเกินกว่าจะเขียนใหม่.tcshrcได้ แต่ประเด็นก็คือสิ่งนี้อาจอธิบายปัญหาของ OP ได้
reinierpost

11

สมมติว่าเชลล์ของคุณคือ BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi

ข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด `แล้ว '

จากนั้นหาว่าเปลือกของคุณคืออะไร บางทีcshหรือtcsh?
reinierpost

8
[ -d /home/bla/ ] && echo "exits"

ฉันสามารถมีบางอย่างเช่น ELSE เพื่อแสดงข้อความแม้ว่าไดเรกทอรีไม่มีอยู่หรือไม่

วิธีแก้ปัญหา:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop

7

วิธีมาตรฐานคือการใช้ยูทิลิตี้ทดสอบ (1):

test -d path

โดยที่ "path" เป็นชื่อพา ธ ของไดเรกทอรีที่เป็นปัญหา


คำสั่งไม่ปรากฏว่าจะทำด้วยตัวเอง echo "Directory Exists"แต่เมื่อเข้าร่วมกับ
Ejaz

2

[ -d "YOUR_DIR" ] && echo "is a dir"

เช่น:

[ -d / ] && echo "root dir"

จะส่งออก: root dir.


[-d: ไม่พบคำสั่งนี่คือสิ่งที่ฉันได้รับ

ระหว่าง "[" และ "-" ต้องเป็นช่องว่าง สิ่งนี้ควรใช้กับ Bourne และ Bash shell

0

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

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

หากต้องการตรวจสอบสิ่งที่ตรงกันข้ามให้เพิ่ม!ก่อน-d ->[ ! -d ....]


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