-e 各種終端仿真器的選項
當我嘗試用滑鼠滾動 less 的輸出時,我不喜歡 xterm 的行為(它滾動命令歷史記錄而不是滾動 less)。所以我得到了 Sakura,它按照我想要的方式執行。但是,“-e”選項似乎效果不佳。
當我輸入
xterm -e "ls /usr/bin | less"
我得到了一個新的 xterm,該命令
ls /usr/bin | less
已在其中執行。然而,sakura -e "ls /usr/bin | less"
似乎忽略了我的請求,只是啟動了一個新的 Sakura 終端。
事實上,我已經嘗試過其他終端仿真器和選項,但沒有成功……
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 可以用滑鼠滾輪滾動)。
sakura
似乎被破壞了,但對其他人來說,主要有兩種類型:一種是在後面接受一個參數-e
並將其視為 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
s 在任何地方啟動並連接到您的 X 伺服器),或呼叫xterm
:xterm -xrm 'XTerm.VT100.alternateScroll: true' -e sh -c 'ls | less'