बैश प्रॉम्प्ट में टिल्ड ~ से कैसे बचें?


12

मैं PS1 चर के भीतर प्रदर्शित करने से टिल्ड को दूर करना चाहूंगा।

मेरा वर्तमान PS1 स्ट्रिंग:

PS1="\h:\w\n$"

और संकेत इस तरह दिखता है:

lnx-hladky:/tmp/plugtmp
$

मुझे पसंद नहीं है कि $ HOME निर्देशिका को टिल्ड के रूप में प्रदर्शित किया जाए। क्या इससे बचा जा सकता है?

यह समस्याओं का कारण बनता है, उदाहरण:

lnx-hladky:~/DOC
$  

प्रलेखन कहता है:

\w : the current working directory, with $HOME abbreviated with a tilde 
\W: the basename of the current working directory, with $HOME abbreviated with a tilde

क्या टिल्ड के साथ $ HOME से बचने की कोई संभावना है?

मैं एक तरह से चारों ओर मिल गया है, लेकिन मुझे लगता है कि यह अधूरा है:

PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

क्या कोई बेहतर समाधान का प्रस्ताव कर सकता है? मुझे लग रहा है कि सिर्फ कमांड पाने के लिए इतने सारे कमांड चलाना काफी ठीक नहीं है। (तिथि, Whoami, होस्टनाम, पीडब्ल्यूडी)।


उदाहरण में टिल्ड किस "समस्या" का कारण बनता है?
जेब्लिन

जवाबों:


11

bash प्रॉम्प्ट में विस्तार चलाता है; बस उन्हें बचाना सुनिश्चित करें।

PS1='\h:$(pwd)\n$'

वह मेरे सवाल का जवाब देता है। मुझे नहीं पता था कि ऐसी कोई संभावना है। बहुत बहुत धन्यवाद, इग्नासियो!
जिरका

2
@ जिरका: आप भी उपयोग कर सकते हैं: `PS1 = 'h: $ PWD \ n $'।
अगली सूचना तक रोक दिया गया।

1
Jirka का समाधान pwdप्रत्येक संकेत पर कार्यान्वित होता है। डेनिस का समाधान पर्यावरण चर पीडब्ल्यूडी को नहीं देता है, जो बहुत सस्ता है।
स्टीफन गौरिचोन

2
pwdबैश बिलिन है। प्रमाण जो ${PWD}"बहुत सस्ता" है $(pwd)वह बिना सबूत के है।
विनीत

1
@anxieux: आपको एकल उद्धरणों के साथ उद्धरण करना होगा, दोहरे उद्धरण नहीं
weberjn

0

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

आपका उदाहरण:

PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

के रूप में फिर से लिखा जा सकता है:

PS1='\e[4;35m\t\e[24m\u@\h:\w\e[m\n'

जहां \tसमय (24 घंटे के प्रारूप में) को \uदिखाया गया है, वर्तमान उपयोगकर्ता नाम दिखाता है, '\ h' होस्टनाम दिखाता है - bashमैन पेज इन पर चर्चा करता है और बाकी आपके प्रांप्ट के लिए उपलब्ध है

यहां तक ​​कि अगर आप ~पूर्ण पथ पर विस्तार करते हैं , अगर आपको नहीं पता कि कौन सा उपयोगकर्ता कमांड चला रहा है और आप उपयोगकर्ताओं को नियमित रूप से स्विच कर रहे हैं, तो आप फ़ाइल अनुमतियों या निष्पादन योग्य अनुमतियों के साथ समस्याएं पैदा कर सकते हैं।


नमस्ते, मेरा इरादा पूर्ण पथ $ $ पथ सहित पूर्ण पथ से प्रतिस्थापित करना था। इग्नासियो की बदौलत मैं अब PS1 = '\ e [4; 35m \ t \ e [24m \ u @ \ h: $ (pwd) \ e [m \ n $' का उपयोग कर रहा हूं जिससे मेरी समस्या हल हो गई है :-)
जिरका

परफेक्ट - मुझे इसमें शामिल करना पसंद है \uताकि मुझे पता चले कि मैं कौन हूं। इग्नासियो के उत्तर को स्वीकार करना न भूलें - प्रश्न के बाईं ओर स्थित चेक बॉक्स पर क्लिक करें।
डग हैरिस

संकेत के लिए धन्यवाद। मैं इस मंच पर नया हूं। यह एक शानदार जगह है।
Jirka

\ u @ \ h: $ PWD (बृहदान्त्र पर ध्यान दें) का उपयोग scp के लिए इनपुट के रूप में किया जा सकता है
weberjn

0

मैं अपने .bash_profile फ़ाइल में सेटिंग का उपयोग कर रहा हूं

$ export PS1='\e[1;34m\D{%T %d.%m.%Y} \[\033[00;39m\]\u\[\033[00;32m\]@$IP:\[\033[00;33m\]$(pwd)/\n\\$\[\033[00m\] '

21:40:08 14.12.2017 vmware@10.112.202.228:/home/vmware/Downloads/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.