मेरे टर्मिनल के शीर्ष बार को यह कैसे कहें कि कमांड क्या चल रहा है?


13

मैं अक्सर समानांतर में कमांड चलाता हूं जो खत्म होने में लंबा समय लेता है और कभी-कभी मैं ट्रैक का खो जाता है जहां चल रहा है क्योंकि वे मूल रूप से स्क्रीन पर एक ही तरह की जानकारी का उत्पादन करते हैं।

क्या आप किसी भी तरीके से पता कर सकते हैं कि किस टर्मिनल में कमांड चल रही है?


1
यकीन नहीं होता कि यह अभी भी काम करता है, लेकिन यह @dessert के उत्कृष्ट उत्तर के अलावा भी मदद कर सकता है। → askubuntu.com/questions/774532/…
वीडियोनौथ

जवाबों:


12

बैश से लिया गया - दूसरा कमांड चलाकर टर्मिनल शीर्षक अपडेट करें · U & L और थोड़ा बदला हुआ:

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

यह (ab) DEBUGअपने इतिहास से अंतिम प्रविष्टि के साथ शीर्षक को अपडेट करने के लिए ट्रिगर के रूप में सिग्नल का उपयोग करता है , अर्थात आपके द्वारा निष्पादित अंतिम कमांड, XTerm नियंत्रण अनुक्रम के माध्यम से । ~/.bashrcहर नई टर्मिनल विंडो में सक्षम सुविधा के लिए लाइन को अपने में जोड़ें ।

शीर्षक के साथ-साथ अन्य कमांड आउटपुट को प्रिंट करने के लिए, pwd":" और वर्तमान में चल रहे कमांड के साथ वर्तमान डायरेक्टरी कहें , मैं printfइस प्रकार उपयोग करने की सलाह देता हूं :

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

कुछ टर्मिनल एमुलेटर आपको एक डायनामिक शीर्षक निर्दिष्ट करने की अनुमति देते हैं और यहां तक ​​कि आपको कमांड नाम भी एक विकल्प के रूप में देते हैं, ताकि आपको इधर-उधर फ़ेलने की भी ज़रूरत न हो - मैंने इसे खोजा और इसे yakuakeप्रोफ़ाइल सेटिंग्स में पाया ।


2

टर्मिनल विंडो का शीर्षक परिवर्तनशील के मान को बदलकर बदला जा सकता है $PS1- प्राथमिक संकेत स्ट्रिंग। [१] [२] । हम इस समाधान को डेसर्ट के उत्तर से कमांड का उपयोग करने के विचार के साथ जोड़ सकते हैं । 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 बिना तर्क के टर्मिनल विंडो का शीर्षक पिछली कमांड में बदल जाएगा।

संदर्भ और उदाहरण:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.