Как напечатать имя файла в самом себе

Сегодня я буквально столкнулся с этой проблемой на нескольких хостах в своей инфраструктуре.

Решение состоит в том, чтобы сделать то, что говорит ошибка. Установите пакет libselinux-python. Или вы можете отключить selinux на целевом хосте (s ).

С сайта Ansible:

If you have SELinux enabled on remote nodes, you will also want to install libselinux-python on them before using any copy/file/template related functions in Ansible. You can of course still use the yum module in Ansible to install this package on remote systems that do not have it.

3
09.07.2020, 14:04
2 ответа

Хорошо, если я правильно понял, вы хотите префикс фиксированной строки ко всем числам, напечатанным shuf. Если это так, просто добавьте эту строку в начало строки формата printf:

.
$ printf "x%10s\n" $(shuf -i 50-100 -n 3 -r)
x        71
x        70
x        92

Измените %10sна %s, чтобы получить их вплотную друг к другу без пробелов. Точно так же вместо этого вы можете использовать переменную цикла:

$ for f in 1 2 3; do printf "$f%s\n" $(shuf -i 50-100 -n 2 -r); done
151
197
268
256
364
354

Добавьте >> "$f"для перенаправления на файлы.

Обратите внимание, что, поскольку здесь фиксированная часть является частью строки формата, любые знаки %и обратные косые черты будут интерпретироваться как printf.

5
18.03.2021, 23:20

Сохраните результат shufв массиве bash, затем используйте подстановку в расширении параметра, чтобы добавить перед ним$f:

mapfile -t shuf < <(shuf -i 50-100 -n 50)
printf '%10s \n' "${shuf[@]/#/"$f"}" >>"$f"

Для zsh используйте расширение параметра ^:

printf '%10s \n' "$f${(f)^"$(shuf -i 50-100 -n 50)"}" >> "$f"
6
18.03.2021, 23:20

Теги

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