All*_*lan 1 shell tcsh escape-characters
我正在尝试通过 printf 对其进行不同的操作来以编程方式创建一个文件。(即printf %s\\n hostname >> file.txt
)
我想发送一个 Esc 代码来清除屏幕(它将是第一行)。
在 bash 中,我只使用printf $'\033[2J'$'\033[;H'
(\033
作为 的八位字节Esc
)并清除屏幕。一切正常;作为文件中的第一行,当您cat
打开文件时,它首先清除屏幕。
在 tcsh(FreeBSD root 的默认 shell)中,我似乎无法弄清楚如何“逃避转义”并获得等效的 bash 转义代码。
我一直在试验(printf
和echo
)
如果有人能指出我正确的方向,我将不胜感激!
谢谢!
printf
自行扩展格式(第一个)参数中的那些,不需要那些ksh93
样式的$'...'
引号。所以:
printf '\33[2J\33[H'
Run Code Online (Sandbox Code Playgroud)
请注意,这printf
不是内置的tcsh
,因此您将printf
在文件系统上调用该命令。然后您也可以调用tput
orclear
命令,但tcsh
由于tcsh
对 termcap/terminfo 的内置支持不需要,因此您可以执行以下操作:
echotc clear
Run Code Online (Sandbox Code Playgroud)
这将在 terminfo 或 termcap 数据库中查询要为当前终端发送的正确转义序列(根据$TERM
),这通常比使用硬编码更好。
如果你想使用tcsh
的echo
内置,你可以这样做:
set echo_style = both # meant to be the default in tcsh
echo -n '\033[2J\033[H'
Run Code Online (Sandbox Code Playgroud)
或者:
set echo_style = sysv # or both
echo '\033[2J\033[H\c'
Run Code Online (Sandbox Code Playgroud)