আমি প্রায়শই সমান্তরালভাবে কমান্ডগুলি চালিত করি যা সমাপ্ত হতে দীর্ঘ সময় নেয় এবং কখনও কখনও আমি কী চলছে তা ট্র্যাক হারিয়ে ফেলি কারণ তারা পর্দায় মূলত একই ধরণের তথ্য আউটপুট দেয়।
কোন টার্মিনালে কোন কমান্ড চলমান আছে তা জানার কোনও উপায় আপনি জানেন?
আমি প্রায়শই সমান্তরালভাবে কমান্ডগুলি চালিত করি যা সমাপ্ত হতে দীর্ঘ সময় নেয় এবং কখনও কখনও আমি কী চলছে তা ট্র্যাক হারিয়ে ফেলি কারণ তারা পর্দায় মূলত একই ধরণের তথ্য আউটপুট দেয়।
কোন টার্মিনালে কোন কমান্ড চলমান আছে তা জানার কোনও উপায় আপনি জানেন?
উত্তর:
বাশ থেকে নেওয়া - দ্বিতীয় কমান্ড · 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প্রোফাইল সেটিংসে খুঁজে পেয়েছি ।
$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 যুক্তি ছাড়াই টার্মিনাল উইন্ডোটির শিরোনামটি পূর্ববর্তী কমান্ডে পরিবর্তন করবে।তথ্যসূত্র এবং উদাহরণ: