tcsh - 回显转义代码

tcsh - 回显转义代码

我正在尝试通过 printf-ing 不同的内容以编程方式创建一个文件。 (IE printf %s\\n hostname >> file.txt

我想发送 Esc 代码来清除屏幕(这将是第一行)。

在 bash 中,我只使用printf $'\033[2J'$'\033[;H'\033作为 的八位字节Esc)并且它会清除屏幕。一切都按其应有的方式进行;作为文件中的第一行,当您cat打开文件时,它会首先清除屏幕。

在 tcsh (FreeBSD root 的默认 shell)中,我似乎无法弄清楚如何“转义转义”并获得与 bash 转义代码等效的内容。

我一直在尝试(printfecho

  • 回声%{\e[2J]}
  • 回声\e
  • 回显\e
  • 回声%{\033[2J}

如果有人能指出我正确的方向,我将非常感激!

谢谢!

答案1

printf单独扩展格式(第一个)参数中的参数,不需要那些ksh93-style$'...'引号。所以:

printf '\33[2J\33[H'

请注意,这printf不是内置的tcsh,因此您将printf在文件系统上调用该命令。那么您也可以调用tputclear命令,但tcsh不需要这样做,因为它tcsh内置了对 termcap/terminfo 的支持,所以您可以这样做:

echotc clear

这将查询 terminfo 或 termcap 数据库以获取要为当前终端发送的正确转义序列(根据$TERM),这通常比使用硬编码更好。

如果你想使用内置的,你可以这样做tcshecho

set echo_style = both # meant to be the default in tcsh
echo -n '\033[2J\033[H'

或者:

set echo_style = sysv # or both
echo '\033[2J\033[H\c'

相关内容