如果 ls 列出了当前目录的内容,是否有类似的命令可以列出非当前目录的内容,而无需使用 cd?
答案1
只需ls
输入要列出的目录的路径,即可获得它。假设您在主目录中,但想要列出/etc
。只需运行ls /etc
,即可列出它。
答案2
ls
将会这样做。
语法为ls
:
ls flags file-or-directory-names
为了我所呼吁的file-or-directory-names
,您可以列出当前目录中的文件,以便仅列出某些文件。例如,ls -l foo bar
将仅列出有关foo
和的信息bar
(以长格式,因为我已给出标志-l
)。ls baz*go
将列出名称以开头baz
和结尾的所有文件go
(如果有)。
但当你给目录名称到ls
,它列出了那个目录而不是当前目录。
因此,要列出的内容/var/log
,只需运行:
ls /var/log
如果你给相对的目录的路径——即不以 -- 开头的路径/
,那么它将在当前目录中查找该目录(就像查找文件一样)。但它仍将列出内容目录,如您所愿。
附注:有时你可能会发现你不想列出内容目录,但只列出目录,就像列出文件一样。为此,您可以传递标志-d
。例如,这将以/var/log
长格式显示(而不是其内容,而是/var/log
它本身):
ls -ld /var/log
答案3
看到被接受的答案后,我仍然不满意。丹尼尔是怎么知道答案的?当然,我自己也读过手册页,但还是不知道怎么回事。
的手册页内容ls
如下:
描述:列出有关文件的信息(默认为当前目录)...
那里没什么用。然后我查看了 POSIX 程序员手册:
对于每个命名目录类型文件的操作数,ls 应写入目录中包含的文件的名称以及任何请求的相关信息。
这一行解释了可接受解决方案中命令的行为。FILE
的操作数ls
可以是目录,并将ls
列出该目录的内容。 这正是 OP 想要的。 但 Linux 上的实现可能与此处的规范不同。 所以我们走在正确的轨道上,但还没有到达那里。
coreutils
然后我搜索了 GNU软件包的手册,它ls
是其中的一部分。以下是我找到的内容:
对于非选项命令行参数(目录)而言,默认情况下 ls 会列出目录的内容...
这就解释了。