"ही" धारा मेरे प्रॉम्प्ट (इन stdin
) में मुद्रित होती है और मेरे में नहींstdout
नहीं, यह "अपने में मुद्रित" नहीं हैstdin
।
यदि आप रिटर्न दबाते हैं, तो यह hi
कमांड के रूप में चलने की कोशिश नहीं करेगा । यह सिर्फ इतना है कि आपके प्रॉम्प्ट के बाद कर्सर echo
मुद्रित hi
होने पर पृष्ठभूमि में ।
शायद आप एक प्रमुख नईलाइन प्रिंट करना चाहते हैं , जैसे (sleep 1m && echo -e '\nhi' &)
। ( echo
अपने शेल के लिए आवश्यकतानुसार समायोजित करें। या printf
पोर्टेबिलिटी के लिए उपयोग करें ।)
मैंने &
पृष्ठभूमि के काम को "विघटित" करने के लिए अंदर को रखा , इसलिए आप "शोर" से भी बचते हैं [1]+ Done
। साथ &&
आदेशों के बीच, &
पूरे परिसर कमान श्रृंखला पर लागू होता है तो यह सुरक्षा प्रॉम्प्ट सही करने के लिए के लिए इंतज़ार कर के दूर के बजाय रिटर्न sleep
बाहर निकलने की तरह आप के साथ मिल चाहते हैं, उनके(sleep 1; echo ... &)
यहाँ क्या होता है (1 सेकंड की देरी के साथ):
peter@volta:~$ (sleep 1 && echo -e '\nhi' &)
peter@volta:~$
hi
# cursor is at the start of this empty line.
बैश को पता नहीं है कि echo
कुछ मुद्रित किया गया है, इसलिए यह नहीं जानता कि इसके संकेत को फिर से प्रिंट करने या स्क्रीन को साफ करने की आवश्यकता है। आप मैन्युअल रूप से ऐसा कर सकते हैं control-L
।
आप एक शेल फ़ंक्शन लिख सकते हैं जो खत्म होने के बाद अपने संकेत को फिर से प्रिंट करने के लिए बैश हो जाता हैecho
। बस कर रहे हैं echo "$PS1"
किसी भी पहले से ही टाइप अक्षरों को पुन: पेश नहीं करेगा। kill -WINCH $$
मेरे सिस्टम पर स्क्रीन को साफ किए बिना अपनी प्रॉम्प्ट लाइन को फिर से प्रिंट करने के लिए बैश हो जाता है hi
, प्रॉम्प्ट से पहले खुद से लाइन पर छोड़ देता है । SIGWINCH को स्वचालित रूप से भेजा जाता है, जब WINVA आकार के चेंजेस होते हैं, और बैश की प्रतिक्रिया उस पर होती है जो हम चाहते हैं।
यह अन्य गोले के साथ काम कर सकता है, लेकिन मैं इसे 100% पोर्टेबल / POSIX बनाने का प्रयास नहीं कर रहा हूं। ( दुर्भाग्य से, यह केवल bash4.4 पर काम करता है, bash4.3 पर नहीं, या कुछ सेटिंग पर निर्भर करता है जिससे मैं अनजान हूं )
# bash4.4
peter@volta:~$ (sleep 2 && echo -e '\nhi' && kill -WINCH $$ &)
peter@volta:~$ ljlksjksajflasdf dfas # typed in 2 seconds
hi
peter@volta:~$ ljlksjksajflasdf dfas # reprinted by Bash because of `kill -WINCH`
आप इसे आसानी से एक शेल फ़ंक्शन में लपेट सकते हैं जो एक नींद आर्ग और एक संदेश लेता है।
Bash 4.3 SIGWINCH के बाद अपने संकेत को फिर से प्रिंट नहीं करता है, इसलिए यह वहां काम नहीं करता है। मैंने shopt -s checkwinsize
दोनों प्रणालियों पर सक्षम किया है, लेकिन यह केवल बैश 4.4 सिस्टम (आर्क लिनक्स) पर काम करता है।
यदि यह काम नहीं करता है, तो आप कोशिश कर सकते हैं (sleep 2 && echo -e '\nhi' && echo "$PS1" &)
, जो कमांड लाइन खाली होने पर "काम करता है"। (यह PROMPT_COMMAND
सेट होने की संभावना को भी नजरअंदाज करता है।)
जब आप टाइमर पर आग लगाते हैं, तो टर्मिनल आउटपुट प्राप्त करने के लिए वास्तव में कोई भी साफ तरीका नहीं है जो आप अपने टर्मिनल पर कर सकते हैं। यदि आप किसी चीज़ को स्क्रॉल करने के बीच में हैं less
, तो आप इसे आसानी से याद कर सकते हैं।
यदि आप इंटरेक्टिव परिणाम के साथ कुछ देख रहे हैं, तो मैं एक ऑडियो फ़ाइल चलाने का सुझाव देता हूं। जैसे कमांड-लाइन प्लेयर जैसे mpv
(MPlayer2 का अच्छा कांटा)। या एक वीडियो फ़ाइल चुनें ताकि एक नई विंडो खुले।
(sleep 1 && mpv /f/share/music/.../foo.ogg </dev/null &>/dev/null &)
आप अपने echo
नए xterm / konsole / gnome-टर्मिनल को खोलना चाह सकते हैं । एक विकल्प का उपयोग करें जो कमांड के बाहर निकलने के बाद टर्मिनल को खुला रखता है।