Answers:
根据bash手册页:
bash会在每个单词中扫描字符* 、?和[。如果出现这些字符之一,则将该单词视为一个模式,并替换为与该模式匹配的按字母顺序排序的文件名列表
并从信息节点获取ls
“ ls”程序列出了有关文件(任何类型,包括目录)的信息。像往常一样,选项和文件参数可以任意混合。
对于作为目录的非选项命令行参数,默认情况下,“ ls”以递归方式列出目录的内容,而不是以递归方式列出,并省略名称以“。”开头的文件。对于其他非选项参数,默认情况下,“ ls”仅列出文件名。如果未指定非选项参数,则“ ls”列出当前目录的内容。
因此,当yo Give时ls d*
,d *扩展为以d开头的所有文件/目录名称的排序列表。所以你的命令变成
ls dump
并且由于dump是目录名,因此您将获得目录“ dump”中所有文件的清单,但是当您给出时ls D*
,D *扩展为“ Desktop Documents Downloads Dropbox ”,因此该命令变为
ls Desktop Documents Downloads Dropbox
由于所有这些都是目录,因此您将获得单个目录中的文件列表。如果当前目录中有一个以D开头的文件,则该文件将单独列出。
ls p*
,它显示了一个文件,因为它存在,并且一个ls P*
显示了Pictures Public文件夹,因为没有以P开头的文件。当我创建一个名为poo的目录时,它显示在ls p*
ls d *和D *都列出了分别匹配d *和D *的文件和文件夹,其行为是相同的,您的测试中肯定有一个错误。
如果仅列出文件夹名称而不列出文件夹内容,则需要使用“ -d”:
ls -d D*
如上所述,-d
选择是可行的方法。新增中
alias ld='ls -d'
我的~/.bashrc
档案对我来说效果很好。
ld - The GNU linker
,这将阻止OP编译和链接程序。使用alias lsd='ls -d'
代替。在像foo
往常一样使用别名之前,type foo
先查看是否foo
已经用作别名,并确定别名的便利性是否会覆盖对先前别名的访问权限foo