Аргументы печати printf без определенного порядка

Все Ваши ассоциации файлов хранятся в $HOME/.local/share/applications/mimeapps.list. Некоторые из них не находятся в Вашем персональном mimeapps.list файл. Существует файл в масштабе всей системы со всеми ассоциациями по умолчанию в /usr/share/applications/mimeapps.list и/или в /usr/share/applications/defaults.list.

Поскольку больше информации проверяет Specifications/mime-actions-spec

Править:
В Fedora 14 у меня есть эти файлы настроек:

/var/lib/gdm/.local/share/applications/mimeapps.list
/usr/share/applications/defaults.list
/usr/local/share/applications/defaults.list
$HOME/.local/share/applications/defaults.list
$HOME/.local/share/applications/mimeapps.list

3
08.07.2013, 04:47
2 ответа

Нет встроенного способа сделать это, что я смог найти. Можно всегда генерировать аргументы в цикле как это:

для цикла

$ printf '[ -d %s ] || mkdir %s; cd %s\n' `for run in {1..3}; do echo "$dir";done`

Небольшое различие:

$ printf '[ -d %s ] || mkdir %s; cd %s\n' $(for run in {1..3}; do echo "$dir";done)

Можно управлять количеством аргументов путем изменения этой части команды {1..3}.

seq и xargs

$ printf '[ -d %s ] || mkdir %s; cd %s\n' $(seq 1 3 | { xargs -i -- echo "$dir"; })

Это создаст seq чисел, 1 - 3, и это управляет сколько раз {xargs-i...} выполнится.

да

Благодаря комментарию @rici можно также использовать эту конструкцию, yes ... | head -n 3:

$ printf '[ -d %s ] || mkdir %s; cd %s\n' $(yes "$dir" | head -n 3)

Ссылки

1
27.01.2020, 21:28
  • 1
    более кратко: $(yes "blah" | head -n 3)'. But neither that nor your answer will work if вздор' содержит $IFS Жемчуг Альтернативы персонажи. –  rici 05.07.2013, 19:42
  • 2
    @rici - да я забыл охранять строки с кавычками, я зафиксировал это. Спасибо за yes ... | head ... создать. Я пробовал что-то seq ... | { xargs ... } то, которое подобно, но Ваш, более компактно. –  slm♦ 05.07.2013, 19:55

Printf в bash не имеет этой опции.

Но простое решение - использовать переменные:

$ a=a b=b c=c
$ printf '%s %s %s %s %s %s %s\n' "$a" "$c" "$a" "$c" "$b" "$c" "$a"
a c a c b c a

Или даже позиционные параметры:

$ set -- a b c
$ printf '%s %s %s %s %s %s %s\n' "$1" "$3" "$1" "$3" "$2" "$3" "$1"
a c a c b c a
1
27.01.2020, 21:28

Теги

Похожие вопросы