我发现这似乎接近解决方案,但它并不完全存在。
编辑:使用JavaScript,我知道我可以运行test.replace(/\w/g, "*")
,test
我的用户名在哪里,但我不知道终端的等价物。
*****
(这些是我正在谈论的特殊字符)。我明白我会PRMOPT_COMMAND
在$PS1
开始之前做到这一点。
我发现这似乎接近解决方案,但它并不完全存在。
编辑:使用JavaScript,我知道我可以运行test.replace(/\w/g, "*")
,test
我的用户名在哪里,但我不知道终端的等价物。
*****
(这些是我正在谈论的特殊字符)。我明白我会PRMOPT_COMMAND
在$PS1
开始之前做到这一点。
Answers:
隐藏的用户名应与原始用户名的长度相同?像这样:
Alices-MacBook:〜*****
Bobs-MacBook:〜***
以下代码片段应该完成这项工作(作为奖励,它还会隐藏主机名)。将其添加到〜/ .bash_profile或您设置PS1的任何位置。(我创建了一个临时文件 - test.sh - 用于测试,然后获取该文件 - '../ test.sh'。如果出现了严重错误,并且我的提示难以辨认,我可以简单地重启终端并回到我的旧提示)。
PROMPT_COMMAND=__prompt_command
__hide_string()
{
echo "$1" | sed 's/./\*/g'
}
__prompt_command()
{
PS1="$(__hide_string $HOSTNAME):\W $(__hide_string $USER)\$"
}
这将用“*”替换用户名中的每个字符(它也将为主机名执行,以显示函数重用)。我认为这不太理想 - 每次显示提示时,函数都被调用(两次 - 一次用户,一次用于主机名)(即使用户名没有改变):有一点黑客攻击应该是可能的修改它,以便它只在PS1设置时(即在登录时)调用'__hide_string'函数。
说明:每次显示提示时,我们定义的__prompt_command函数都会设置PS1。(这可能是矫枉过正,但让事情变得“充满活力”)。PS1应该很熟悉; 唯一的新功能是'\ h'和'\ u'被调用__hide_string函数替换(并使用$ HOSTNAME和$ USER作为参数)。__hide_string是有趣的部分:它将其参数与sed相呼应,它将每个字符替换为'*'。
所述PS1
提示中所定义/etc/bashrc
,默认通常为PS1='\h:\W \u\$ '
。你会替换\u
用*****
。您也可以将文件添加export PS1='\h:\W *****\$ '
到~/.bash_profile
文件中,同时/etc/bashrc
单独保留系统文件()。
${USER//?/*}
(即导出PS1 =“\ h:\ W $ {USER //?/ *} \ $”)。请注意,由于用户名在会话期间不会更改,因此每个会话只需运行一次(在〜/ .bash_profile中,也可能在〜/ .bashrc中),而不是每次提示运行一次(使用PROMPT_COMMAND)。
PROMPT_COMMAND
并PROMPTING
在BASH
手册页?在终端类型中,bash
然后右键单击它并选择Open man Page
。然后⌘F并搜索并阅读它。你有googled - 如何自定义bash命令提示符?这个很好:如何:更改/设置bash自定义提示(PS1)