Использованиеzsh
:
zsh -c 'program *.txt(.^on)'
(.^on)
— это zsh
модификатор для шаблона *.txt
, который позволяет ему соответствовать только обычным файлам (и.
)и упорядочивает(o
)результирующий список в обратном(^
)лексикографическом порядке.(n
).
Это запустит не -интерактивную zsh
оболочку, которая запустит program
с сгенерированным списком имен файлов в качестве аргументов командной строки. Команда правильно обработает перестановку списка аргументов, даже если они содержат пробелы, символы новой строки и т. д. в именах файлов.
Пример:
$ touch {a..d}.txt
$ echo *.txt
a.txt b.txt c.txt d.txt
$ zsh -c 'echo *.txt(.^on)'
d.txt c.txt b.txt a.txt
Не-zsh
решение:
set --
for fname in *.txt; do
set -- "$fname" "$@"
done
program "$@"
или, используя именованный массив, например,. bash
,
args=()
for fname in *.txt; do
args=( "$fname" "${args[@]}" )
done
program "${args[@]}"
В обоих этих фрагментах кодамассив строится из имен, соответствующих шаблону *.txt
. Каждое имя вставляется в массив впереди, поэтому в результате массив заканчивается последним именем.
В первом случае мы используем список позиционных параметров в качестве массива. Этот код должен работать в любойsh
-подобной оболочке.
Если вам просто нужно, чтобы первое имя было последним в списке аргументов вашей программы, и вы можете позволить другим именам быть в том порядке, в котором они раскрываются, то следующее сделает это (в любомsh
-вроде оболочка):
set -- *.txt
fname=$1
shift
program "$@" "$fname"
В качестве альтернативы, используяbash
-специальный синтаксис и именованный массив,
args=( *.txt )
program "${args[@]:1}" "${args[0]}"
"${args[@]:1}"
будет расширяться на все элементы массива args
(с отдельными кавычками ), начиная с элемента 1
и далее.
Повторное тестирование сecho
:
$ args=( *.txt )
$ echo "${args[@]:1}" "${args[0]}"
b.txt c.txt d.txt a.txt
Ваша проблема похожа наhttps://github.com/ValveSoftware/steam-for-linux/issues/6593-окно Steam портится при изменении размера в мозаичном оконном менеджере
Название немного вводит в заблуждение :Далее в отчете об ошибке говорится, что это происходит, если включено аппаратное ускорение Steam, даже если вы не используете оконный менеджер плитки.
Предполагается, что это будет исправлено в последней бета-версии Steam.
У меня такая же система, но она не связана с паром. Приходится отключать igpu в настройках биоса и все будет нормально работать. Intel также предлагает отключить igpu при установке Linux в эту систему, чтобы избежать проблем.