Neden alt kabukta ls * .txt yapamıyorum?


13
~$ echo $(ls)  
arguments.txt cecho.sh Desktop Documents Downloads example.txt Music Pictures Public     
~$ echo $(ls "*.txt")  
ls: cannot access *.txt: No such file or directory  

2. alt kabuk komutu neden başarısız oluyor?

Yanıtlar:


27

Tırnak işaretlerini kaldırın *.txtve işe yarayacaktır. Tırnaklarla kabuk gerçek dosya adını arayacaktır *.txt. Araştırmak için / deney, isimde bir dosya oluşturmayı deneyin *.txtolarak touch '*.txt've komutu tekrarlayın.


6
Çift tırnak işaretlerinin (en azından bashbenzer kabuklarda olduğu gibi zsh) tek tırnak işaretleri ile aynı olmadığını unutmayın! Örneğin, parametre genişlemesi ( $foo) çift tırnak içinde yapılır, ancak tek tırnak içinde yapılmaz.
Blacklight Parlıyor

30

Çalıştırmak olamayacağını Aynı şekilde ls "*.txt"normal bir kabuk, ya bir kabuktaki bunu çalıştıramazsınız. *.txtTırnak işaretleri koyduğunuzda , bunun yerine ne zaman yapmanız gerektiği lsadlı bir gerçek dosya aradınız *.txt:

$ echo $(ls *.txt) # => file.txt otherfile.txt

Bunu yapmanın daha iyi bir yolu hiç kullanmamaktır ls.

$ echo *.txt # => file.txt otherfile.txt

7
Gereksizliği kaldırmak için +1 ls.
Blacklight Parlayan

3
Kusur arama: Sen edebilirsiniz çalıştırmak ls -l "*.txt". Ya da en azından yapabilirim. Sık sık yapmıyorum, ama yaptığımda genellikle * .txt bulamadığını söylüyor
Ingo

@lngo: OP'nin görevinde de var
Brian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.