Bash提示间距问题
Bash prompt spacing issue
所以我从这个 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]
如您所见,文件数量前有相当多的space。实际代码在这里:
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└───▶ "
任何有关如何解决该问题的意见将不胜感激。
此提示使用 $(ls | wc -l)
列出当前目录中的文件。
在 GNU 平台上,wc -l
在未传递任何文件名时没有前面的白色space。
在 BSD 平台(例如 MacOS)上,数字以 spaces 为前缀。
因此,此提示的作者可能在 Linux 变体或其他 GNU 平台上对其进行了测试,我假设您使用的是 运行 MacOS 或其他 BSD。为了保持一致,您需要确保删除这样的 space——或者切换到一种不依赖于 wc
的文件列表机制,例如 BashFAQ #4 中给出的机制。
一个备选方案如下:
$(shopt -s nullglob; set -- *; echo "$#")
所以我从这个 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]
如您所见,文件数量前有相当多的space。实际代码在这里:
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└───▶ "
任何有关如何解决该问题的意见将不胜感激。
此提示使用 $(ls | wc -l)
列出当前目录中的文件。
在 GNU 平台上,wc -l
在未传递任何文件名时没有前面的白色space。
在 BSD 平台(例如 MacOS)上,数字以 spaces 为前缀。
因此,此提示的作者可能在 Linux 变体或其他 GNU 平台上对其进行了测试,我假设您使用的是 运行 MacOS 或其他 BSD。为了保持一致,您需要确保删除这样的 space——或者切换到一种不依赖于 wc
的文件列表机制,例如 BashFAQ #4 中给出的机制。
一个备选方案如下:
$(shopt -s nullglob; set -- *; echo "$#")