Risposte:
Allo stesso modo in cui non è possibile eseguire ls "*.txt"in una shell normale, non è possibile eseguirlo nemmeno in una subshell. Quando inserisci le *.txtvirgolette, hai fatto la lsricerca di un file letterale chiamato *.txtquando invece dovresti fare questo:
$ echo $(ls *.txt) # => file.txt otherfile.txt
Un modo migliore per farlo è di non utilizzare lsaffatto.
$ echo *.txt # => file.txt otherfile.txt
ls.
ls -l "*.txt". O almeno posso. Lo faccio non spesso, ma quando lo faccio, di solito mi dice che non è stato possibile trovare * .txt ...
bashe simili shellzsh) non sono le stesse delle virgolette singole! Ad esempio, l'espansione dei parametri ($foo) viene eseguita tra virgolette doppie, ma non tra virgolette singole.