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


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.