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.
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.
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 '*'.
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
).