मैं अपनी /tmp/
निर्देशिका में फ़ाइलों की संख्या देखने की कोशिश कर रहा हूं । इसके लिए मुझे लगा कि यह कमांड काम करेगी:
watch sh -c 'ls /tmp/|wc -l'
लेकिन यह काम करने के लिए प्रतीत होता है जैसे कि ls
कोई तर्क नहीं था। अर्थात्, मैं अंदर हूं ~
, और मुझे इसके बजाय फाइलों की संख्या मिल रही है /tmp/
। मुझे एक वर्कअराउंड मिला, जो काम करने लगता है:
watch sh -c 'ls\ /tmp/|wc -l'
लेकिन मुझे ls
और के बीच की जगह से बचने की आवश्यकता क्यों है /tmp/
? कमांड को किस प्रकार से रूपांतरित किया जाता है watch
ताकि ls
आउटपुट को फीड किया जा सके wc
, लेकिन /tmp/
तर्क के रूप में पारित नहीं किया जाता है ls
?
watch
गलत तरीके से उपयोग कर रहे हैं । जिस कमांड को आप पास करते हैं, watch
वह इसके द्वारा खिलाया जाता watch
है sh -c
, इसलिए आप sh -c
दो बार कर रहे हैं ।
/tmp
एक तर्क है sh
, एक तर्क नहीं है ls
।
watch "sh -c 'ls /tmp | wc -l'"
इस आदेश को करने से वांछित प्रभाव प्राप्त होना चाहिए। यह गलती नहीं देखता है, कोशिश करोsh -c ls /tmp
और आप अपने घर निर्देशिका प्राप्त करेंगे (लेकिन मुझे पता नहीं क्यों ...)