“ls *.py”和“ls *py”有什么区别?

Ant*_*ong 1 cygwin bash ls

这发生在 cygwin (CYGWIN_NT-5.1 MYPC 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin)

第一个命令,ls *.py什么都不显示

$ ls *.py
ls: cannot access *.py: No such file or directory
Run Code Online (Sandbox Code Playgroud)

第一个命令, ls *.py在同一位置运行,显示以下内容

$ ls *py
LICENSE.txt    _cpchecker.pyc   _cperror.pyc    _cpserver.py          _cptree.pyc         favicon.ico
__init__.py    _cpconfig.py     _cplogging.py   _cpserver.pyc         _cpwsgi.py          lib
__init__.pyc   _cpconfig.pyc    _cplogging.pyc  _cpthreadinglocal.py  _cpwsgi.pyc         process
_cpcgifs.py    _cpdispatch.py   _cpmodpy.py     _cptools.py           _cpwsgi_server.py   scaffold
_cpcgifs.pyc   _cpdispatch.pyc  _cprequest.py   _cptools.pyc          _cpwsgi_server.pyc  wsgiserver
_cpchecker.py  _cperror.py      _cprequest.pyc  _cptree.py            cherryd
Run Code Online (Sandbox Code Playgroud)

这些是子目录cherrypy中的文件

我没有ls以任何方式别名(运行/usr/bin/ls给出相同的结果)

那么问题来了,为什么会有差异呢?我不希望ls在没有-R标志的情况下递归运行

Joh*_*n T 6

这是因为ls使用文件夹名称运行将列出与您的参数匹配的文件夹的内容。

使用*作为通配符,结束在任何文件夹py会的内容列出,如cherrypy, crappy, bumpy等。

如果多个文件夹符合条件,它还会显示文件夹名称:

[~/ex]$touch 颠簸/1
[~/ex]$touch 马虎/2
[~/ex]$touch 樱桃皮/3 樱桃皮/4 樱桃皮/5
[~/ex]$ls *py
起疙瘩的:
1

樱桃:
3 4 5

马虎:
2
[~/ex]$

您当前的文件夹中没有直接在.py运行第一个命令时结束的任何文件夹或文件,因此输出。