শেল প্রম্পটে প্রম্পটের নীচে জিনিসগুলি প্রদর্শন করবেন?


21

আমাদের প্রম্পটটি দেখতে এরকম দেখতে দিন (_ _ আমার কার্সারকে উপস্থাপন করে)

~ % _

এটির মতো দেখতে কোনও উপায় আছে কি?

~ % _
[some status]

প্রশ্নটি মূলত zsh সম্পর্কে ছিল, তবে এখন অন্যান্য উত্তর রয়েছে।


কিভাবে পর্দা সম্পর্কে + + buobu ?: launchpad.net/byobu এবং হয়তো kmandla.wordpress.com/2010/01/03/... স্ক্রিনশট জন্য
— জানুস

উত্তর:


17

নিম্নলিখিত সেটিংস কাজ করে বলে মনে হচ্ছে। কমান্ড লাইনটি প্রথম লাইনে উপচে পড়লে দ্বিতীয় লাইনের পাঠ্যটি অদৃশ্য হয়ে যায়। preexecফাংশন কমান্ড চালানোর আগে দ্বিতীয় লাইন মুছে যাবে; যদি আপনি এটি রাখতে চান তবে পরিবর্তন করুন preexec () { echo; }।

terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]
PS1_2='[some status]'
PS1="%{$terminfo_down_sc$PS1_2$terminfo[rc]%}%~ %# "
preexec () { print -rn -- $terminfo[el]; }

%পলায়ন zsh ম্যানুয়াল ( man zshmisc) এ নথিভুক্ত করা হয় ।

টার্মিনফো একটি টার্মিনাল অ্যাক্সেস এপিআই। জেডএসের একটি terminfoমডিউল রয়েছে যা টার্মিনাল বিবরণ ডেটাবেসটিতে অ্যাক্সেস দেয়: $terminfo[$cap]টার্মিনালের সক্ষমতার অনুশীলন করতে পাঠানোর জন্য অক্ষরের অনুক্রম $cap, অর্থাৎ $capকমান্ড চালানোর জন্য । man 5 terminfoআরও তথ্যের জন্য দেখুন (লিনাক্সে, বিভাগের নম্বরটি অন্যান্য সংযুক্তিতে পৃথক হতে পারে)।

ক্রমের ক্রম হ'ল: কার্সারটিকে এক লাইনের ( cud1) নীচে সরান , তারপরে ব্যাক আপ ( cuu1); কার্সার অবস্থান সংরক্ষণ করুন ( sc); কার্সারটিকে এক লাইনের নিচে সরান; মুদ্রণ [some status]; কার্সার অবস্থান পুনরুদ্ধার করুন। প্রম্পটটি যদি স্ক্রিনের নীচের লাইনে থাকে তবে শুরুতে ডাউন এবং আপ বিটটি কেবল প্রয়োজনীয়। প্রিক্সেক লাইনটি দ্বিতীয় লাইনটি মুছে ফেলে ( el) যাতে এটি কমান্ড থেকে আউটপুট মিশে না যায়।

যদি দ্বিতীয় লাইনের পাঠ্যটি টার্মিনালের চেয়ে আরও বৃহত্তর হয় তবে ডিসপ্লেটি গার্ফ হতে পারে। মেরামত করতে Ctrl+ Lএকটি চিমটি মধ্যে ব্যবহার করুন ।


5

এখানে bashগিলসের জেডশ সমাধানের সমতুল্য। বাশের কোনও নেটিভ টার্মিনো মডিউল নেই, তবে tputকমান্ড (এর সাথে বান্ডিল করা terminfo) একই জিনিসটি করে।

PS1_line1='\w \$ '
PS1_line2='[some status]'

if (tput cuu1 && tput sc && tput rc && tput el) >/dev/null 2>&1
then
    PS1="
\[$(tput cuu1; tput sc)\]
\[${PS1_line2}$(tput rc)\]${PS1_line1}"
    PS2="\[$(tput el)\]> "
    trap 'tput el' DEBUG
else
    PS1="$PS1_line2 :: $PS1_line1"
fi

যদি টার্মিনালটি কোনও একটির ক্ষমতা সমর্থন করে না, এটি আবার একটি লাইন প্রম্পটে ফিরে আসবে।

trapলাইন অনুকরণ zsh এর জন্য একটি হল hacky উপায় preexecফাংশন। আরও তথ্যের জন্য /superuser/ প্রশ্ন / 175799/ দেখুন ।

সম্পাদনা : গিলসের মন্তব্যের ভিত্তিতে উন্নত স্ক্রিপ্ট।


@ গিলস: ইনপুট দেওয়ার জন্য ধন্যবাদ! আমি মনে করি এটি এখন আরও ভালভাবে কাজ করতে পেরেছি। জিনোম-টার্মিনাল এবং এক্সটার্মে বাশ 4.1.5 এবং ওএসএক্স টার্মিনালে বাশ 3.2.48 ব্যবহার করে।
— জান্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.