当我尝试用鼠标滚动 less 的输出时,我不喜欢 xterm 的行为(它滚动命令历史记录而不是滚动 less)。所以我得到了 Sakura,它的行为正如我想要的那样。然而,“-e”选项似乎效果不佳。
当我打字时
xterm -e "ls /usr/bin | less"
我得到一个新的 xterm,其中命令ls /usr/bin | less
已被执行。然而,
sakura -e "ls /usr/bin | less"
似乎忽略了我的请求,只是启动了一个新的樱花终端。
事实上,我已经尝试过其他终端模拟器和选项,但没有成功......
sakura -x "ls /usr/bin | less"
xfce4-terminal -e "ls /usr/bin | less"
roxterm -e "ls /usr/bin | less"
lxterminal -e "ls /usr/bin | less"
lilyterm -e "ls /usr/bin | less"
他们中的一些人忽略了我的请求,有时他们声称他们说“无法执行子进程......(没有这样的文件或目录)”
我目前在 Arch 上。我遇到过http://osdir.com/ml/general/2013-07/msg06468.html,这似乎表明 Sakura 在某一时刻的表现正如我所希望的那样(我目前拥有 3.1.0 版本)。
任何帮助让sakura
或其他一些“好的”终端模拟器按预期运行将非常感激(也就是说,让命令 $TERM -e "ls /usr/bin | less" 打开一个终端模拟器并执行给定的命令并让 less 的输出可以用鼠标滚轮滚动)。
答案1
sakura
似乎被破坏了,但对于其他人来说,有两种主要类型:那些在后面接受一个参数-e
并将其视为 shell 命令行的类型,以及那些接受参数列表并且第一个用于派生要执行的命令的类型(不涉及 shell,因此无法使用管道等 shell 功能。
xterm
,作为一种特殊情况,如果有多个参数或一个参数解析(通过在 中查找$PATH
)为现有可执行文件,则属于第二类,否则属于第二类。
所以:
xterm -e 'ls | less'
/usr/bin/ls | less
例如,将运行可执行文件(是的,带有空格和管道字符的文件名) ls | less
,如果存在,则使用第一个参数,否则(更有可能)/bin/sh
使用,,,,sh
否则。-c
ls | less
在大多数其他终端中(也建议这样xterm
做以消除歧义),您需要sh
明确调用:
lxterminal -e sh -c 'ls | less'
sakura
的-e
似乎不起作用。这-x
在某种程度上是有效的。你可以做:
sakura -x 'sh -c "ls | less"'
它似乎对传递给 的单个参数进行类似 shell 的解析-x
,将其拆分为参数列表,然后执行它。
关于滚动进入less
.它可以在sakura
(和其他基于 VTE 的终端仿真器)中工作,因为在交替时screen
(就像在发出 后tput smcup
),向下和向上滚动事件发送与按Down和Up键时相同的转义序列。
您会注意到它不适用于ls | less -X
, wheresmcup
未发布。
xterm
支持将其作为一个选项,默认情况下不启用。您可以通过将XTerm.VT100.alternateScroll
资源设置为 来更改它true
,例如添加:
XTerm.VT100.alternateScroll: true
到您的~/.Xdefaults
(对于xterm
在该机器上启动的 s),或者在加载到您的 X 服务器中的资源文件中(对于xterm
在任何地方启动并连接到您的 X 服务器的 s),或者xterm
使用以下命令调用:
xterm -xrm 'XTerm.VT100.alternateScroll: true' -e sh -c 'ls | less'