Come accorciare il percorso della directory corrente mostrato sul terminale?


17

Se mi trovo in una directory profonda, diciamo:

~/Desktop/Dropbox/School/2017/C/A3/

poi quando apro il terminale, dice

bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$

e poi scrivo il mio comando. È molto lungo e ogni riga che scrivo nel terminale passa alla riga successiva. Voglio sapere se c'è un modo in modo che visualizzi solo la mia directory corrente. Voglio che visualizzi:

bob@bob-ubuntu: A3/$

In questo modo è molto chiaro, e sempre posso fare pwdper vedere la mia intera directory. Non voglio che l'intera directory sia visibile nel terminale perché occupa troppo spazio.

Risposte:


12

È necessario modificare PS1il file di avvio della shell (probabilmente .bashrc).

Se è già lì, la sua impostazione conterrà \w, che è ciò che dà la tua directory di lavoro. Cambialo in \W(maiuscolo). Esci e ripeti, oppure esegui:

. .bashrc

(o qualunque sia il tuo file).

Se non è presente, aggiungi qualcosa di simile:

PS1='\u@\h: \W:\$'

a .bashrco qualsiasi altra cosa. Cerca PS1nella bashpagina del manuale per avere più idee.

Stai attento; bashpuò usare più di un file di inizializzazione, ad es. .bashrce .bash_profile; può essere PS1impostato in un sistema. Ma puoi sovrascriverlo in uno dei tuoi file.


23

Da bash 4, il modo più semplice per accorciare la profondità della directory nella riga di comando sta usando il comando seguente nel file bashrc. Ricorda solo di riaprire il tuo terminale e anche il numero (es. 1) specifica la profondità della directory da mostrare.

PROMPT_DIRTRIM = 1


4
Questo e 'esattamente quello che stavo cercando. Impostare qualcosa di simile export PROMPT_DIRTRIM=3al tuo .bashrcè la via di mezzo perfetta tra \We \w. Vedi: gnu.org/software/bash/manual/html_node/Bash-Variables.html
spkane

3

Supponendo che tu stia usando bash, modifica la stringa del prompt (variabile PS1) in modo che abbia \Winvece\w .

ad es. se la tua PS1 è attualmente \u@\h:\w\$ , impostala su\u@\h:\W\$

Per renderlo permanente, dovrai modificarlo nei file di avvio di bash, ad es ~/.bash_profile o ~/.bashrc.

vedere man bashe cercare PROMPTINGtutti i dettagli e un elenco di caratteri speciali con escape backslash.


Ho 4 menzioni di PS1 Posso cambiare tutte e 4?
K Split X

4 menzioni dove? in ~ / .bash_profile? non dovrebbe nuocere a cambiare tutte le istanze di \win PS1 in \W. oppure potresti semplicemente impostare il prompt su quello che ti piace in fondo allo script.
CAS

1

in questo caso dovrai modificare PS1 ,

In questo caso \w, avrai un comando o una variabile che mostra il percorso abbreviato:

PS1 originale

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

cambiarlo in

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]${PWD##*/}\[\033[00m\]\$'

Nota che questo inserirà il nome utente inserito ~ se ti trovi nella tua home directory!

per evitare che siano necessari alcuni comandi con $ {PWD ## * /} ad es

if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi

la nuova PS1 sarà simile alla seguente

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]`if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi`\[\033[00m\]\$'

oOps mentre sto cercando di salvare il mondo non ho avuto nessunIdea | dimenticato il \ W


1

Questo è portatile per tutte le shshell.

Assegnare a PS1in uno dei file di avvio della shell:

PS1='${PWD##*/} $ '

Il prompt sarà simile

dir $

Dov'è diril nome di base della directory corrente.

La $PWDvariabile contiene il percorso corrente della directory e ${PWD##*/}rimuoverà tutto fino all'ultimo incluso/ in quel percorso.

Le virgolette singole impediscono al modulo shell di valutare la sostituzione delle variabili al momento dell'assegnazione (il valore di $PS1verrà valutato ogni volta che viene visualizzato il prompt).

La PS1variabile non deve essere esportata in quanto viene utilizzata solo dalla shell corrente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.