Qual é a diferença entre 'ls * .py “e“ ls * py ”?

1

Isso acontece no cygwin (CYGWIN_NT-5.1 MYPC 1.7.5 (0.225 / 5/3) 2010-04-12 19:07 i686 Cygwin)

Primeiro comando, ls *.py não mostra nada

$ ls *.py
ls: cannot access *.py: No such file or directory

O primeiro comando, ls *.py é executado no mesmo local, mostra o seguinte

$ 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

Estes são arquivos em um subdiretório cherrypy

Não alias ls de nenhuma forma (executar /usr/bin/ls fornece os mesmos resultados)

Então, a pergunta, por que a diferença? Eu não espero que ls seja executado recursivamente sem o -R flag

    
por Anthony Kong 15.10.2010 / 01:08

1 resposta

6

Isso ocorre porque a execução de ls com um nome de pasta listará o conteúdo da (s) pasta (s) correspondente (s) ao seu argumento.

Usando * como curinga, todas as pastas terminadas em py teriam seus conteúdos listados, como cherrypy, crappy, bumpy etc.

Se várias pastas corresponderem aos critérios, ele também mostrará os nomes das pastas:

[~/ex]$touch bumpy/1
[~/ex]$touch sloppy/2
[~/ex]$touch cherrypy/3 cherrypy/4 cherrypy/5
[~/ex]$ls *py
bumpy:
1

cherrypy:
3  4  5

sloppy:
2
[~/ex]$

Você não tinha pastas ou arquivos diretamente na sua pasta atual, que terminaram em .py quando você executou o primeiro comando, daí a saída.

    
por 15.10.2010 / 01:12

Tags