当您使用 less 执行 shift-f 时,您可以实时看到文件更新,并且会收到“等待数据...(中断中止)”消息。
更新工作正常,但中断是什么?似乎什么都不起作用(Ctrl-C、Esc、Ctrl-I 等)。我总是不得不关闭终端,这很麻烦。
答案1
Ctrl+C对我来说很管用。当我在 less 中使用 F 命令时,它显示“(中断以中止)”。它所指的“中断”是与终端中断绑定的任何键。该命令stty -a
显示相关的终端设置:
速度 38400 波特;行 50;列 80;行 = 0;内联 = ^C; 退出 = ^; 擦除 = ^H; 杀死 = ^U; eof = ^D; eol = ; eol2 = ; swtch = ; 开始 = ^Q; 停止 = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; 分钟 = 1; 时间 = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
这intr = ^C
表明中断是由Ctrl+产生的C。
如果你这么做stty -a
会显示什么?
答案2
Ctrl + C
对我来说不起作用。不过,我能够使用 停止该过程q
。
答案3
正如 @RandyOrrison 提到的,^C
(控制+C)是适当的打断字符。但是,less
响应此信号的方式将根据执行时提供的选项而有所不同。
通常情况下,中断字符会导致less
停止正在执行的操作并返回到它是命令提示符(即不是终端/tty提示符)。
相反,如果你想less
发出退出信号并返回终端/tty 提示符,则应使用-K
或--quit-on-intr
选项。这将导致在输入less
中断字符(通常是)时立即退出(状态为 2) 。^C
-K , --quit-on-intr
当输入中断字符(通常是 ^C)时,会导致 less 立即退出(状态为 2)。通常,中断字符会导致 less 停止其正在执行的操作并返回到其命令提示符。请注意,使用此选项会导致无法从“F”命令返回到命令提示符。
less -K [filename]...
less --quit-on-intr [filename]...
答案4
唯一正确的答案是 Ctrl + X。
否则,在管道操作中像find /var/log -name "*.log" | xargs less
Ctrl+C 这样的操作将终止 less 并退出以提示。