¿El nombre de usuario oculto debe tener la misma longitud que el nombre de usuario original? Al igual que:
Alices-MacBook: ~ *****
Bobs-MacBook: ~ ***
El siguiente fragmento de código debería hacer el trabajo (y, como beneficio adicional, también ocultará el nombre de host). Agrégalo a tu ~ / .bash_profile, o donde sea que configures PS1. (Creé un archivo temporal - test.sh - para probar, y luego obtuve ese archivo - '. ./Test.sh'. Si algo hubiera salido espectacularmente mal, e hice ilegible mi mensaje, simplemente podría reiniciar el terminal y volver a mi antiguo aviso).
PROMPT_COMMAND=__prompt_command
__hide_string()
{
echo "$1" | sed 's/./\*/g'
}
__prompt_command()
{
PS1="$(__hide_string $HOSTNAME):\W $(__hide_string $USER)\$"
}
Esto reemplazará todos los caracteres en el nombre de usuario con un "*" (también lo hará para el nombre de host, para mostrar la reutilización de la función). Considero que esto es menos que ideal: la función se llama (dos veces, una vez para el usuario, una vez para el nombre de host) cada vez que se muestra el mensaje (aunque el nombre de usuario no ha cambiado): con un poco de pirateo debería ser posible para enmendarlo de modo que solo llame a la función '__hide_string' cuando se establece PS1 (es decir, al iniciar sesión).
Explicación: la función __prompt_command que hemos definido establece los conjuntos PS1 cada vez que se muestra el indicador. (Esto probablemente sea una exageración, pero mantiene las cosas 'dinámicas'). PS1 debe ser familiar; lo único nuevo es que '\ h' y '\ u' se reemplazan con llamadas a la función __hide_string (y usan $ HOSTNAME y $ USER como argumentos). __hide_string es la parte divertida: hace eco de su argumento a sed, que reemplaza a cada personaje individual con un '*'.