ls别无选择,但关于unix和linux的好处之一是,漫长而笨拙的管道可以轻松地转换成shell脚本,函数或别名。它们可以像其他程序一样在管道中使用。
(注意:函数和别名存在一些范围问题。脚本可用于任何可以读取和执行它们的可执行文件。别名和函数仅在当前外壳中可用-尽管子外壳的.profile / .bashrc等可能会重新定义它们,从而使它们可用。此外,可以用任何一种语言编写脚本-包括bash / sh,awk,perl,python和其他语言-以最适合该工作或您最熟悉的一种为准)
例如
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
我添加了xargs,以便您可以使用所有常用ls选项,例如lsf -lrS
因为它使用find,所以将显示所有通常隐藏的点文件,并且所有文件名都将带有./前缀-这是您会注意到的唯一区别。
您可以使用排除点文件,! -iname '.*'但随后必须具有别名的两个版本-一个显示点文件,另一个不显示。
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
另外,如果lsf是脚本而不是别名,则可以解析选项(也许使用getopts或/ usr / bin / getopt或类似的名称),并排除点文件(除非-a存在)。
find命令是执行所需操作的最佳方法。对于一些可靠的其他选项,您应该研究特定于Shell的命令(这些命令不是可移植的)!