Inserire una riga vuota tra i prompt della riga di comando


8

Quando si utilizza la riga di comando, spesso diventa molto ingombra. Rendendo scomodo esaminare, ad esempio, i comandi passati e i loro output.

Vorrei avere una nuova riga aggiunta ogni volta prima che venga visualizzato il prompt dei comandi. Così:

<clutter>
<blank line>
name@machine:~$

Uso la shell bash. Come si può ottenere questo?


1
Preferisco questo: lifehacker.com/5840450/…
Maerlyn l'

Risposte:


21

Un modo per ottenere questo è modificando il .bashrcfile. Posiziona semplicemente quanto segue alla fine del .bashrcfile.

PS1="\n$PS1"

Per spiegare come funziona, PS1è la variabile che contiene ciò che dovrebbe essere visualizzato come prompt. Tutto ciò che sta dicendo è "impostato PS1sul contenuto precedente di PS1, con un carattere di nuova riga anteposto". Inserirlo nella .bashrcmaggior parte delle distribuzioni fa sì che bash lo esegua ogni volta che apri una shell interattiva (ma non una shell di accesso - vedi Differenza tra Shell di accesso e Shell non di accesso? ).


2
Per spiegare come funziona, PS1 è la variabile che contiene ciò che dovrebbe essere visualizzato come prompt. Tutto ciò che sta dicendo è "imposta PS1 sul contenuto precedente di PS1, con un carattere di nuova riga anteposto".
Muzer,

@Muzer Forse il tuo commento potrebbe essere una modifica
rpax,

@rpax buona idea, inviata. Aggiunto un po 'anche su .bashrc.
Muzer,

Soddisfacente, l'esecuzione PS1="\n$PS1"in un terminale ha effetto immediato :)
mwfearnley,

Funziona perfettamente, tranne che dopo aver inserito clear(o premuto Ctrl+l) la prima riga visualizzata è una riga vuota. Per alcuni potrebbe essere un piccolo dettaglio, ma preferirei che la prima riga fosse il prompt.
Robert Kusznier,

6

Puoi utilizzare PROMPT_COMMAND :

PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"

o:

PROMPT_COMMAND="echo;$PROMPT_COMMAND"

2
Il primo dovrebbe essere PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"? Nella sua forma attuale non sembra fare nulla quando l'ho inserito nel .bashrcfile.
Slothworks,

@Slothworks: Sì, certo, il mio errore di battitura, risolto.
cuonglm,

Più di un modo per farlo davvero :) Grazie per la tua risposta.
Slothworks,

2
L'alternativa di Slothworks è migliore, perché la tua esegue un comando extra dopo ogni comando che viene eseguito dalla riga di comando. printfe echosono molto leggeri, ovviamente, ma non ha ancora senso usare PROMPT_COMMANDquando PS1farà il lavoro.
Mikkel,

Nota, se vuoi inserire qualcosa nel comando che cambia ogni volta che esegui il prompt, allora vuoi PROMPT_COMMAND e non PS1. Questo è comunemente usato con git per visualizzare quale ramo del repository è attivo. Google per PROMPT_COMMAND suggerimenti per vedere cosa si può fare.
Walter,

4

Alternativa: lascia una riga nel PS1=prompt del tuo .bashrc. Ecco letteralmente come ho installato .bashrcsu ogni macchina Linux che ho:

PS1=' 
serg@ubuntu [$(pwd)]
================================
$ '

Come vedi nel mio esempio sopra, il nome utente è hardcoded nel prompt. Puoi ovviamente usare sequenze di escape fornite da bash o da un'altra shell (ad esempio ksh ), ma un'opzione un po 'più neutra sarebbe quella di utilizzare la sostituzione dei parametri con comandi come whoami(segnala il tuo nome utente) e hostname(ovviamente, riporta il nome host). Per esempio:

PS1='
$(whoami)@$(hostname):$(pwd)
$ '

Per altre cose divertenti con il prompt .bashrce le espansioni dei parametri, controlla le mie risposte qui:

Come controllare lo stato della batteria usando il terminale?

Come posso ottenere che i miei terminali / shell abbiano design personalizzati? e

Come mostrare un orologio in esecuzione nel terminale prima del prompt dei comandi?


Perché il nome utente e il nome della macchina sono codificati? Sarebbe bello se fossero parametrizzati
rpax,

@rpax il mio vero nome utente è diverso. Questo è il mio nome che vedi nel prompt. Anche il nome della macchina è diverso.
Sergiy Kolodyazhnyy,

Intendevo una specie di $(whoami)anzichéusernamehardcoded
rpax,

@rpax oh, anche questo può essere fatto. Lo includerò nella mia risposta
Sergiy Kolodyazhnyy l'

4
Nota che puoi usare \ue \hper il tuo nome utente e nome host, rispettivamente. Puoi vedere altri personaggi speciali (ad esempio l'ora corrente in vari formati) qui
Yossarian
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.