Réponses:
De la même manière que vous ne pouvez pas l'exécuter ls "*.txt"dans un shell normal, vous ne pouvez pas non plus l'exécuter dans un sous-shell. Lorsque vous mettez des *.txtguillemets, vous faites une lsrecherche pour un fichier littéral appelé *.txtquand vous devriez plutôt faire ceci:
$ echo $(ls *.txt) # => file.txt otherfile.txt
Une meilleure façon de procéder consiste à ne pas utiliser lsdu tout.
$ echo *.txt # => file.txt otherfile.txt
ls.
ls -l "*.txt". Ou du moins je peux. Je ne le fais pas souvent, mais quand je le fais, il me dit généralement qu'il n'a pas pu trouver * .txt ...
bashet les shells similaires commezsh) ne sont pas les mêmes que les guillemets simples! Par exemple, l'expansion des paramètres ($foo) se fait entre guillemets doubles, mais pas entre guillemets simples.