मैं अपनी /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और आप अपने घर निर्देशिका प्राप्त करेंगे (लेकिन मुझे पता नहीं क्यों ...)