我需要在我的 Ubuntu (Lucid) 笔记本电脑上通过 ssh 在 Solaris 服务器上工作。我分别使用 bindkey 和 ~/.inputrc 在 csh 和 bash 中使用了 Home/End Insert/Delete Page Up/Down。但我不知道如何让他们少工作。我怎样才能找出问题所在,并解决它?
我经常这样做
$ man someprogram
Run Code Online (Sandbox Code Playgroud)
检查某些程序的手册。通常我也想在那里搜索一些东西,我只是点击/并写下我想搜索的东西。
不幸的是,无论匹配是什么,它都会被带到屏幕的顶行,因此大多数时候我需要手动向上滚动几次才能实际查看该匹配行的一些上下文。
我怎样才能设置less
它在顶线和匹配线之间留下一些偏移线?
在 Debian 系统上,您可以键入pager
以使用任何默认/可用的寻呼程序。默认情况下,less
使用,如果不可用,较少的more
人来完成这项工作。这样的东西在其他 Unix 和 Linux 系统中可用吗?
git
它的许多命令都有一个非常好的功能:默认情况下,交互式终端上的输出传递给寻呼机,这样它只会在有超过一屏输出的情况下保持寻呼机打开,并保留输出在终端上,而不是在退出时清除它。有没有办法将其配置为 GNOME 终端中 Bash 的默认设置?也就是说,将每个命令的所有 TTY 输出(最好包括标准错误)发送到寻呼机。
这个想法是有时命令会意外地产生大量输出(特别是在语法或其他错误的情况下),并且由于终端的历史设置,其中一些甚至可能会丢失。最好有一半的机会通过在寻呼机中查看输出来了解实际发生的情况。
我想使用滚轮(xterm 鼠标转义码)来滚动手册页,就像我在 emacs 中使用xterm-mouse-mode
. less 似乎不支持它,而且没有重新编译它,我找不到添加它的方法。
我可以使用支持滚轮的其他寻呼机(或者我可以少做的方式)?如果可能的话,我宁愿不放弃粗体和下划线。
我的模拟器是 Mac OS X Yosemite 上的 iTerm2,如果有帮助的话。
我在一个嵌入式系统上(来自 Xilinx 的 Zynq。它使用 ARMv7、Cortex-A9),并运行 Linux。我需要确保一定的物理内存范围内没有访问过发,无论是意外内核空间或用户。我可以发出信号、数据中止或其他任何事情,但这种硬件尝试不能超过 MMU。
在裸机模式和 U-Boot 中,我可以直接访问 TLB 的位置,并且可以通过将 MMU 配置为在发生任何读或写访问时中止数据来限制硬件级别的内存访问。我想在 Linux 中这样做,即使是 mmap() 也会引发数据中止。
推理:
在 Zynq 中,2GB 的地址空间被分配给一个可能永远不会在硬件级别响应的范围。ARM 的 AXI/AMBA 协议说主机永远不能“放弃”访问地址的尝试,即使那里什么都没有。如果我取消引用一个没有硬件驻留的指针,整个芯片就会挂起。
我知道我可以“只是不给 sudo”或“只是编写好的驱动程序”,但这甚至在那个级别之前。我想在早期启动时将 MMU 的 TLB 设置为如果我的超级用户进行了一些错误的编码,则数据完全中止。我宁愿不 hack boot.S,而是直接修改 TLB,然后使用 API 来刷新它。
我想从程序中获取输出并以交互方式过滤要通过管道传输到下一个命令的行。
ls | interactive-filter | xargs rm
Run Code Online (Sandbox Code Playgroud)
例如,我有一个模式无法匹配以减少的文件列表。我想要一个命令interactive-filter
来分页文件列表的输出,我可以交互地指示要转发到下一个命令的行。在这种情况下,每行都将被删除。
考虑这样的脚本:
$ cat example.sh
#! /usr/bin/env bash
for i in {1..90}
do
printf '%s\n' "$i"
done
sleep 10
printf '91\n'
sleep 10
printf 'done\n'
Run Code Online (Sandbox Code Playgroud)
并假设输出通过管道传输到更少,如下所示:
$ bash example.sh | less
Run Code Online (Sandbox Code Playgroud)
如果我向下滚动到第 90 行,我可以再次向上滚动、搜索和使用提供的任何其他交互式命令less
。但是,一旦我尝试使用 eg j
or越过第 90 行Ctrl-N
,就会
less
停止响应交互式命令,直到有另一行输入可用为止。如果我尝试使用空格键滚动整页超过第 90 行,则
less
停止响应交互式命令,直到整页输入可用或收到 EOF。
如果我想查看以前的输出并且没有意识到我刚刚浏览了可用的行并且必须等待更多行出现,这可能是不可取的,这可能需要任意数量的时间。
如果我使用 Ctrl-C 发送 SIGINT,我可以立即再次获得交互性,但随后less
将停止侦听来自管道的更多输入。
该脚本只是一个易于重现的示例,但它可以被任何长时间运行的缓慢生成输出行的命令替换,例如查找损坏的符号链接:
$ find $HOME -xtype l | less
Run Code Online (Sandbox Code Playgroud)
或我的主目录中的世界可读权限:
$ find $HOME -perm 777 | less
Run Code Online (Sandbox Code Playgroud)
或任何其他将行发送到stdout
.
有什么方法可以让我less
停止等待更多输入并重新获得交互式命令,而无需等待从管道中生成所需的输入行?
我的收件箱中有很多短邮件,这很烦人,即使是通过寻呼机(较少)发送短消息,也需要按“q”才能查看下一条消息(例如)。
我阅读了有关寻呼机的手册页,但这些都不起作用:
PAGER= mailx
set pager=
unset pager
unset PAGER
Run Code Online (Sandbox Code Playgroud)
如何禁用寻呼机?我正在使用 SLES 15 SP3 的 mailx 12.5。
当我运行命令时:
man fork
Run Code Online (Sandbox Code Playgroud)
底部有一条高亮线,内容如下:
手册页 fork(2) line 52/99 (END)
但是当我导航到第 53 行和第 99 行时,这些只是空行。为什么Linux系统会有这些额外的线路?他们的主要目的是什么?