Come personalizzare (e colorare) il tuo prompt di Bash

Sommario:

Come personalizzare (e colorare) il tuo prompt di Bash
Come personalizzare (e colorare) il tuo prompt di Bash

Video: Come personalizzare (e colorare) il tuo prompt di Bash

Video: Come personalizzare (e colorare) il tuo prompt di Bash
Video: CENTRALINE - Come funzionano e come leggerne i parametri! - YouTube 2024, Aprile
Anonim
La maggior parte delle distribuzioni Linux configurano il prompt di Bash in modo che assomigli
La maggior parte delle distribuzioni Linux configurano il prompt di Bash in modo che assomigli

username@hostname:directory$

. Ma puoi configurare il prompt di Bash in modo che contenga tutto ciò che ti piace e persino scegliere i colori che preferisci.

I passaggi di esempio qui sono stati eseguiti su Ubuntu 16.04 LTS. Il processo dovrebbe essere lo stesso su altre distribuzioni Linux, sebbene il prompt Bash predefinito e le impostazioni nel file.bashrc potrebbero essere leggermente differenti.

Dove viene memorizzata la variabile del prompt

La configurazione del prompt di Bash è memorizzata nel file.bashrc del tuo account utente, che è a

~/.bashrc

. Quindi, se il tuo nome utente è bob, il file è a

/home/bob/.bashrc

È possibile aprire il file per visualizzare la variabile Bash corrente. Useremo nano come nostro editor di testo di esempio, sebbene tu possa usare anche vi, emacs o qualsiasi altro editor di testo con cui ti trovi a tuo agio. Apri un terminale ed esegui:

nano ~/.bashrc

Scorri verso il basso fino a
Scorri verso il basso fino a

PS1=

sezione. La prima variabile sembra piuttosto complicata perché include le informazioni sul colore: lo spiegheremo più tardi. La seconda variabile, senza informazioni sul colore, recita come segue:

${debian_chroot:+($debian_chroot)}u@h:w$

Questo è ancora un po 'complicato a causa del
Questo è ancora un po 'complicato a causa del

${debian_chroot:+($debian_chroot)}

bit. Questi dicono semplicemente a Bash di farti sapere se stai usando un ambiente chroot di Debian e normalmente non verrà mostrato. Ignorando quelli, ecco la struttura predefinita della variabile prompt Bash:

u@h:w$

u

indica il tuo nome utente,

@

indica il simbolo @,

h

indica il nome host (nome del computer),

:

indica il carattere:

w

indica la directory di lavoro, e

$

indica $ se sei un normale account utente o # se sei root. Quindi, mettendo tutto insieme, ottieni

username@hostname:working_directory$

Per modificare il prompt di Bash, devi solo aggiungere, rimuovere o riorganizzare i caratteri speciali nella variabile PS1. Ma ci sono molte più variabili che puoi usare rispetto a quelle predefinite.

Lascia l'editor di testo per ora-in nano, premi Ctrl + X per uscire. Ti mostreremo come sperimentare le variabili prima di scriverne una nuova nel tuo file.bashrc.

Come creare un prompt Bash personalizzato

La configurazione del prompt di Bash è memorizzata nella variabile PS1. Per salvare il contenuto della variabile PS1 in una nuova variabile, eseguire il seguente comando:

DEFAULT=$PS1

Ora puoi impostare la variabile PS1 su valori diversi per sperimentare. Ad esempio, la prima riga qui imposterà il prompt a un prompt di base "utente $", mentre il secondo imposterà il prompt a un prompt di base "user: working_directory $".

PS1='u$ ' PS1='u:w$ '

Se si desidera tornare al prompt predefinito, eseguire semplicemente il comando seguente.

PS1=$DEFAULT

Bash verrà ripristinato al prompt predefinito grazie al fatto che hai salvato quelle impostazioni predefinite in precedenza. Tieni presente che qualsiasi modifica apportata qui è solo temporanea per la sessione Bash corrente, quindi puoi sempre uscire e accedere o chiudere e riaprire la finestra del terminale per tornare al prompt predefinito. Ma la riga sopra rende possibile tornare facilmente al prompt Bash predefinito senza la seccatura di uscire o chiudere una finestra.

Puoi aggiungere caratteri o testo alla variabile. Pertanto, per aggiungere un prefisso al prompt predefinito con "Hello World", è possibile utilizzare:
Puoi aggiungere caratteri o testo alla variabile. Pertanto, per aggiungere un prefisso al prompt predefinito con "Hello World", è possibile utilizzare:

PS1='Hello World u@h:w$ '

Ora che hai le nozioni di base, devi solo sapere quali sono tutti i personaggi speciali. Probabilmente non ti interesseranno molti di questi, ma ecco l'elenco completo come appare nel manuale di Bash:
Ora che hai le nozioni di base, devi solo sapere quali sono tutti i personaggi speciali. Probabilmente non ti interesseranno molti di questi, ma ecco l'elenco completo come appare nel manuale di Bash:
  • Un personaggio campana:

    a

  • La data, nel formato "Data del giorno della settimana" (ad es. "Mar 26 maggio"):

    d

  • Il formato viene passato a strftime (3) e il risultato viene inserito nella stringa di richiesta; un formato vuoto produce una rappresentazione temporale specifica della locale. Le parentesi sono richieste:

    D{format}

  • Un personaggio di fuga:

    e

  • Il nome host, fino al primo '.':

    h

  • Il nome host:

    H

  • Il numero di lavori attualmente gestiti dalla shell:

    j

  • Il nome di base del nome del dispositivo terminale della shell:

    l

  • Una nuova riga:
  • Un ritorno a capo:
  • Il nome della shell, il nome di base di $ 0 (la parte che segue la barra finale):

    s

  • L'ora, nel formato HH: MM: SS di 24 ore:

  • L'ora, nel formato HH: MM: SS di 12 ore:

    T

  • L'ora, nel formato am / pm delle 12 ore:

    @

  • L'ora, nel formato HH: MM di 24 ore:

    A

  • Il nome utente dell'utente corrente:

    u

  • La versione di Bash (ad es., 2,00):

    v

  • Il rilascio di Bash, versione + patchlevel (ad esempio, 2.00.0):

    V

  • La directory di lavoro corrente, con $ HOME abbreviato con una tilde (utilizza la variabile $ PROMPT_DIRTRIM):

    w

  • Il nome di base di $ PWD, con $ HOME abbreviato con una tilde:

    W

  • Il numero di cronologia di questo comando:

    !

  • Il numero di comando di questo comando:

    #

  • Se l'uid effettivo è 0, #, altrimenti $:

    $

  • Il personaggio il cui codice ASCII è il valore ottale nnn:

    nn

  • Un backslash:

  • Inizia una sequenza di caratteri non stampabili. Questo potrebbe essere usato per incorporare una sequenza di controllo terminale nel prompt:

    [

  • Termina una sequenza di caratteri non stampabili:

    ]

Pertanto, se si desidera aggiungere la data e l'ora al prompt di Bash e posizionare la directory di lavoro su un comando su una seconda riga, è possibile utilizzare la seguente struttura:

PS1='[d ] u@h

w$ '

Le parentesi quadre qui non sono affatto necessarie, ma aiutano a rompere le cose visivamente e semplificano la lettura della linea. Come spiegato in precedenza, puoi aggiungere qualsiasi testo o caratteri normali alla variabile che ti piace, quindi sentiti libero di usare qualsiasi cosa funzioni per te.

C'è un altro trucco potente che dovresti sapere: puoi aggiungere l'output di qualsiasi comando al prompt. Ogni volta che viene visualizzato il prompt, Bash eseguirà il comando e inserirà le informazioni correnti. Per fare questo, basta includere qualsiasi comando che si desidera eseguire tra due
C'è un altro trucco potente che dovresti sapere: puoi aggiungere l'output di qualsiasi comando al prompt. Ogni volta che viene visualizzato il prompt, Bash eseguirà il comando e inserirà le informazioni correnti. Per fare questo, basta includere qualsiasi comando che si desidera eseguire tra due

`

personaggi. Questo non è un apostrofo: questo è l'accento grave, che appare sopra il tasto Tab della tastiera.

Ad esempio, supponiamo di voler visualizzare la versione del kernel Linux nel prompt. Potresti usare una linea come la seguente:

PS1='u@h on `uname -s -r` w$ '

Come altro esempio, supponiamo che tu voglia vedere il tempo di funzionamento del sistema e il carico medio, come mostrato dal
Come altro esempio, supponiamo che tu voglia vedere il tempo di funzionamento del sistema e il carico medio, come mostrato dal

uptime

comando. È possibile utilizzare la seguente struttura, che mette il tempo di attività sulla propria linea prima del resto del prompt.

PS1='(`uptime`)

u@h:w$ '

Sentiti libero di sperimentare con caratteri speciali e comandi diversi per assemblare il tuo prompt dei comandi ideale.
Sentiti libero di sperimentare con caratteri speciali e comandi diversi per assemblare il tuo prompt dei comandi ideale.

Come aggiungere colori al tuo Bash Prompt

Una volta capito il prompt preferito, puoi aggiungere dei colori. Questo è in realtà molto semplice, ma rende la variabile terribilmente complicata e complicata se non capisci cosa stai guardando.

Ad esempio, la variabile del prompt dei colori predefinita precedente era:

${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

Oppure, rimuovendo i bit debian_chroot ancora una volta:

[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

Questo è in realtà solo il
Questo è in realtà solo il

u@h:w$

variabile da precedente, ma con informazioni sul colore. In realtà, possiamo suddividerlo in alcune sezioni:

[33[01;32m] u@h [33[00m] : [33[01;34m] w [33[00m] $

La prima sezione è il

u@h

bit, preceduto da informazioni sul colore che lo rendono verde. Il secondo è il

:

carattere, preceduto da informazioni sul colore che rimuovono qualsiasi colorazione. Il terzo è il

w

bit, preceduto da informazioni sul colore che lo rendono blu. Il quarto è il

$

bit, preceduto da informazioni sul colore che rimuovono qualsiasi colorazione.

Una volta compreso come costruire tag colore personalizzati, puoi aggiungere tutti i colori che ti piacciono a qualsiasi sezione del prompt di Bash che ti piace.
Una volta compreso come costruire tag colore personalizzati, puoi aggiungere tutti i colori che ti piacciono a qualsiasi sezione del prompt di Bash che ti piace.

Ecco cosa devi sapere: devi includere l'intera informazione sul codice colore tra il

[

e

] character

S. All'interno del tag, è necessario iniziare con entrambi

33[

o

e[

per indicare a Bash che si tratta di informazioni sul colore. Tutti e due

33[

e

e[

fare la stessa cosa

e[

è più breve, quindi potrebbe essere più comodo da usare, ma useremo

33[

qui come corrisponde a ciò che viene utilizzato di default. Alla fine del tag, devi terminare con

m

per indicare la fine di un tag colore.

Rompere questo, ecco come apparirà ogni etichetta di colore. L'unica differenza è l'informazione che aggiungi al posto di COLOR per definire il colore reale:

[33[ COLORm]

Bash ti consente di cambiare il colore del testo in primo piano, aggiungere attributi come "grassetto" o "sottolineatura" al testo e impostare un colore di sfondo.

Ecco i valori per il testo in primo piano:

  • Nero: 30
  • Blu: 34
  • Ciano: 36
  • Verde: 32
  • Viola: 35
  • Rosso: 31
  • Bianco: 37
  • Giallo: 33

Ad esempio, dal momento che il testo viola è il codice colore 32, lo utilizzeresti

[33[ 32m]

per il testo viola.

Puoi anche specificare un attributo per il testo. Questo attributo deve essere aggiunto prima del numero del colore, separato da un punto e virgola (;). Il testo con questi attributi apparirà diverso in diversi emulatori di terminale.
Puoi anche specificare un attributo per il testo. Questo attributo deve essere aggiunto prima del numero del colore, separato da un punto e virgola (;). Il testo con questi attributi apparirà diverso in diversi emulatori di terminale.

Ecco i valori per gli attributi di testo:

  • Testo normale: 0
  • Testo in grassetto o chiaro: 1 (dipende dall'emulatore di terminale).
  • Dim Text: 2
  • Testo sottolineato: 4
  • Testo lampeggiante: 5 (Questo non funziona nella maggior parte degli emulatori di terminale.)
  • Testo invertito: 7 (Questo inverte i colori di primo piano e di sfondo, quindi vedrai il testo nero su uno sfondo bianco se il testo corrente è testo bianco su sfondo nero.)
  • Testo nascosto: 8

In realtà non è necessario includere il normale attributo di testo. Questo è il default, comunque.

Ad esempio, dal momento che il testo rosso è il codice 31 e il testo in grassetto è il codice 1, devi utilizzare

[33[ 1;31m]

per il testo in grassetto rosso.

Puoi anche specificare un colore di sfondo, ma non puoi aggiungere un attributo a un colore di sfondo.
Puoi anche specificare un colore di sfondo, ma non puoi aggiungere un attributo a un colore di sfondo.

Ecco i valori per i colori di sfondo:

  • Sfondo nero: 40
  • Sfondo blu: 44
  • Ciano sfondo: 46
  • Sfondo verde: 42
  • Sfondo viola: 45
  • Sfondo rosso: 41
  • Sfondo bianco: 47
  • Sfondo giallo: 43

Ad esempio, poiché uno sfondo blu è il codice 44,

[33[ 44m]

specificarebbe uno sfondo blu.

È possibile specificare sia tag di colore di primo piano che di sfondo. Ad esempio, 42 rappresenta uno sfondo verde e 31 rappresenta il testo rosso. Quindi, per fare in modo che il prompt predefinito diventi testo rosso su sfondo verde, devi utilizzare:
È possibile specificare sia tag di colore di primo piano che di sfondo. Ad esempio, 42 rappresenta uno sfondo verde e 31 rappresenta il testo rosso. Quindi, per fare in modo che il prompt predefinito diventi testo rosso su sfondo verde, devi utilizzare:

PS1='[33[ 42m][33[ 31m]u@h:w$ '

Specifichiamo solo un singolo colore di sfondo e quindi un singolo colore di testo in primo piano qui, che inizia all'inizio del prompt e viene applicato a tutto il testo nel prompt. Tuttavia, puoi specificare tutti i tag colore che desideri nella variabile per colorare diverse sezioni del prompt come preferisci.

I colori di sfondo e di primo piano continuano a superare il prompt, a meno che non si specifichi il codice colore 00 per cancellare le informazioni sul colore. È inoltre possibile utilizzare questo tag all'interno della variabile per ripristinare la formattazione di default su qualche punto del prompt. Ad esempio, la seguente riga finirebbe per colorare prima del
I colori di sfondo e di primo piano continuano a superare il prompt, a meno che non si specifichi il codice colore 00 per cancellare le informazioni sul colore. È inoltre possibile utilizzare questo tag all'interno della variabile per ripristinare la formattazione di default su qualche punto del prompt. Ad esempio, la seguente riga finirebbe per colorare prima del

$

personaggio.

PS1='[33[ 42m][33[ 31m]u@h:w\[33[ 00m]$ '

Image
Image

Come impostare il nuovo prompt predefinito

Una volta che hai finito di sperimentare i colori, dovresti avere una richiesta Bash che ti piace nella sessione corrente. Ma probabilmente vorrai rendere il nuovo prompt permanente in modo che venga automaticamente utilizzato in tutte le tue sessioni Bash.

Per fare ciò, devi solo cambiare il contenuto della variabile PS1 nel file.bashrc, che abbiamo visto prima.

Apri il file.bashrc nel tuo editor di testo preferito, in questo modo:

nano ~/.bashrc

Scorri verso il basso e individua la sezione PS1 =.Basta sostituire la variabile predefinita con la variabile personalizzata. Probabilmente vorrai lasciare il

${debian_chroot:+($debian_chroot)}

solo bit, tuttavia, non appariranno a meno che tu non sia in un ambiente chroot, comunque.

Inserisci la tua variabile PS1 colorata sotto il

if [ '$color_prompt' = yes ]; then

linea. Inserisci la variabile senza colori sotto il

else

linea.

Salva il file e chiudi l'editor di testo. Ad esempio, per salvare il file in nano, premere Ctrl + O, premere Invio, quindi premere Ctrl + X per uscire.
Salva il file e chiudi l'editor di testo. Ad esempio, per salvare il file in nano, premere Ctrl + O, premere Invio, quindi premere Ctrl + X per uscire.

La prossima volta che avvii una nuova shell di Bash, ad esempio, accedendo al terminale o aprendo una nuova finestra di terminale, vedrai il tuo prompt personalizzato.

Consigliato: