我正在尝试通过 printf-ing 不同的内容以编程方式创建一个文件。 (IE printf %s\\n hostname >> file.txt
)
我想发送 Esc 代码来清除屏幕(这将是第一行)。
在 bash 中,我只使用printf $'\033[2J'$'\033[;H'
(\033
作为 的八位字节Esc
)并且它会清除屏幕。一切都按其应有的方式进行;作为文件中的第一行,当您cat
打开文件时,它会首先清除屏幕。
在 tcsh (FreeBSD root 的默认 shell)中,我似乎无法弄清楚如何“转义转义”并获得与 bash 转义代码等效的内容。
我一直在尝试(printf
和echo
)
- 回声%{\e[2J]}
- 回声\e
- 回显\e
- 回声%{\033[2J}
如果有人能指出我正确的方向,我将非常感激!
谢谢!
答案1
printf
单独扩展格式(第一个)参数中的参数,不需要那些ksh93
-style$'...'
引号。所以:
printf '\33[2J\33[H'
请注意,这printf
不是内置的tcsh
,因此您将printf
在文件系统上调用该命令。那么您也可以调用tput
或clear
命令,但tcsh
不需要这样做,因为它tcsh
内置了对 termcap/terminfo 的支持,所以您可以这样做:
echotc clear
这将查询 terminfo 或 termcap 数据库以获取要为当前终端发送的正确转义序列(根据$TERM
),这通常比使用硬编码更好。
如果你想使用内置的,你可以这样做tcsh
:echo
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'