如何为 ls 命令激活分页?

NES*_*NES 38 command-line ls

ls在 DOS 中激活分页的命令的等效选项dir /p是什么?

Ste*_*zzo 60

ls本身没有直接的等价物,但有一个less实用程序,它将任何命令的输出格式化为单独的页面,可按行或页面滚动:

ls -C | less

哪里-C触发列显示。使用lah作为参数(ls -lah)来得到一个一行显示INE有一个显示LL文件(包括隐藏的人),以及^ h乌曼可读的filesizes。

  • 要使颜色正确显示,您需要将--color=always参数添加到ls,并将-R参数添加到less*:

    ls -C --color=always | less -R

    替代文字
    这显示 'ls -ah --color=always | 少 -R'

与 相比moreless将让您滚动浏览输出。对于非常大的列表,它也快一点。

管道是这样工作的:

每个程序都有输入和输出,管道将一个程序 (ls) 的输出重定向到另一个程序 (less) 的输入。而不是简单地期望输入然后格式化。

你也可以

  • 使用ls | headls | tail仅显示输出的第一部分或最后一部分
  • 使用watch "ls"以保持显示屏打开,更新它每隔几秒钟看变化
  • 使用banner $(ls),如果你坐在真正远离屏幕。(;

  • 如果您发现所有这些太长而难以记住,您可以为其设置别名

    ~/.bash_aliases使用文本编辑器打开并添加如下内容:

    alias lsp="ls -ah --color=always | less -R"
    
    Run Code Online (Sandbox Code Playgroud)

    (这是每次启动新虚拟终端时运行的脚本,您应该在那里设置所有永久别名)

    现在您只需输入lsp,或您选择的任何名称。

    如果您希望能够向别名传递更多参数,我们需要定义一个函数

    lsp(){ ls -ah --color=always "$@" | less -R; }
    
    Run Code Online (Sandbox Code Playgroud)

    函数,主要看是这样的:name(){ commands; };可以接受的论点,$1$2$3等等。$@意思是“每一个论点,如果有的话”

    您现在可以运行诸如lsp *.py、等之类的东西lsp -C。我们在参数传递给 ls 的地方插入参数。如果它是重要的命令,我们也可以插入 $* for less。您可以在man ls(值得一读)处看到 ls 的所有参数。


*:这样做的原因是,无论何时您使用管道,它都会检测到无法显示颜色的终端(实际上是另一个程序)。"--color=always" 强制 ls 忽略这一点。-R 开关减少重新绘制屏幕,正确转义颜色

  • 你给的比预期的多:)感谢你的详细回答。PS你知道bash和fish之间是否存在差异以某种方式阻止这个别名参数传递方法在fish中工作?我得到了没有参数选项的别名在这里工作。 (2认同)