我正在修改我的控制台颜色和macos bash上的PS1 var。到目前为止,我已经按照我想要的方式做到了。但是,我想要的最后一件事是我输入的新行AFTER命令和结果之前。目前的剧本如下:
function parse_git_dirty {
[[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]] && echo " *"
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/ (\1$(parse_git_dirty)\)/"
}
export CLICOLOR=1
export LSCOLORS=exFxBxDxCxegedabagacex
export PS1="\n\[$(tput setaf 4)\]\u\[$(tput setaf 2)\] \h: \[$(tput setaf 0)\]\w\[$(tput setaf 4)\]\$(parse_git_branch)\[$(tput sgr0)\] \$ "
以下是它现在的样子
我希望它看起来像
user host pwd (branch) $ ls
--- newline which is missing and I don't know how to get it here ---
folder folder file whatever.something etc...
--- newline that is here because of the \n in PS1 ---
user host pwd (branch) $
行为的其他描述:
答案 0 :(得分:1)
您可以(ab)使用DEBUG
陷阱在每个命令执行之前打印空行。这可能不是您想要的,但它是bash
提供的最接近的东西。
$ trap 'echo' DEBUG
$ echo foo
foo
$ echo foo; echo bar
foo
bar
$
请注意,每个逻辑命令都会执行DEBUG陷阱,而不是每个命令行执行一次。
答案 1 :(得分:0)
我认为您所要做的就是在导出PS1声明的末尾加上\ n。
像:
export PS1="\n\[$(tput setaf 4)\]\u\[$(tput setaf 2)\] \h: \[$(tput setaf 0)\]\w\[$(tput setaf 4)\]\$(parse_git_branch)\[$(tput sgr0)\] \$\n"
但在这种情况下,你可能想要一个表明你身份的角色。所以你可以这样做:
export PS1="\n\[$(tput setaf 4)\]\u\[$(tput setaf 2)\] \h: \[$(tput setaf 0)\]\w\[$(tput setaf 4)\]\$(parse_git_branch)\[$(tput sgr0)\]\n\$ "
在你的$字符后加一个空格,让它看起来很漂亮。