我只是切换到zsh,现在调整别名,其中打印了一些文本(彩色)和命令。
我一直在尝试使用 $ fg 数组var,但是有副作用,所有命令在执行之前都会打印出来。
如果我只是在终端中使用颜色代码测试回声,则会出现同样的情况:
echo $fg_bold[blue] "test"
]2;echo "test" test #the test is in the right color
为什么命令打印之前要做它应该做的事情? (我确切地说,只要打印出没有任何可靠的命令就不会发生这种情况) 我是否要为zsh设置一个特定选项,使用带有特殊参数的echo来获取它?
答案 0 :(得分:6)
首先执行命令(保持其输出某处),然后发出echo
。我能想到的最简单的方法是:
echo $fg[red] `ls`
编辑:好的,所以在echo
的实际输出之前你的麻烦是一些垃圾。你有一些有趣的配置会给你带来麻烦。
怎么做(检查配置除外):
zsh -f
启动一个shell(它将跳过任何配置),然后重新尝试echo
命令:autoload colors; colors; echo $fg_bold[red] foo
(这应该会显示问题出在您的配置中) )。precmd
函数,该函数在每个命令之前执行(以某种方式失败)。试试which precmd
。如果没有定义,请尝试echo $precmd_functions
(precmd_functions
是在每个命令之前执行的函数数组)。知道正在执行的代码是哪一个可以帮助您在配置中搜索它(我假设您刚刚从其他人处获取)。如果我不得不猜测,我会说你正在使用 oh-my-zsh 而不知道你打开了什么(这是一个无穷无尽的麻烦来源)。
答案 1 :(得分:3)
我不会复制您的问题,我认为这表明它是一个选项(我已设置),或者是zsh
版本问题:
$ echo $fg_bold[red] test
test
因为我无法复制它,我确信有一个选项可以阻止它发生。我不知道那个选项是什么(我正在使用经过大量修改的oh-my-zsh
,但仍然没有完成所有zsh
选项的功能。
我的建议:
您可以尝试使用print
:
$ print $fg_bold[red] test
test
print
内置版除echo
之外还有更多选项(请参阅man zshbuiltins
)。
您还应该:
zsh
版本。 setopt
)。 ~/.zshrc
(和other loaded files),了解正在运行的选项和功能(如果有)。 This question可能会建议检查您正在使用的TERM
,但是在您使用别名时,您只是看到这种行为(在输入后回显命令) ...?