linux 中 ls 命令的替代方法是什么?

kas*_*der 1 command-line ls bash command

如何在不使用 ls 命令的情况下列出当前目录或任何目录路径内容?我们可以使用 echo 命令来完成吗?

Sté*_*las 5

printf '%s\n' *
Run Code Online (Sandbox Code Playgroud)

因为 shell 命令将列出当前目录中的非隐藏文件,每行一个。如果没有非隐藏文件,它将*单独显示,除非在已修复该问题的那些 shell(csh、tcsh、fish、zsh、bash -O failglob)中。

echo *
Run Code Online (Sandbox Code Playgroud)

将列出由空格字符分隔的非隐藏文件,除非(取决于 shell/echo 实现)当第一个文件名开头-或文件名包含反斜杠字符时。

重要的是要注意,*在将其传递给命令之前,shell 将其扩展到文件列表中。您可以在此处使用任何命令,例如head -- *显示前几行(使用head接受多个文件的实现),stat -- *...

我想包含隐藏文件:

printf '%s\n' .* *
Run Code Online (Sandbox Code Playgroud)

(取决于外壳,也将包括...)。与zsh

printf '%s\n' *(D)
Run Code Online (Sandbox Code Playgroud)

ls可以列出目录内容的其他应用程序中(除了 shell globs 和),还有find

find . ! -name . -prune
Run Code Online (Sandbox Code Playgroud)

(包括隐藏文件,除了...)。

在 Linux 上,lsattr(列出 Linux 扩展文件属性):

lsattr
lsattr -a # to include hidden files like with ls
Run Code Online (Sandbox Code Playgroud)