Bash提示间距问题

时间:2018-04-18 17:06:29

标签: bash unix prompt

所以我从这个reddit线程找到了一个很酷的bash提示符: https://www.reddit.com/r/archlinux/comments/5vusvx/here_is_my_bash_prompt_whats_your_favorite/

我测试的那个是@khordes的最高评论。这是预期的: https://imgur.com/a/t3evh

然而,我得到了一些不同的东西。这是问题所在:

───[~]───[ 33 files, 2334400]

正如您所看到的,在文件数量之前有相当多的空间。实际代码在这里:

PS1="┌─[\`if [ \$? = 0 ]; then echo \[\e[32m\]✔\[\e[0m\]; else echo \[\e[31m\]✘\[\e[0m\]; fi\`]───[\[\e[01;49;39m\]\u\[\e[00m\]\[\e[01;49;39m\]@\H\[\e[00m\]]───[\[\e[1;49;34m\]\W\[\e[0m\]]───[\[\e[1;49;39m\]\$(ls | wc -l) files, \$(ls -lah | grep -m 1 total | sed 's/total //')\[\e[0m\]]\n└───▶ "

任何关于如何修复它的输入都将非常感激。

1 个答案:

答案 0 :(得分:2)

此提示使用$(ls | wc -l)列出当前目录中的文件。

在GNU平台上,wc -l在没有传递任何文件名时没有前面的空格。

在BSD平台(例如MacOS)上,该数字以空格为前缀。

因此,这个提示的作者可能会在Linux变体或其他GNU平台上测试它,并且我假设您正在运行MacOS或其他BSD。为了保持一致,您需要确保删除此类空间 - 或切换到列出不依赖wc的文件的机制,例如BashFAQ #4中给出的文件。

以下是另一种选择:

$(shopt -s nullglob; set -- *; echo "$#")