Vraag Verberg de huidige werkdirectory in terminal


Standaard geeft de terminalprompt iets weer als:

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

hoe dieper u in het bestandssysteem gaat, hoe minder ruimte er over blijft om opdrachten in te typen. Kan ik dit veranderen om alleen iets te laten zien als:

>

Ik bedoel, ik kan gewoon typen pwd om te laten zien waar ik ben. ;)


112
2017-12-09 09:16


oorsprong


Dit zou een opmerking moeten zijn, maar ik kan geen commentaar geven, sorry. Naast het verbergen van de huidige map, maakt de volgende PS1-waarde visueel je bash-opdrachten visueel gescheiden: export PS1="\n___" - Hello World
experimenteerde met de oplossingen van Oli. De kleurlettertypen werken goed in de terminal: export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:' - linbianxiaocao


antwoorden:


export PS1='\u@\h: '

Dat resulteert in oli@bert: voor mijn prompt.

Als je echt iets zo minimalistisch als je wilt, probeer dit dan:

export PS1='> '

U kunt dat aan het einde van uw ~/.bashrc bestand zodat het blijft bestaan ​​tussen aanmeldingen.

Je kunt ook creatief worden met sommige kleuren. Dit is wat ik gebruik op mijn servers:

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

Geven (het is gemakkelijker te zien op een volledig zwarte achtergrond):

My terminals

Verklarende woordenlijst van acceptabele tekens in PS1


129
2017-12-09 09:22



Je kunt ook newlines (\ n) gebruiken als onderdeel van de prompt, zodat je alle info en de '>' op afzonderlijke regels kunt zetten. - ak2
Ik kwam voor het eerst in aanraking met dit soort "extreme" schaalaanpassingen in msysGit, geloof het of niet. Ik werd onmiddellijk omgezet in de wereld van bash. Alle info (mijn huidige directory, de huidige branch uitgecheckt van de Git-repo, de staat van de Git-index ...) was daar zo geweldig. Ik ben van plan iets vergelijkbaars te doen met de Ubuntu-installatie die ik onlangs op een oude laptop heb gezet (naast Windows XP). - dgw
wat is het formaat dat wordt gebruikt voor het instellen van de kleuren? - Syed Rakib Al Hasan


Gewoon om het antwoord van Oli uit te breiden (en zodat ik een bladwijzer heb voor die korte-handsymbolen):

De bash-prompt (stefano@linux:~$) is slechts de eerste van een paar aanwijzingen je zou kunnen zien:

  • PS1: de standaardprompt die u ziet wanneer u een shell opent

    De waarde wordt opgeslagen in een omgevingsvariabele genaamd PS1. Om de waarde te zien, type

    echo $PS1

    Dit geeft je zoiets als

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

    Om dit te wijzigen, kunt u een nieuwe waarde voor de variabele instellen:

    export PS1="\u > "
    

    Dit zal resulteren in een prompt als deze:

    stefano > 
    
  • PS2: is uw secundaire prompt. Dit wordt weergegeven wanneer een opdracht niet is voltooid. Type echo "asd en druk op Enter, de secundaire prompt laat je meer invoeren lijnen totdat je de omgekeerde komma's sluit.

  • PS3 is de prompt voor select(2)

  • PS4 is de prompt voor alt text  stapel sporen (standaard: +)

Om de wijzigingen permanent te maken, voegt u ze toe aan het einde van .bash_profile (of .bashrc, zien deze vraag) in uw home directory.

Hier is een min of meer volledige lijst met afkortingen die u kunt gebruiken bij het samenstellen van deze:

  • \a Het 'bel'-personage
  • \A 24 uur tijd
  • \d Datum (bijvoorbeeld di 21 december)
  • \e Het 'escape'-personage
  • \h Hostnaam (tot de eerste ".")
  • \H hostname
  • \j Aantal momenteel lopende banen (ps)
  • \l Huidige tty
  • \n Line feed
  • \t Tijd (uu: mm: ss)
  • \T Tijd (uu: mm: ss, 12h-notatie)
  • \r Koers terug
  • \s Shell (dat wil zeggen bash, zsh, ksh ..)
  • \u Gebruikersnaam
  • \v Bash-versie
  • \V Full Bash release string
  • \w Huidige werkmap
  • \W Laatste deel van de huidige werkdirectory
  • \! Huidige index in geschiedenis
  • \# Command index
  • \$ Een "#" als je root bent, anders "$"
  • \\ Letterlijke backslash
  • \@ Tijd (12 uur formaat met am / pm)

Je kunt natuurlijk elke letterlijke tekenreeks en elke opdracht invoegen:

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

Waar $(pwd) staat in de plaats van "de uitvoer van" pwd.

  • Als de opdrachtsubstitutie is ontsnapt, zoals in \$(pwd), het wordt geëvalueerd elke keer dat de prompt wordt getoond, anders zoals in $(pwd), het wordt maar één keer geëvalueerd wanneer bash wordt gestart.

Als u wilt dat uw prompt kleuren weergeeft, kunt u bash's kleurcodes gebruiken om dit te doen. De code bestaat uit drie delen:

40;33;01
  • Het eerste deel vóór de puntkomma staat voor de tekststijl.

    • 00 = none
    • 01 = vet
    • 04 = underscore
    • 05 = knipperen
    • 07 = reverse
    • 08 = verborgen
  • Het tweede en derde deel zijn de kleur en de achtergrondkleur:

    • 30 = zwart
    • 31 = rood
    • 32 = groen
    • 33 = geel
    • 34 = blauw
    • 35 = magenta
    • 36 = cyaan
    • 37 = wit

Elk onderdeel kan worden weggelaten, ervan uitgaande dat je aan de linkerkant begint. d.w.z. "1" betekent vet, "1; 31" betekent vet en rood. En u zou ervoor zorgen dat uw terminal in kleur afdrukt door aan de instructie te ontsnappen \33[ en eindigend met een m. 33, of 1B in hexadecimaal, is het ASCII-teken "ESCAPE" (een speciaal teken in de ASCII-tekenset). Voorbeeld:

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

Drukt "Hallo wereld" in helder rood af.


87
2017-12-21 21:57



Ik heb het bijgevoegd export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> ' naar /etc/bash.bashrc maar er leek niets te veranderen ... het werkt per sessie, maar ik kan het niet permanent maken. - Jared Tritsch


Een ander alternatief is om het pad van de werkdirectory in te korten wanneer het te lang wordt: trim de terminal-opdrachtprompt werkmap

Maak een klein python-script dat de gewenste trimlogica implementeert.

Voorbeeld: ~ / 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)

Test het nu vanaf een terminal:

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

Als u tevreden bent met het resultaat, voegt u gewoon de opdracht toe aan uw ~ / .bashrc


6
2017-12-22 00:26



Exa ... ~ / short.pwd.py, exporteer ... ~ / .short.pwd.py ik denk dat beide hetzelfde moeten zijn. Of je zet een extra commando in beide plaatsen of je doet dat helemaal niet. Maar dit is een uitstekend antwoord .. - MycrofD


Ik wil dit vaak tijdelijk doen. Dit is wat ik doe:

$ 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

Ik hoop dat dit iemand helpt.


4
2018-03-27 22:33





Het ding dat mij hielp was: export PS1 = '$'

Om dit elke keer dat je de terminal opent te hebben, schrijf je het commando aan het einde van de .bashrc die je kunt openen met 'cd' gevolgd door 'gedit. Bashrc'.

Ik hoop dat dit helpt. Werkte voor mij.


0
2017-07-05 19:36