मैं अपनी कमांड लाइन (बैश) प्रॉम्प्ट को छोटा कैसे कर सकता हूं?


167

वर्तमान में यह है:

michael@Castle2012-Ubuntu-laptop01:~/Dropnot/webs/rails_v3/linker/spec/controllers$

मेरी मशीन और निर्देशिका संरचना का नाम बदलने के बाहर ...

मैं इसे कैसे बना सकता हूं जैसे कुछ और:

michael:controllers$

जवाबों:


241

केवल वर्तमान टर्मिनल उदाहरण के लिए इसे बदलने के लिए

बस दर्ज करें PS1='\u:\W\$ 'और एंटर दबाएं।


इसे बदलने के लिए "स्थायी रूप से"

अपने में ~/.bashrc, निम्न अनुभाग खोजें:

अगर ["$ color_prompt" = हाँ]; फिर
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ यू @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $ '
अन्य
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $'
फाई

निकालें @\h, और \wएक अपरकेस के साथ बदलें \W, ताकि यह बन जाए:

अगर ["$ color_prompt" = हाँ]; फिर
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ यू \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ डब्ल्यू \ [\ 033 [00m \] \ $ '
अन्य
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u: \ W \ _ "
फाई

सहेजें, बाहर निकलें, नज़दीकी टर्मिनल और परिणाम देखने के लिए एक और शुरू करें।


अधिक विकल्प टन!

  • कई और विकल्पों के साथ, अधिक व्यापक हॉव्टो के लिए यहां देखें
  • प्रॉम्प्ट को सेट करने के लिए एक छोटे पायथन स्क्रिप्ट का उपयोग करने के लिए इस उत्तर को देखें ताकि शॉर्टिंग केवल तब हो जब आप किसी डायरेक्टरी संरचना में गहरे हों।

1
आपके पास बहुत सारी जानकारी भी हो सकती है ... और फिर एक गाड़ी के अंत में वापसी के रूप में unix.stackexchange.com/q/88780/10043
माइकल ड्यूरेंट

क्या इसे वैश्विक बनाने का कोई तरीका है? दूसरे शब्दों में, यदि मैं किसी अन्य उपयोगकर्ता को sudo करता हूं, तो क्या यह सेटिंग चलती है, लेकिन केवल अपने लिए (यानी, उपयोगकर्ता के लिए नहीं जब वे सामान्य रूप से अपने खाते का उपयोग करते हैं)?
'16

एक साझा .bashrc कि दोनों लिनक्स और OSX पर काम करता है मैं के बाद से बदल लिया है रखने के लिए unix.stackexchange.com/a/127800/10043
माइकल Durrant

यानी HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } TIME='\033[01;31m\]\t \033[01;32m\]' LOCATION=' \033[01;34m\]pwd | sed "s # (/ [^ /] \ {1, \} / [^ /] \ {1, \} / [^ /] \ {1, \} /)। * (/ [^ /] \ { 1, \} / [[/ ​​/] \ {1, \}) / \ {0,1 \} # \ _ 1_ \ 2 # जी "' BRANCH=' \033[00;33m\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
माइकल ड्यूरेंट

लेकिन उपयोग करने के लिए वास्तविक कोड का उत्तर देखें।
माइकल ड्यूरेंट

104

इस कोड को वर्तमान टर्मिनल में चलाएं

PROMPT_DIRTRIM=3

अब बैश प्रॉम्प्ट केवल अंतिम 3 निर्देशिका नामों को दिखाएगा। आप केवल वर्तमान निर्देशिका दिखाने के लिए 1 चुन सकते हैं। अधिक जानकारी GNU प्रलेखन में उपलब्ध है

प्रभाव:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

यदि आप इसे स्थायी रूप से बनाना चाहते हैं, ~/.bashrcतो शुरुआत में निम्न पंक्ति जोड़ें :

PROMPT_DIRTRIM=3

या शून्य से अधिक एक और संख्या।


7
बस एक सिदोते: इसके लिए बैश 4. की आवश्यकता होती है
स्टीफन लासिवस्की

अच्छा ... मैंने इसे promptdir() { PROMPT_DIRTRIM=$1; }लाइव करने के लिए एक फंक्शन (एक फंक्शन के साथ) के लिए एक bach_alias जोड़ा ...
dgoosens

18

यह मेरी पसंदीदा प्रॉम्प्ट सेटिंग है:

में जोड़ा गया ~/.bashrc

PS1='[\u@\h \W]\$ '    

यह इस तरह दिख रहा है:

[user@hostname dirname]$

( $संकेत के बाद एक स्थान के साथ )


मैं प्रत्येक शब्द के बीच एक स्थान कैसे जोड़ूंगा? इसके अलावा, क्या मैं इसे रंग दे सकता हूं?
डेनियल स्प्रिंगर

6

व्यक्तिगत रूप से मैं केवल वर्तमान फ़ोल्डर को bash प्रॉम्प्ट में देखना पसंद करता हूं। मैं निम्नलिखित कमांड के साथ ऐसा कर सकता हूं:

PS1='\W\$ '

यदि आप चाहते हैं कि यह प्रत्येक शुरुआत के बाद प्रभावी हो तो उपरोक्त कमांड को अपने ~ / .bashrc में जोड़ें।


1

मुझे लगता है कि यह सुपर पुराना है, लेकिन जब से किसी ने भी उर्फ ​​बनाने का सुझाव नहीं दिया है मुझे लगा कि मैं पोस्ट करूंगा। बैश प्रॉम्प्ट एस्केप सीक्वेंस का उपयोग करके मैंने एक उपनाम बनायाshorten

में ~/.bash_aliasesयहाँ आप शीघ्र रंग है जो आप को छोड़ देते हैं या बदलने के वरीयता के आधार पर मैं यह भी टर्मिनल जब छोटा बुला साफ कर सकते हैं स्थापित करने के लिए $ ब्लू वर देखेंगे।

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

ओपी की वांछित शीघ्र स्ट्रिंग प्राप्त करने के लिए:

alias shorten='PS1="$USER:\W$ "'

मेरे पास ~/.bashrcप्रतिलिपि में परिभाषित रंग हैं और https://wiki.archlinux.org/index.php/Color_Bash_rompt से चिपकाया गया है । एक तरफ ध्यान दें कि एएनआई कोड रंगों के साथ क्या है? मैं उलझन में हूँ बस इसे देख रहा हूँ।

Blue='\e[0;34m'         # Blue

इसके लिए एक स्टेप बाय स्टेप गाइड इतना उपयोगी होगा क्योंकि मुझे नहीं पता कि कैसे .bash_aliases पर जाना है। धन्यवाद
Kayote

2
"।" उपसर्ग एक छिपी निर्देशिका या फ़ाइल को इंगित करता है। टिल्ड "~" $ HOME वैरिएबल का संक्षिप्त रूप है। तो, "~ / .bash_aliases" "/home/$USER/.bash_aliases" का संक्षिप्त रूप है। ".Bash_aliases" को खोलने के लिए आप या तो एक टर्मिनल खोल सकते हैं और "gedit /home/$USER/.bash_aliases" या "gedit ~ / / .bash_aliases" टाइप कर सकते हैं या अपनी होम डायरेक्टरी ctrl-h में छुपी हुई फाइलें और खुली फाइल को सीधे दिखा सकते हैं। । उम्मीद है की वो मदद करदे। आप उपयोगी उपनामों के लिए भी Google खोज करना चाहते हैं।
Allie Carver

0

मैंने एक फ़ंक्शन लिखा है जिसे आप अपनी आवश्यकताओं के अनुरूप संशोधित कर सकते हैं:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

इस फ़ंक्शन ~/.bashrcको PS1लाइन के पूरी तरह से गणना करने के बाद नीचे या उसके पास रखें ।

आप termpromptजब भी अपने प्रॉम्प्ट को छोटा करना चाहते हैं, तो टाइप करेंगे या स्थायीता के लिए अपने termpromptनीचे से ~/.bashrcबुलाएंगे।

कई अन्य उत्तरों पर इस तकनीक का लाभ चार अलग-अलग तरीकों से किया .bashrcजा सकता PS1है (xterm + no-color, xterm + color, no-xterm + no-color, no-xterm + color)। यह उत्तर सभी चार वर्तमान तरीकों का समर्थन करता है और शायद भविष्य के तरीकों का भी।

एक और फायदा यह है कि इस पद्धति में आपके परिवर्तनों को सम्मिलित करने के लिए कम जटिल नियंत्रण कोड हैं।

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