Если Вы устанавливаете yum-utils
, это даст Вам yum-debug-dump
который запишет те переменные и больше информации об отладке в файл. Нет никакой опции записать в stdout, он будет всегда писать в некоторый файл, который действительно не настолько полезен.
Это - очевидно, не отличное решение, таким образом, вот острота Python, которую можно скопировать и вставить, который распечатает те переменные к stdout.
python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Это работает над CentOS 5 и 6, но не 4. конфетка записана в Python, таким образом, вкусный модуль Python уже находится на Вашем сервере, никакая потребность установить что-либо exra.
Вот то, на что это похоже на CentOS 5:
[root@somebox]# python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
{'arch': 'ia32e',
'basearch': 'x86_64',
'releasever': '5',
'yum0': '200',
'yum5': 'foo'}
[root@somebox]#
Функция замены команды $()
(и его кузен обратная галочка), конкретно удаляет запаздывание новых строк. Это - зарегистрированное поведение, и необходимо всегда знать о нем при использовании конструкции.
Новые строки в текстовом теле не удалены оператором замены, но они могут также быть удалены при выполнении разделения слова на оболочке, поэтому как это складывается, зависит от того, использовали ли Вы кавычки или нет. Отметьте различие между этими двумя использованиями:
$ echo -n "$(echo -n 'a\nb')"
a
b
$ !! | xxd -p
610a62
$ echo -n $(echo -n 'a\nb')
a b
$ !! | xxd -p
612062
Во втором примере не был заключен в кавычки вывод, и новая строка интерпретировалась как разделенный на слово, заставляя его обнаружиться в выводе как пространство!
При использовании замены команды оболочка выполняет команды в подоболочке, возвращая их stdout. в этом процессе, потеря символов IFS их значение (если они не заключаются в кавычки), как рекомендовать простые слова разделения возвратов, таким образом, запаздывающие удалены. Например:
$ echo "$(echo -e '\n')" | wc
1 0 1
$ echo -e '\n' | wc
2 0 2
и более практически, pwd
будет работать, даже если Ваше имя каталога будет иметь промежуточную новую строку, но $(pwd)
не будет.
Обычное обходное решение должно добавить что-то в конце Вашей команды и разделить ее после этого.
echo "$(echo -e '\n')" | wc
, какие выводы 1 0 1
, по сравнению с 2 0 2
– Peter.O
31.07.2011, 13:58
$(pwd)
и "$(pwd)"
, см. ответ Caleb.
– Stéphane Gimenez
31.07.2011, 14:08