Antworten:
So wie Sie ls "*.txt"
eine normale Shell nicht ausführen können, können Sie sie auch nicht in einer Subshell ausführen. Bei der Eingabe *.txt
von Anführungszeichen haben Sie ls
nach einer Literaldatei gesucht, die aufgerufen wurde, *.txt
wenn Sie dies stattdessen tun sollten:
$ echo $(ls *.txt) # => file.txt otherfile.txt
Ein besserer Weg, dies zu tun, ist es, überhaupt nicht zu verwenden ls
.
$ echo *.txt # => file.txt otherfile.txt
ls
.
ls -l "*.txt"
. Zumindest kann ich das. Ich mache es nicht oft, aber wenn ich es tue, sagt es mir normalerweise, dass es * .txt nicht finden konnte ...
bash
und ähnliche Shells wiezsh
) nicht mit einfachen Anführungszeichen identisch sind! Beispielsweise erfolgt die Parametererweiterung ($foo
) in doppelten Anführungszeichen, jedoch nicht in einfachen Anführungszeichen.