लिनक्स कमांड लाइन में कोई निर्देशिका मौजूद है या नहीं, इसकी जांच कैसे करें?


28

लिनक्स कमांड लाइन में कोई निर्देशिका मौजूद है या नहीं, इसकी जांच कैसे करें?

समाधान: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨


4
इसलिए इसे समाधान के रूप में चिह्नित करें।
ब्लूराजा - डैनी पफ्लुगुएफ्ट

जवाबों:


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"लेकिन वे वास्तव में एक ही हैं।
डेविड रोड्रिगेज -

हर किसी का खोल नहीं है bash!
रीयरियरपोस्ट

@reinierpost फिर आपको शुभकामनाएँ ...
स्टेफानो बोरीनी

@Stefano Borini: मैं अभी भी उपयोग करता tcshहूं क्योंकि मैं अपने को फिर से लिखने के लिए बहुत आलसी हूं .tcshrc। लेकिन इस बिंदु पर अधिक: यह ओपी की समस्या को समझा सकता है।
reinierpost

11

मान लें कि आपका शेल BASH है:

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

अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि `तब '

फिर पता करें कि आपका खोल क्या है। शायद cshया tcsh?
रीयरियरपोस्ट

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

क्या मेरे पास ईएलएसई जैसा कुछ हो सकता है, भले ही निर्देशिका मौजूद न हो, एक पाठ दिखाने के लिए?

वर्कअराउंड:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
लर्निंग

7

विहित तरीका परीक्षण (1) उपयोगिता का उपयोग करना है:

test -d path

जहाँ "पथ" प्रश्न में निर्देशिका का पथनाम है।


आदेश स्वयं के द्वारा नहीं दिखाई देता है, लेकिन जब एक के साथ जुड़ जाता है echo "Directory Exists"
एजाज

2

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

उदाहरण के लिए:

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

इच्छा उत्पादन: root dir


[-d: कमांड नहीं मिली यह वही है जो मुझे मिलता है

"[" और "-" के बीच एक स्थान होना चाहिए। यह बॉर्न और बैश शेल पर काम करना चाहिए।

0

यह जाँचने के लिए कि कोई निर्देशिका शेल स्क्रिप्ट में मौजूद है या नहीं, आप निम्न का उपयोग कर सकते हैं:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

विपरीत की जाँच करने के लिए, !से पहले जोड़ें-d ->[ ! -d ....]


सुपर उपयोगकर्ता में आपका स्वागत है! यह एक और उत्तर को दोहराता है और कोई नई सामग्री नहीं जोड़ता है। कृपया जवाब न दें जब तक कि आपके पास योगदान देने के लिए वास्तव में कुछ नया न हो।
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.