GNU स्क्रीन: नई विंडो नाम परिवर्तन


20

मैं Ctrl-a Shift-a के साथ एक विंडो का नाम बदल सकता हूं। कई विंडो नामों को हाथ से संपादित करने के बजाय, क्या उन्हें वर्तमान निर्देशिका के नाम पर स्वचालित रूप से नाम रखने का कोई तरीका है?


आप किस शेल का उपयोग करते हैं?
मार्को १

मैं बैश का उपयोग कर रहा हूं।
liewl

जवाबों:


21

हर बार जब भी यह निर्देशिका बदलता है, या हर बार यह शीघ्र प्रदर्शित करता है, तो अपना शेल विंडो शीर्षक बदलें।

आपके लिए ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

या आपके ~/.zshrc(zsh उपयोगकर्ताओं के लिए):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

अधिक जानकारी के लिए, स्क्रीन मैनुअल में डायनामिक शीर्षक या मैन पेज में "टाइटल (नामकरण विंडो)) के तहत देखें।


मैंने अपने .bashrc पर बैश को कॉपी किया और यह इन त्रुटियों को दूर कर रहा है: bash: PROMPT_COMMAND: लाइन 0: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि ;' bash: PROMPT_COMMAND: line 0: ;
स्क्रीन_सेट_विंडो_टिटेल

@ डेविड: क्षमा करें, PROMPT_COMMANDयदि पहले से ही कुछ था , तो बिंदुओं को जमा करना था, लेकिन मेरे पास गलत क्रम में घटक थे।
गिल्स एसओ- बुराई को रोकना '

2
शानदार ट्रिक @ गिल्स। उन लोगों के लिए जो खिड़की के शीर्षक को छोटा रखना पसंद करते हैं, आप पूरा रास्ता छोड़ सकते हैं और केवल बेसन रख सकते हैं। बस के $HOME/*) HPWD="~${HPWD#$HOME}";;साथ बदलें*) HPWD=`basename "$HPWD"`;;

0

आप टर्मिनल नाम (विंडो नाम) को अंतिम निर्देशिका (या फ़ाइल नाम) में बदलने के लिए इसे (। काम पर) में रख सकते हैं।

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

यहाँ और अधिक वर्णित: लिंक

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