আমার টার্মিনালের উপরের বারটি কীভাবে বলবে যে কোন আদেশটি চলছে?


13

আমি প্রায়শই সমান্তরালভাবে কমান্ডগুলি চালিত করি যা সমাপ্ত হতে দীর্ঘ সময় নেয় এবং কখনও কখনও আমি কী চলছে তা ট্র্যাক হারিয়ে ফেলি কারণ তারা পর্দায় মূলত একই ধরণের তথ্য আউটপুট দেয়।

কোন টার্মিনালে কোন কমান্ড চলমান আছে তা জানার কোনও উপায় আপনি জানেন?


1
এটি এখনও কার্যকর হয় কিনা তা নিশ্চিত নয় তবে এটি @ ডিজিটরের দুর্দান্ত উত্তর ছাড়াও খুব বেশি সহায়তা করতে পারে। → Askubuntu.com/questions/774532/…
ভিডিওনাথ

উত্তর:


12

বাশ থেকে নেওয়া - দ্বিতীয় কমান্ড · U&L চালিয়ে টার্মিনাল শিরোনাম আপডেট করুন এবং সামান্য পরিবর্তন করা হয়েছে:

trap 'echo -ne "\033]2;$(history 1 | sed "s/^[0-9 ]* \+//")\007"' DEBUG

এটি (আব) DEBUGআপনার ইতিহাস থেকে শেষ প্রবেশের সাথে শিরোনাম আপডেট করতে ট্রিগার হিসাবে সংকেতটি ব্যবহার করে , অর্থাৎ এক্সটার্ম কন্ট্রোল সিকোয়েন্সের মাধ্যমে আপনি শেষ আদেশটি কার্যকর করেছিলেন । ~/.bashrcপ্রতিটি নতুন টার্মিনাল উইন্ডোতে বৈশিষ্ট্যটি সক্ষম করতে আপনার লাইনটি যুক্ত করুন ।

শিরোনামের পাশাপাশি অন্যান্য কমান্ড আউটপুট প্রিন্ট করতে, pwd":" এবং বর্তমানে চলমান কমান্ড অনুসারে বর্তমান ডিরেক্টরিটি লিখুন , আমি printfনিম্নলিখিত হিসাবে ব্যবহার করার পরামর্শ দিচ্ছি :

trap 'echo -ne "\033]2;$(printf "%s: %s" "$(pwd)" "$(history 1 | sed "s/^[0-9 ]* \+//")")\007"' DEBUG

কিছু টার্মিনাল এমুলেটর আপনাকে গতিশীল শিরোনাম নির্দিষ্ট করার অনুমতি দেয় এবং এমনকি একটি বিকল্প হিসাবে আপনাকে কমান্ডের নামও দেয় যাতে আপনার আশেপাশে কোনও ঝাঁকুনির প্রয়োজন পড়ে না - আমি অনুসন্ধান করে এটির yakuakeপ্রোফাইল সেটিংসে খুঁজে পেয়েছি ।


2

$PS1প্রাথমিক প্রম্পট স্ট্রিংয়ের ভেরিয়েবলের মান পরিবর্তন করে টার্মিনাল উইন্ডোর শিরোনাম পরিবর্তন করা যেতে পারে । [1] [2] । আমরা এই সমাধানটি মিষ্টির উত্তর থেকে আদেশটি ব্যবহারের ধারণার সাথে একত্রিত করতে পারি । history


পদ্ধতির 1: $PS1স্বয়ংক্রিয়ভাবে মান আপডেট করুন । (হালনাগাদ)

ফাইলের নীচে নিম্নলিখিত লাইনগুলি যুক্ত করুন ~/.bashrc:

# Change the terminal window title, based on the last executed command
rtitle() {
        # If the variable $PS1_bak is unset,
        # then store the original value of $PS1 in $PS1_bak and chang $PS1
        # else restore the value of $PS1 and unset @PS1_bak
        if [ -z "${PS1_bak}" ]; then
                PS1_bak=$PS1
                PS1+='\e]2;$(history 1 | sed "s/^[0-9 ]* \+//")\a'
        else
                PS1=$PS1_bak
                unset PS1_bak
        fi
};
export -f rtitle        # Export the function to be accessible in sub shells
#rtitle                 # Uncomment this line to change the default behaviour

তারপরে source ~/.bashrcবা কেবল একটি নতুন টার্মিনাল খুলুন এবং এই পদ্ধতিতে ফাংশনটি ব্যবহার করুন:

  • সম্পাদন rtitleস্বয়ংক্রিয়ভাবে টার্মিনাল উইন্ডোর শিরোনাম পরিবর্তন, শেষ মৃত্যুদন্ড কার্যকর কমান্ড উপর ভিত্তি করে শুরু করতে।
  • সম্পাদন rtitleআবার ডিফল্ট আচরণ ফিরে যাওয়ার।

পদ্ধতির 2: $PS1ম্যানুয়ালি মান আপডেট করুন । (প্রাথমিক উত্তর)

ফাইলের নীচে নিম্নলিখিত লাইনগুলি যুক্ত করুন ~/.bashrc:

set-title() {                                                                                 # Set a title of the current terminal window
        [[ -z ${@} ]] && TITLE="$(history 2 | head -1 | sed "s/^[0-9 ]* \+//")" || TITLE="$@" # If the title is not provided use the previous command
        [[ -z ${PS_ORIGINAL} ]] && PS_ORIGINAL="${PS1}" || PS_ORIGINAL="${PS_ORIGINAL}"       # Use the original value of PS1 for each future change
        PS1="${PS_ORIGINAL}"'\e]2;'"$TITLE"'\a'                                               # Change the prompt (the value of PS1)
}; export -f set-title

তারপরে source ~/.bashrcবা কেবল একটি নতুন টার্মিনাল খুলুন এবং এই পদ্ধতিতে ফাংশনটি ব্যবহার করুন:

  • set-title <something>টার্মিনাল উইন্ডো শিরোনাম এ পরিবর্তন করবে <something>
  • set-title যুক্তি ছাড়াই টার্মিনাল উইন্ডোটির শিরোনামটি পূর্ববর্তী কমান্ডে পরিবর্তন করবে।

তথ্যসূত্র এবং উদাহরণ:

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.