我的bash提示符为:
\u@\H: \w$(__git_ps1 "[\[\e[0;32m\]%s\[\e[0m\]\[\e[0;33m\]$(parse_git_dirty)\[\e[0m\]]")\n\e[1m\t\e[0m $
所以第二行是显示当前时间。
但是,我发现它弄乱了历史-当使用箭头键向上移动时,命令端口似乎被“卡住”,并且不再更改。我回来的唯一方法是再次按 Enter 。如何解决?
答案 0 :(得分:1)
#!/bin/bash
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin'
#set -x
shopt -s lastpipe
exec 2>log.out
(ssh -T -i <path to key> -o HostKeyAlgorithms=+ssh-dss -o StrictHostKeyChecking=no <account@example.com> 'ls -r <path>' </dev/zero) > '/root/listing.txt'
第一行中的所有ANSI转义序列都正确地用\u@\H: \w$(__git_ps1 "[\[\e[0;32m\]%s\[\e[0m\]\[\e[0;33m\]$(parse_git_dirty)\[\e[0m\]]")\n\e[1m\t\e[0m $
# ^^^^^ ^^^^^
和\[
包围,它们告诉Bash在计算提示的可视长度时不要对那些字符进行计数。第二行的那些缺少这些定界符。
\]