在mc
(午夜指挥官)中,我可以定义用于查看文件的自定义命令,即:
shell/i/.jpg
Open=gpicview %f
View=file %f | less
该命令file %f
必须通过管道传输到寻呼机。我在这里使用less
作为例子。
less 的问题是,它在屏幕中间显示一行,并添加以下字符:
~
~
(END)
我只需要最简单、最愚蠢的寻呼机,它除了显示从管道重定向接收到的内容之外什么也不做。类似于cat
命令的东西,它不会向它显示的文件添加任何内容。
我可以用什么来代替less
?
或者我可以配置less
隐藏这些特殊字符吗?
更新:
less
好的,我已经通过使用选项--tilde
和解决了一些问题--clear-screen
。但是,less
仍然显示(END)
在页面底部。
我可以摆脱吗(END)
?如果没有配置选项,我如何在源代码中更改它(我可以重新编译 less 包)
less
我在 Debian 10 上使用less --version
。显示:
less 487 (GNU regular expressions)
答案1
mc
有自己的内部寻呼机/查看器,无需调用单独的寻呼机/查看器,您只需要:
type/^JPEG
View=%view file -- %p
(这里基于文件类型(正则表达式应用于 的输出file
)而不是文件名)
请参阅顶部的评论默认值mc.ext
用于文档。
JPEG 文件的默认查看器实际上定义为:
type/^JPEG
View=%view{ascii} /usr/lib/mc/ext.d/image.sh view jpeg
Include=image
[...]
include/image
Open=/usr/lib/mc/ext.d/image.sh open ALL_FORMATS
View=%view{ascii} /usr/lib/mc/ext.d/image.sh view ALL_FORMATS
话虽如此,less
有:
-~
或--tilde
通常,文件末尾之后的行显示为单个波形符 (~)。此选项导致文件末尾之后的行显示为空行。
提示字符串可以用 定义-Ps'prompt'
。要删除它,包括(END)
末尾的 ,您可以-Ps
单独通过,但您仍然会看到:
.对于-Ps$'\r'
(或者-Ps"$(printf '\r')"
对于不支持$'...'
ksh93 引号的 shell),这:
也是如此。
所以:
type/^JPEG
View=file -- %p | less -~ -Ps"$(printf '\r')"
如果您想要清除屏幕的内容,运行file
命令且其输出不受影响,然后等待某些按键退出,您可以这样做:
type/^JPEG
View=zsh -c 'echoti clear; echoti civis; file -- "$1"; read -sk; echoti cnorm; echoti clear' zsh %p
(这里还隐藏了光标作为echoti civis
奖励)。
您也可以切换回备用屏幕(通常由mc
)使用,而less
不是停留在主屏幕上并在进入和退出时清除它,-X
从而使主屏幕保持不变:
type/^JPEG
View=zsh -c 'echoti smcup; echoti home; echoti civis; file -- "$1"; read -sk; echoti cnorm; echoti rmcup' zsh %p
(这里不用费心清理它,因为mc
会处理它)。