Вы не можете за один ls
вызов. Также обратите внимание, что ошибки выводятся в другом потоке, stderr, где буферизация работает иначе, чем в stdout.
Также обратите внимание, что -U
не является -стандартным (расширением GNU ), и что если вы хотите, чтобы ls
отображал список файлов, указанных в качестве аргумента, вам нужна опция -d
, в противном случае для файлов типа каталог , ls
вместо этого будет отображать их содержимое.
Кроме того, вы можете запустить ls
для каждого файла:
for file in a.txt test.sh badtest
ls -ld -- "$file"
done
Это решит все вышеперечисленные проблемы.