Ответы:
Точно так же, как вы не можете работать ls "*.txt"в обычной оболочке, вы не можете запустить и в подоболочке. Когда вы помещаете *.txtв кавычки, вы выполняете lsпоиск литерального файла, который называется, *.txtкогда вместо этого вы должны сделать это:
$ echo $(ls *.txt) # => file.txt otherfile.txt
Лучший способ сделать это - вообще не использовать ls.
$ echo *.txt # => file.txt otherfile.txt
ls.
ls -l "*.txt". Или, по крайней мере, я могу. Я делаю это не часто, но когда я это делаю, мне обычно говорят, что он не может найти * .txt ...
bashаналогичных оболочкахzsh) не совпадают с одинарными! Например, расширение параметра ($foo) выполняется внутри двойных кавычек, но не одинарных.