大多数情况下,我不会使用| lessshell中的每个命令.
只有当我实际运行命令时才使用Pipe to less,并发现它不适合页面.这花费了我两次运行相同的shell命令.
是否有一种方法可以使每次命令结果超过显示页面时,它会自动通过管道输送到更少?
Pau*_*ce. 13
尝试这样做最重要的问题是如何在运行需要tty的程序时关闭它.
我建议的是,对于经常使用的程序和实用程序,创建包装它们和管道的shell函数less -F.在某些情况下,您可以将该函数命名为与程序相同,并且它将优先,但可以被覆盖.
这是一个示例包装函数,需要测试,也许还需要一些额外的代码来处理边缘情况等.
#!/bin/bash
foo () {
if [[ -p /dev/stdout ]] # you don't want to pipe to less if you're piping to something else
then
command foo "$@" | less -F
else
command foo "$@"
fi
}
Run Code Online (Sandbox Code Playgroud)
如果您使用与示例中相同的名称,则可能会破坏期望不同行为的内容.要覆盖函数以直接在其前面运行底层程序command:
command foo
Run Code Online (Sandbox Code Playgroud)
将在foo不使用同名函数的情况下运行.
| 归档时间: |
|
| 查看次数: |
9730 次 |
| 最近记录: |