È possibile sostituire il mio nome utente in Terminale con caratteri speciali?

0

Ho trovato questo che sembra vicino alla soluzione, ma non è proprio lì.

EDIT: Con JavaScript, so che posso solo eseguire test.replace(/\w/g, "*") , dove test è il mio nome utente, ma non conosco l'equivalente per il Terminale.

    
posta NetOperator Wibby 27.11.2016 - 05:26
fonte

2 risposte

1

Il nome utente nascosto deve avere la stessa lunghezza del nome utente originale? Ad esempio:

Alices-MacBook: ~ *****

Bobs-MacBook: ~ ***

Il seguente frammento di codice dovrebbe fare il lavoro (e, come bonus, nasconderà anche il nome host). Aggiungilo al tuo ~ / .bash_profile o ovunque tu abbia impostato PS1. (Ho creato un file temporaneo - test.sh - per testare e poi ho estratto quel file - '. ./Test.sh'. Se qualcosa era andato storto in modo spettacolare, e avevo reso illeggibile il mio prompt, avrei potuto semplicemente riavviare il terminale e tornare al mio vecchio prompt).

PROMPT_COMMAND=__prompt_command

__hide_string()
{
    echo "$1" | sed 's/./\*/g'
}

__prompt_command()
{
    PS1="$(__hide_string $HOSTNAME):\W $(__hide_string $USER)\$"
}

Questo sostituirà ogni carattere nel nome utente con un "*" (lo farà anche per il nome host, per mostrare il riutilizzo della funzione). Lo considero non ideale - la funzione viene chiamata (due volte - una volta per utente, una volta per hostname) ogni volta che viene visualizzato il prompt (anche se il nome utente non è cambiato): con un po 'di hacking dovrebbe essere possibile per modificarlo in modo che invochi solo la funzione '__hide_string' quando PS1 è impostato (cioè all'accesso).

Spiegazione: la funzione __prompt_command che abbiamo definito imposta PS1 ogni volta che viene visualizzato il prompt. (Questo è probabilmente eccessivo, ma mantiene le cose 'dinamiche'). PS1 dovrebbe essere familiare; l'unica novità è che '\ h' e '\ u' vengono sostituiti con chiamate alla funzione __hide_string (e usano $ HOSTNAME e $ USER come argomenti). __hide_string è la parte divertente: rimanda l'argomento a sed, che sostituisce ogni singolo carattere con un '*'.

    
risposta data 27.11.2016 - 10:26
fonte
1

Il prompt PS1 è definito in /etc/bashrc e il valore predefinito è in genere PS1='\h:\W \u\$ ' . Sostituiresti \u con ***** . Puoi anche solo aggiungere, ad esempio export PS1='\h:\W *****\$ ' al tuo file ~/.bash_profile , lasciando da solo il file di sistema ( /etc/bashrc ).

    
risposta data 27.11.2016 - 06:52
fonte

Leggi altre domande sui tag