জিনোম টার্মিনাল - ট্যাব শিরোনামে প্রক্রিয়া নাম


9

আমি কীভাবে বর্তমান চলমান প্রক্রিয়া নামটি কোনও জিনোম টার্মিনাল ট্যাব শিরোনামে (বা কেবলমাত্র একটি ট্যাব থাকতে পারে শিরোনাম বারে) রাখতে পারি?

-- হালনাগাদ --

স্পষ্ট করার জন্য, আমি কোনও প্রক্রিয়া চালানোর সময় ট্যাব শিরোনামটি আপডেট করতে চাই, উদাহরণস্বরূপ:

# title is currently "bash"
$ find / -name foo # while searching for foo, title is "find"
$ # title is once again "bash"
$ less /proc/cpuinfo # title changes to "less"
$ man ls # title changes to man
$ # title returns to "bash"

উত্তর:


8

এটি পেয়েছি। এই সাইটটি একটি সমাধানের একটি ভাল ব্যাখ্যা সরবরাহ করে।
আপনার বাশার্কে, এটি দেখতে দেখতে এমন হবে:

case "$TERM" in
xterm*|rxvt*)
    set -o functrace
    trap 'echo -ne "\e]0;$BASH_COMMAND\007"' DEBUG
    PS1="\e]0;\s\007$PS1"
    ;;
*)
    ;;
esac

ব্যক্তিগতভাবে, আমি মনে করি না যে আমি এটি আমার বাশারসিআর-এ যুক্ত করব, কারণ আপনার সমস্ত শেল শুরু হওয়ার সাথে সাথে ট্রেসের সাথে মিলিত ডিইবিইউজি একটি প্রচুর আবর্জনা ফেলে দেয়। আপনি যদি এটি নিয়ে বেঁচে থাকতে পারেন, এটি আসলে কাজ করে। এটি পুরো কমান্ডটি প্রদর্শন করে তবে প্রথম শব্দটিই নয়।


2
একটি ভাল প্রশ্ন জিজ্ঞাসা করার জন্য আপনাকে ধন্যবাদ। এটি প্রথমে একটি সাধারণ প্রশ্নের মতো দেখেছিল ... প্রথম 10 মিনিটের পরে, এটি আমাকে বাদাম চালানো শুরু করেছিল! এ কারণেই আমি ভেবেছিলাম এটি একটি ভাল প্রশ্ন - সহজ শোনায় তবে শেল, টার্মিনাল এবং সংকেতের মধ্যে মিথস্ক্রিয়া সম্পর্কে গভীরতর কিছু শিখতে বাধ্য করেছিলাম।
ডেভপ্যারিলো

কেন- PS1নিয়োগ? এটি আমার জন্য চকচকে ফলাফল করে এবং এটি এখানে সত্যিই প্রয়োজনীয় মনে হয় না ...?
ফিল 294

আমার জন্য কেবল ত্রুটি।
কেজকাই

4

ঠিক আছে, যেহেতু সবাই ইতিমধ্যে ডেভিড পাশলির সমাধানটি জেনে গেছে বলে আমি মনে করি আমি এক ধরণের অবাক হয়েছিলাম কারণ এটি প্রায় পুরানো because

এই সমাধানটি আসলে বাশ-সমাপ্তি স্প্যামিং আবর্জনা যত্ন করে।

পরিষ্কার হতে হবে: আমি এখানে নিজে থেকে কিছুই করিনি গবেষণা ছাড়াও। সমস্ত কৃতিত্ব মারিয়াস গেডমিনাসের কাছে যায় ।

এটি আমার জন্য জিনোম-টার্মিনাল / টার্মিনেটরের সাথে পুরোপুরি কাজ করে

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

    # Show the currently running command in the terminal title:
    # http://www.davidpashley.com/articles/xterm-titles-with-bash.html
    show_command_in_title_bar()
    {
        case "$BASH_COMMAND" in
            *\033]0*)
                # The command is trying to set the title bar as well;
                # this is most likely the execution of $PROMPT_COMMAND.
                # In any case nested escapes confuse the terminal, so don't
                # output them.
                ;;
            *)
                echo -ne "\033]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}\007"
                ;;
        esac
    }
    trap show_command_in_title_bar DEBUG
    ;;
*)
    ;;
esac

এছাড়াও এটি একটি ক্রস পোস্ট কারণ আমি এটি সম্পর্কে সবেমাত্র জানতে পেরেছি এবং ভাগ করে নিতে চেয়েছিলাম এবং আমার মনে হয় এটি এখানেও দরকারী।


2

নীচে কাজ করা উচিত। আমার একটি ফাংশনে ফাংশন রয়েছে .bash_functionsএবং .bashrcসেটিংসের আগে ফাইলটিতে উত্স তৈরি করুন $PROMPT_COMMAND

function term_title
{
        history 1 | awk '{print $2}';
}

PROMPT_COMMAND='echo -ne "\033]0;"$(term_title)"\007"'

1
আপনি কাছাকাছি, কিন্তু আমার চেয়ে ভাল আর নেই। এটি আপনাকে শেষ সম্পাদিত আদেশ দেবে, তবে সত্যিকারের পরে কী হবে না। আমি ভেবেছিলাম মাত্র মেয়াদী শিরোনাম এতে পরিবর্তন করুন: [যদি [চাকরি]; তারপরে ইতিহাস 1 | awk '{মুদ্রণ $ 2}'; অন্যথায় ইকো -নে 'বাশ এম' ফাই কাজ করবে, তবে এটি স্বল্পকালীন জীবনকাল সহ প্রক্রিয়াগুলি ধরা সম্পর্কে অসঙ্গত এবং প্রক্রিয়াটি শেষ হয়ে গেলে এটি এখনও ফিরে যায় না। এই ট্রিগার / ইভেন্টগুলির সাথে কীভাবে গণ্ডগোল করবেন তা জানার জন্য আমি এক্সটারমের অভ্যন্তরীণ কাজগুলি সম্পর্কে জানি না।
ডেভপ্যারিলো

বাশ প্রম্পট প্রদর্শনের ঠিক আগে $ PROMPT_COMMAND কার্যকর করে, তাই এই পদ্ধতির সাথে আমি সবচেয়ে ভাল এটি করতে পারি। অন্যান্য প্রবেশদ্বারগুলি থাকতে পারে যা আপনি প্রবেশের পরে ঠিকঠাক কার্যকর করতে পারে তবে আমি সেগুলি সম্পর্কে জানি না।

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