我最近看到一个技巧,可以让你“一般”输出终端控制代码(基于当前的 termcap/terminfo 设置),但找不到它。如果我没记错的话它可以让你做类似的事情
echo "$(some_command home)"
得到回显的将是转义序列的实际字节,这将导致$TERM
光标移回原处。那条命令是什么?
答案1
我看到的命令是tput
.人们可以使用它——就像我的问题一样:
echo -n "$(tput home)"
当然,这个特定的例子是多余的。将 stdout 运行到一个将写入其自己的 stdout 的tput
参数中是浪费的。echo
如果您需要生成一串,这可能更有意义echo -n "$(tput thing1)some text$(tput thing2)other text
- 但正如 @icarus 在下面的评论中指出的那样,这会丢失任何定时知道的窍门tput
。
因此,只要可行,最好直接调用该实用程序:
tput clear
tput blink
echo "DANGER WILL ROBINSON"
tput bel
sleep 5
reset # NOTE: this might be symlinked to tput also!
它不是核心/内置工具,而是作为 ncurses 的一部分提供,因此应该得到广泛使用。我找到了一个很好的介绍/概述这提供了一些背景知识,也显示了相关命令。和这个要点包含可以输出的所有命名“功能”的方便列表。