Nasconde la directory di lavoro corrente nel terminale

111

Come impostazione predefinita, il prompt del terminale mostra qualcosa del tipo:

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

più vai a fondo nel filesystem, meno spazio è lasciato per digitare comandi. Posso cambiare questo per mostrare solo qualcosa del tipo:

>

Voglio dire, posso semplicemente digitare pwd per mostrare dove sono. ;)

    
posta Theodor 09.12.2010 - 10:16
fonte

5 risposte

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

Ciò risulta in oli@bert: per il mio prompt.

Se vuoi davvero qualcosa di minimalista come lo chiedi, prova questo:

export PS1='> '

Puoi collegarlo alla fine del tuo file ~/.bashrc per mantenerlo tra un login e l'altro.

Puoi anche essere creativo con alcuni colori. Ecco cosa uso sui miei server:

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

Giving (è più facile vedere su uno sfondo nero completo):

Glossario dei caratteri accettabili in PS1

    
risposta data Oli 09.12.2010 - 10:22
fonte
86

Solo per espandere la risposta di Oli (e in modo da avere un segnalibro per i simboli a mano corta):

Il prompt di bash ( stefano@linux:~$ ) è solo il primo di un paio di prompt potresti vedere:

  • PS1 : il prompt predefinito che vedi quando apri una shell

    Il suo valore è memorizzato in una variabile di ambiente chiamata PS1 . Per vedere il suo valore, Tipo

    echo $PS1

    Questo ti darà qualcosa come

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

    Per cambiarlo, puoi impostare un nuovo valore per la variabile:

    export PS1="\u > "
    

    Ciò comporterà una richiesta come questa:

    stefano > 
    
  • PS2 : è il tuo secondo prompt. Questo viene mostrato quando un comando non è finito. Digita echo "asd e premi invio, il secondo comando ti permetterà di inserire altro linee finché non chiudi le virgolette.

  • PS3 è il prompt utilizzato per select (2)

  • PS4 è il prompt utilizzato per tracce di tracce (predefinito: + )

Per rendere permanenti le modifiche, aggiungili alla fine di .bash_profile (o .bashrc , vedi questa domanda ) nel tuo home directory.

Ecco un elenco più o meno completo di abbreviazioni che puoi usare quando componi questi:

  • \a Il carattere "campana"
  • \A 24 ore
  • \d Data (ad esempio, martedì 21 dicembre)
  • \e Il carattere "escape"
  • \h Nome host (fino al primo ".")
  • \H Nome host
  • \j numero di lavori attualmente in esecuzione (ps)
  • \l Tty corrente
  • \n Feed di riga
  • \t Ora (hh: mm: ss)
  • \T Ora (hh: mm: ss, formato 12h)
  • \r ritorno a capo
  • \s Shell (cioè bash, zsh, ksh ..)
  • \u Nome utente
  • \v versione di Bash
  • \V stringa di rilascio di Full Bash
  • \w directory di lavoro corrente
  • \W Ultima parte della directory di lavoro corrente
  • \! Indice corrente nella cronologia
  • \# Indice del comando
  • $ Un "#" se sei root, altrimenti "$"
  • \ Backslash letterale
  • \@ Ora (formato 12h con am / pm)

Ovviamente puoi inserire qualsiasi stringa letterale e qualsiasi comando:

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

Dove $(pwd) sta al posto di "l'output di" pwd.

  • Se la sostituzione di comando viene eseguita con l'escape, come in $(pwd) , viene valutata ogni volta che viene visualizzata la richiesta, altrimenti, come in $(pwd) , viene valutata solo una volta all'avvio di bash.

Se vuoi che il tuo prompt visualizzi i colori, puoi usare i codici colore di bash per farlo. Il codice è composto da tre parti:

40;33;01
  • La prima parte prima del punto e virgola rappresenta lo stile del testo.

    • 00 = none
    • 01 = grassetto
    • 04 = sottolineatura
    • 05 = batter
    • 07 = inversa
    • 08 = nascosto
  • La seconda e la terza parte sono il colore e il colore dello sfondo:

    • 30 = nero
    • 31 = red
    • 32 = verde
    • 33 = giallo
    • 34 = blu
    • 35 = magenta
    • 36 = ciano
    • 37 = bianco

Ogni parte può essere omessa, assumendo l'avvio a sinistra. Ad esempio "1" significa in grassetto, "1; 31" significa in grassetto e rosso. E il tuo terminale dovrebbe stampare a colori evadendo l'istruzione con [ e terminandola con un m . 33, o 1B in esadecimale, è il segno ASCII "ESCAPE" (un carattere speciale nel set di caratteri ASCII). Esempio:

"[1;31mHello World[m"

Stampa "Hello World" in rosso.

    
risposta data Stefano Palazzo 21.12.2010 - 22:57
fonte
6

Un'altra alternativa è abbreviare il percorso della directory di lavoro quando diventa troppo lungo: tagliare la directory di lavoro del prompt dei comandi del terminale

  

Crea un piccolo script python che implementa la logica di taglio desiderata.

     

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

Ora provalo, da un terminale:

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

Se stai bene con il risultato, aggiungi il comando al tuo ~ / .bashrc

    
risposta data Olivier Lalonde 22.12.2010 - 01:26
fonte
4

Spesso desidero farlo temporaneamente. Ecco cosa faccio:

$ 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

Spero che questo aiuti qualcuno.

    
risposta data Joe Codeswell user601770 27.03.2013 - 23:33
fonte
0

La cosa che mi ha aiutato è stata: export PS1 = '$'

Per avere questo ogni volta che apri il terminale, scrivi il comando alla fine di .bashrc che puoi aprire con "cd" seguito da "gedit .bashrc".

Spero che questo aiuti. Ha funzionato per me.

    
risposta data Arka Mitra 05.07.2018 - 21:36
fonte

Leggi altre domande sui tag