在控制台中运行ansible-playbook
时,可以调整控制台窗口的大小以限制控制台输出的行长度。 ansible使用fcntl.ioctl
获取TIOCGWINSZ
,当它找到tty os.isatty(0)
时,例如:(从/ansible/utils/display.py复制)
def _set_column_width(self):
if os.isatty(0):
tty_size = unpack('HHHH',
fcntl.ioctl(0, TIOCGWINSZ, pack('HHHH', 0, 0, 0, 0)))[1]
else:
tty_size = 0
self.columns = max(79, tty_size - 1)
像man
这样的工具提供了一个环境变量MANWIDTH
来提供此功能,而无需调整控制台窗口的大小。
如何在不调整控制台窗口大小的情况下调整控制台输出的大小?
答案 0 :(得分:0)
检查ansilbes os.isatty(0)
检查stdin是否打开,所以解决方案只是重定向stdin,在调用命令时,例如,我做了:
ansible-playbook -v -i dev --check --diff playbook.yml 0</dev/null
注意:这不会限制模块的输出,但我认为这是另一个故事。
编辑:在函数_set_column_width
中可以看到,当没有tty(stdin关闭)时,输出默认为79 char行长度。