वॉच रन 2 कमांड का उपयोग करना


42

मुझे एक ही टर्मिनल विंडो में दो कमांड देखने हैं। मेरा मतलब कुछ ऐसा है

watch du -h filename.txt && df -h

लेकिन इसका केवल एक आउटपुट दिखा।

तो मैं जो सोच रहा हूं वह हो सकता है कि एक ही विंडो पर कई कमांड चलाने के लिए घड़ी का उपयोग करना संभव न हो।

अगर कोई रास्ता है, तो कृपया मुझे बताएं।

धन्यवाद।

जवाबों:


67

आप आदेशों को उद्धृत कर सकते हैं:

watch "du -h filename.txt && df -h"

और उन्हें एक साथ निष्पादित किया जाएगा।


धन्यवाद ओली। वास्तव में कार्यालय पीसी इसलिए प्रयोगों को करने की हिम्मत नहीं कर रहा है। इसलिए सुनिश्चित समाधान के लिए यहां पोस्ट किया गया। धन्यवाद।
r --dʒɑ

अरे आपको यकीन है कि वे काम करेंगे? क्योंकि निष्पादित करते समय मुझे कुछ अनुमति से इनकार किया जा रहा है "df:` / usr / raja / hostctrl / नया ': अनुमति अस्वीकृत "
r Permd

यह एक अलग मुद्दा है। आप उस मुद्दे को देखने के बिना लपेटे हुए देखेंगे।
ओली

3
इस काम से अवगत रहें क्योंकि उन उदाहरणों में सत्य के साथ वापसी होती है । पहले कमांड को गलत होना चाहिए दूसरा कमांड निष्पादित नहीं किया जाएगा (क्योंकि boolean evaluation shortcut)
कराटेग

3
एफटीआर, मेरी कमांड का उपयोग करता है &&क्योंकि ओपी उपयोग करता है &&। आदेशों का संयोजन और उनका लिंक उत्तर के लिए आकस्मिक है।
ओली

19

यदि आप यह सुनिश्चित करना चाहते हैं कि दोनों कमांड निष्पादित हों, तो उनमें से एक तरीका ;इसके बजाय उन्हें अलग करना है &&

watch 'du -h filename.txt; df -h'

&&दूसरे कमांड (दूसरे ऑपरेंड, &&) के अधिकार को केवल तभी निष्पादित करने की अनुमति देता है जब पहले कमांड को सफलतापूर्वक निष्पादित किया जाता है (निकास स्थिति 0)। यदि यह अभिप्रेत व्यवहार है, तो साथ चलें &&


1
मूल प्रश्न के उत्तर के रूप में यह अर्धविराम रूप मुझे सबसे अच्छा लगता है। यदि आप "दो कमांड चलाना" चाहते हैं, तो अर्धविराम का उपयोग करें! यदि आप "एक कमांड चलाना चाहते हैं, तो हो सकता है एक और" का उपयोग करें && ....
जेरेमीडाउग्लास

3

पूर्णता के लिए ...

 watch 'du -h filename.txt || true && df -h'

द '|| सच्चा 'भाग पहले कमांड को सही के रूप में मूल्यांकन करने का कारण बनता है, भले ही वह किसी कारण से विफल हो। यह && के बाद अगले कमांड को अनुमति देगा कि कोई भी चीज़ पहले आउटपुट न करे। यह परिदृश्य के लिए सबसे अधिक अनावश्यक है, बस इसे संभव दिखाने के लिए।


-1

एक साथ चलाने के लिए कई कमांड के लिए, &कमांड के बीच सिंगल ऑपरेटर का उपयोग करें । पसंद:

dothis & dothat

किसी भी भ्रम को दूर करने के लिए, यहाँ विभिन्न ऑपरेटर कैसे काम करते हैं:

c1 & c2  # Run both commands parallelly
c1 ; c2  # Run both commands one by one
c1 && c2 # Run c2 only if c1 exits successfully
c1 || c2 # Run c2 only if c1 fails

c1 और c2 दोनों कमांड को समानांतर नहीं चलाएगा, अगर c1 सफल रन है तो केवल c2 ही चलेगा।
r --dɑː
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.