"হাই" স্ট্রিমটি আমার প্রম্পটে মুদ্রিত হয়েছে (এ stdin
) এবং আমার নয়stdout
না, এটা হচ্ছে না "আপনার মুদ্রিত stdin
"।
আপনি যদি রিটার্ন টিপেন, এটি hi
কমান্ড হিসাবে চালানোর চেষ্টা করবে না । কার্সারটি আপনার প্রম্পটের পরে থাকাকালীন ব্যাকগ্রাউন্ড echo
মুদ্রিত হয়েছে hi
।
সম্ভবত আপনি একটি শীর্ষস্থানীয় নিউলাইন , মুদ্রণ করতে চান (sleep 1m && echo -e '\nhi' &)
। ( echo
আপনার শেলের মধ্যে প্রয়োজনীয় হিসাবে সামঞ্জস্য করুন port বা 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
যায়, প্রম্পটের আগে নিজেই একটি লাইনে রেখে । উইনডো আকারের চেঞ্জগুলি সাইনওয়ানটি স্বয়ংক্রিয়ভাবে প্রেরণ করা হয়, এবং এতে বাশের প্রতিক্রিয়াটি আমরা যা করতে চাই তা ঘটায়।
এটি অন্যান্য শাঁসের সাথে কাজ করতে পারে তবে আমি এই 100% বহনযোগ্য / পসিক্স তৈরি করার চেষ্টা করছি না। ( দুর্ভাগ্যক্রমে, এটি কেবল 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`
আপনি এটিকে সহজেই একটি শেল ফাংশনটিতে গুটিয়ে রাখতে পারেন যা একটি স্লিপ আর্গ এবং একটি বার্তা নেয়।
বাশ ৪.৩ সাইনচিনচের পরে এর প্রম্পটটি পুনরায় মুদ্রণ করে না, সুতরাং এটি সেখানে কাজ করে না। আমি shopt -s checkwinsize
উভয় সিস্টেমে সক্ষম করেছি , তবে এটি কেবল বাশ 4.4 সিস্টেমে (আর্চ লিনাক্স) কাজ করে।
যদি এটি কাজ না করে, আপনি চেষ্টা করতে (sleep 2 && echo -e '\nhi' && echo "$PS1" &)
পারেন, কমান্ড লাইন ফাঁকা থাকলে কোনটি "কাজ করে"। (এটি নির্ধারিত সম্ভাবনাটিকেও উপেক্ষা করে PROMPT_COMMAND
))
আপনার টার্মিনালে পরে যা করা হতে পারে তার সাথে মিশ্রিত হওয়ার জন্য টার্মিনাল আউটপুট পাওয়ার সত্যি কোনও পরিষ্কার উপায় নেই, টাইমারটি যখন আগুন লাগে। আপনি যদি কোনও কিছুতে স্ক্রোল করার মাঝখানে থাকেন তবে আপনি less
সহজেই এটি মিস করতে পারেন।
যদি আপনি ইন্টারেক্টিভ ফলাফলগুলির সাথে কিছু সন্ধান করে থাকেন তবে আমি একটি অডিও ফাইল বাজানোর পরামর্শ দিচ্ছি। যেমন কমান্ড-লাইন প্লেয়ারের সাথে mpv
(এমপ্লেয়ার 2 এর দুর্দান্ত কাঁটাচামচ)। বা একটি ভিডিও ফাইল বাছাই করুন যাতে একটি নতুন উইন্ডো খোলে।
(sleep 1 && mpv /f/share/music/.../foo.ogg </dev/null &>/dev/null &)
আপনি আপনার echo
নতুন এক্সটার্ম / কনসোল / জিনোম-টার্মিনালটি খুলতে চাইতে পারেন । কমান্ডটি প্রস্থান করার পরে টার্মিনালটি উন্মুক্ত রাখে এমন একটি বিকল্প ব্যবহার করুন।