所以我从这个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└───▶ "
任何关于如何修复它的输入都将非常感激。
答案 0 :(得分:2)
此提示使用$(ls | wc -l)
列出当前目录中的文件。
在GNU平台上,wc -l
在没有传递任何文件名时没有前面的空格。
在BSD平台(例如MacOS)上,该数字以空格为前缀。
因此,这个提示的作者可能会在Linux变体或其他GNU平台上测试它,并且我假设您正在运行MacOS或其他BSD。为了保持一致,您需要确保删除此类空间 - 或切换到列出不依赖wc
的文件的机制,例如BashFAQ #4中给出的文件。
以下是另一种选择:
$(shopt -s nullglob; set -- *; echo "$#")