टर्मिनल में वर्तमान कार्यशील निर्देशिका छिपाएँ


133

डिफ़ॉल्ट रूप में, टर्मिनल प्रॉम्प्ट कुछ इस तरह दिखाता है:

user@system:/folder1/folder2/folder3/folder4$

आप जितनी गहराई से फाइलसिस्टम में जाते हैं, कमांड में टाइप करने के लिए उतनी ही कम जगह बचती है। क्या मैं इसे केवल कुछ दिखाने के लिए बदल सकता हूं:

>

मेरा मतलब है, मैं केवल pwdयह दिखाने के लिए टाइप कर सकता हूं कि मैं कहां पर हूं। ;)


1
यह एक टिप्पणी होनी चाहिए लेकिन मैं टिप्पणी नहीं कर सकता, क्षमा करें। वर्तमान निर्देशिका को छिपाने के अलावा, निम्नलिखित PS1 मान नेत्रहीन आपके बैश कमांड को अच्छी तरह से अलग करेगा:export PS1="\n___"
हैलो वर्ल्ड

ओली के समाधानों पर प्रयोग किया गया। रंग फोंट टर्मिनल में अच्छी तरह से काम करते हैं: निर्यात PS1 = '[\ 033 [0; 35m] \ h [\33 [033; 33m] \ w [\ 033 [00m]:'
linbianxiaocao

जवाबों:


153
export PS1='\u@\h: '

oli@bert:मेरे संकेत के लिए यह परिणाम है ।

यदि आप वास्तव में कुछ मांगना चाहते हैं जैसा कि आप पूछते हैं, तो यह कोशिश करें:

export PS1='> '

आप इसे अपनी ~/.bashrcफ़ाइल के अंत में संलग्न कर सकते हैं ताकि यह लॉगिन के बीच बनी रहे।

आप कुछ रंगों के साथ रचनात्मक भी प्राप्त कर सकते हैं। यहाँ मैं अपने सर्वर पर क्या उपयोग कर रहा हूँ:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

देते हुए (पूर्ण काली पृष्ठभूमि पर देखना आसान है):

मेरे टर्मिनलों

PS1 में स्वीकार्य पात्रों की शब्दावली


2
प्रॉम्प्ट के हिस्से के रूप में आपके पास नई लाइनें (\ n) भी हो सकती हैं, इसलिए आप सभी जानकारी और '>' को अलग-अलग लाइनों पर रख सकते हैं।
ak2

मुझे पहली बार मिसेजगिट में "चरम" शेल कस्टमाइज़ेशन का सामना करना पड़ा, यह विश्वास है या नहीं। मुझे तुरंत बैश की दुनिया में बदल दिया गया। सभी जानकारी होने के बाद (मेरी वर्तमान निर्देशिका, वर्तमान शाखा Git रेपो, Git इंडेक्स की स्थिति ...) से बाहर की जाँच की गई थी। मैं उबंटू स्थापित के साथ ऐसा ही कुछ करने की योजना बना रहा हूं जिसे मैंने हाल ही में एक पुराने लैपटॉप (विंडोज एक्सपी के साथ) पर रखा है।
dgw

3
रंगों को स्थापित करने के लिए किस प्रारूप का उपयोग किया जाता है?
रकीब

1
@SyedRakibAlHasan कोशिश करो echo -e "\e[31mHello World\e[0m"या echo -e "\033[31mHello\e[0m World"एक टर्मिनल में, जो आपको एक सुराग देना चाहिए। source
डाका

103

ओली के उत्तर पर विस्तार करने के लिए (और इसलिए कि मेरे पास उन लघु-प्रतीकों के लिए एक बुकमार्क है):

बैश प्रॉम्प्ट ( stefano@linux:~$) केवल कुछ संकेतों में से पहला है जिसे आप देख सकते हैं:

  • PS1 : जब आप शेल खोलते हैं तो डिफ़ॉल्ट प्रॉम्प्ट आपको दिखाई देता है

    यह मान एक पर्यावरण चर में संग्रहीत है जिसे कहा जाता है PS1। इसके मान को देखने के लिए, टाइप करें

    echo $PS1

    इससे आपको कुछ ऐसा मिलेगा

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    इसे बदलने के लिए, आप चर के लिए एक नया मान सेट कर सकते हैं:

    export PS1="\u > "

    इसका परिणाम इस तरह होगा:

    stefano > 
  • PS2 : आपका द्वितीयक संकेत है। यह तब दिखाया जाता है जब कोई कमांड समाप्त नहीं होती है। टाइप करें echo "asdऔर हिट दर्ज करें, द्वितीयक प्रॉम्प्ट आपको उल्टे कॉमा को बंद करने तक अधिक पंक्तियां दर्ज करने देगा।

  • PS3 के लिए प्रयोग किया जाता है select(2)

  • PS4 के लिए इस्तेमाल शीघ्र है वैकल्पिक शब्द स्टैक ट्रेस (डिफ़ॉल्ट: +)

परिवर्तनों को स्थायी बनाने के लिए, आप उन्हें अपने होम निर्देशिका में .bash_profile(या .bashrc, इस प्रश्न को देखें ) के अंत में जोड़ते हैं ।

यहाँ शॉर्टहैंड की कम या ज्यादा पूरी सूची दी गई है जिसका उपयोग आप इनको बनाते समय कर सकते हैं:

  • \a     'घंटी' का पात्र
  • \A     24 ज समय
  • \d     दिनांक (उदाहरण के लिए २१ दिसंबर)
  • \e     'बच' चरित्र
  • \h     होस्टनाम (पहले तक) ""
  • \H     होस्ट का नाम
  • \j     वर्तमान में चल रही नौकरियों की संख्या (पीएस)
  • \l     वर्तमान tty
  • \n     रेखा भरण
  • \t     समय (hh: mm: ss)
  • \T     समय (hh: mm: ss, 12h प्रारूप)
  • \r     कैरिज रिटर्न
  • \s     शेल (यानी बाश, zsh, ksh ..)
  • \u     उपयोगकर्ता नाम
  • \v     बैश संस्करण
  • \V     पूर्ण बैश रिलीज़ स्ट्रिंग
  • \w     वर्तमान काम कर निर्देशिका
  • \W     वर्तमान कार्यशील निर्देशिका का अंतिम भाग
  • \!     इतिहास में वर्तमान सूचकांक
  • \#     कमांड इंडेक्स
  • \$     यदि आप रूट हैं तो "#", "$"
  • \\     लिटरल बैकस्लैश
  • \@     समय (सुबह 12 बजे / शाम के साथ प्रारूप)

आप निश्चित रूप से किसी भी शाब्दिक स्ट्रिंग, और किसी भी कमांड को सम्मिलित कर सकते हैं:

export PS1="\u \$(pwd) > "

जहां $(pwd)"pwd के आउटपुट" के स्थान पर खड़ा है।

  • यदि कमांड प्रतिस्थापन से बच जाता है \$(pwd), तो जैसे ही , इसका मूल्यांकन किया जाता है हर बार शीघ्र प्रदर्शित होता है, अन्यथा, जैसा कि है $(pwd), इसका मूल्यांकन केवल एक बार किया जाता है जब बैश शुरू होता है।

यदि आप चाहते हैं कि रंगों को अपना संकेत दें, तो आप इसे करने के लिए बैश के रंग कोड का उपयोग कर सकते हैं। कोड में तीन भाग होते हैं:

40;33;01
  • अर्धविराम से पहले पहला भाग पाठ शैली का प्रतिनिधित्व करता है।

    • 00 = कोई भी
    • 01 = बोल्ड
    • 04 = रेखांकित
    • 05 = झपकी
    • 07 = रिवर्स
    • 08 = छुपा
  • दूसरा और तीसरा भाग रंग और पृष्ठभूमि रंग हैं:

    • 30 = काला
    • 31 = लाल
    • 32 = हरी
    • 33 = पीला
    • 34 = नीला
    • 35 = मैजेंटा
    • 36 = सियान
    • 37 = सफेद

प्रत्येक भाग को छोड़ा जा सकता है, बाईं ओर से शुरू करते हुए। यानी "1" का अर्थ है बोल्ड, "1; 31" का अर्थ है बोल्ड और लाल। और आप अपने टर्मिनल को निर्देश से बचकर \33[और उसके साथ समाप्त करके रंग में प्रिंट करने के लिए प्राप्त करेंगे m। हेक्साडेसिमल में 33, या 1 बी, ASCII संकेत "ESCAPE" (ASCII वर्ण सेट में एक विशेष चरित्र) है। उदाहरण:

"\33[1;31mHello World\33[m"

उज्ज्वल लाल में प्रिंट "हैलो वर्ल्ड"।


मैंने अपील export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> 'की, /etc/bash.bashrcलेकिन कुछ भी नहीं बदला ... यह एक सत्र पर काम करता है, लेकिन मैं इसे स्थायी नहीं कर सकता।
जारेड ट्रिट्श

8

एक और विकल्प यह है कि वर्किंग डायरेक्टरी पाथ को छोटा किया जाए जब यह बहुत लंबा हो जाए: टर्मिनल कमांड प्रॉम्प्ट वर्किंग डायरेक्टरी ट्रिम करें

एक छोटा अजगर स्क्रिप्ट बनाएं जो वांछित ट्रिमिंग तर्क को लागू करता है।

उदाहरण: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

अब एक टर्मिनल से इसका परीक्षण करें:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

यदि आप परिणाम के साथ ठीक हैं तो बस कमांड को अपने ~ / .bashrc में जोड़ें


Exa ... ~ / short.pwd.py, export ... ~ / .short.pwd.py मुझे लगता है कि दोनों को समान होना चाहिए। या तो आप दोनों जगहों पर एक अतिरिक्त कमांड रखते हैं या आप ऐसा बिल्कुल नहीं करते हैं। लेकिन यह एक उत्कृष्ट उत्तर है ..
MycrofD

7

मैं अक्सर अस्थायी रूप से ऐसा करना चाहता हूं। यहाँ मैं क्या कर रहा हूँ:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

मुझे उम्मीद है इससे किसी को सहायता मिलेगी।


1

macOS उपयोगकर्ताओं के लिए:

open ~/.bash_profile

फ़ाइल के अंत में निम्न पंक्ति जोड़ें और इसे सहेजें

export PS1='\u:\w\$ '

घर निर्देशिका में परिणाम:

user: ~$

वर्तमान कार्य निर्देशिका $ के लिए उपयोगकर्ता w के लिए यहाँ यू प्रदर्शित करने के लिए संकेत देना है

आप निम्नलिखित शैलियों की कोशिश कर सकते हैं:

export PS1='$ '

बस शीघ्र के रूप में $ है, और कुछ नहीं। बिलकुल इसके जैसा:

$ 

0

वह चीज जिसने मेरी मदद की: निर्यात PS1 = '$'

हर बार जब आप टर्मिनल खोलते हैं, तो कमांड को .bashrc के अंत में लिखें, जिसे आप 'cd' द्वारा खोल सकते हैं और उसके बाद 'gedit .bashrc' कर सकते हैं।

उम्मीद है की यह मदद करेगा। मेरे लिए काम किया।

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