मेरे पास एक ऐसा प्रोग्राम है जो चलने पर * आउटपुट फ़ाइल में अपना आउटपुट लॉग करता है। मैंने कई अलग-अलग समय चलाने के लिए एक बैश स्क्रिप्ट स्थापित की है, इसलिए प्रत्येक रन एक अलग * .out फ़ाइल को लिखता है। मैंने पाया कि मैं इस तरह हाल ही में * .out फ़ाइल tail
सकता है:सबसे हाल की फ़ाइल को आजमाएं
watch tail $(ls -tr *.out | tail -n1)
समस्या हो कि संदर्भित $()
केवल एक बार निष्पादित हो जाता है लगता है। तो जब पहला रन खत्म हो जाता है, watch
tail
उसी * .out फ़ाइल पर जारी रहता है, भले ही अब एक नई * .out फ़ाइल हो।
एक रन खत्म होने के बाद मैं अगली * .out फ़ाइल पर जाने के लिए इसे कैसे बदल सकता हूं?
मैंने उद्धरण और कोष्ठक के कुछ घोंसले करने की कोशिश की, लेकिन मैं वास्तव में संदर्भ के विवरण को समझ नहीं पा रहा हूं। मामले इस तथ्य से जटिल हैं कि watch
sh
पर अपना आदेश पास करता है, भले ही मैं बैश का उपयोग कर रहा हूं।
बोनस अंक: यह बहुत अच्छा होगा अगर यह सिर्फ watch
हर n
सेकंड दोहराने की बजाय tail -f
लिए संशोधित किया जा सकता है।
एचएम..मैं वास्तव में उपयोग के मामले को समझ नहीं पा रहा हूं। क्या आप वास्तविक समय में कुछ फाइलें पढ़ना चाहते हैं? यदि हां, तो 'tail -f * .out' – pivanchy
का उपयोग करना आसान है, मैं आमतौर पर @pivanchy से सहमत हूं, हालांकि यह उल्लेखनीय है कि POSIX 'पूंछ' एक समय में एक से अधिक फाइलों को संभालने की गारंटी नहीं है। – kojiro
@pivanchy जो समाधान है। मुझे नहीं पता था कि यह इतना आसान था। –