问题描述
用于激活分页的ls
命令的等效选项是什么,如在DOS中dir /p
那样?
最佳解决思路
ls
本身没有直接的等价物,但是有less
实用程序,它将任何命令的输出格式化为单独的页面,可以按行或页面滚动:ls -C | less
-C
触发列显示的位置。使用lah
作为参数(ls -lah
)以逐行显示所有正在显示的文件(包括隐藏的文件)和人类可读的文件大小。
-
要使颜色正确显示,您需要将
--color=always
参数添加到ls
,将-R
参数添加到less *:ls -C --color=always | less -R
这将显示’ls -ah –color = always |少-R’
与more
相比,less
可以让您滚动输出。对于非常大的列表,它也快一点。
管道的工作方式如下:
每个程序都有输入和输出,管道将一个程序(ls)的输出重定向到另一个程序的输入(less)。而不是简单地期望它然后格式化的输入。
-
更多old-school dos等效物将是
pg
:ls | pg
你也可以
-
使用
ls | head
或ls | tail
仅显示输出的第一个或最后一个部分 -
使用
watch "ls"
保持显示屏打开,每隔几秒更新一次以观察更改 -
如果你坐在离屏幕很远的地方,请使用
banner $(ls)
。 (;
-
如果您发现所有这些都太长而无法记住,您可以为它设置alias:
使用文本编辑器打开
~/.bash_aliases
并添加如下内容:alias lsp="ls -ah --color=always | less -R"
(这是每次启动新虚拟终端时运行的脚本,您应该在那里设置所有永久别名)
现在您只需键入
lsp
或您选择的任何名称即可。如果您希望能够将更多参数传递给别名,我们需要定义一个函数:
lsp(){ ls -ah --color=always "$@" | less -R; }
一个函数,主要看起来像这样:
name(){ commands; };
可以接受参数,$1
,$2
,$3
等。$@
表示“每个参数,如果有的话”。您现在可以运行
lsp *.py
,lsp -C
等内容。我们将参数插入到传递给ls的位置。如果它是重要的命令,我们也可以插入$ * for less。您可以在man ls
上看到所有ls的参数(值得一读)。
*:原因是,无论何时管道,它都会检测到一个终端(实际上是另一个程序)无法显示颜色。 “–color=always”强制ls忽略这一点。 -R开关可以更好地重新绘制屏幕escaping the colours。
次佳解决思路
我不确定是否有一些ls命令用于分页。但是,您可以使用管道和less
,如下所示:
ls | less
并使用q退出。