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 *.txtvon Anführungszeichen haben Sie lsnach einer Literaldatei gesucht, die aufgerufen wurde, *.txtwenn 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 ...
bashund ä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.