我想确定sh / bash脚本的窗口中的列数。我现在正在使用tput cols
,但是我发现在某些平台上(Synology)tput
库不可用。
我知道这里有一个C库,但是二进制文件不是一个选择。
Python3是一个选项,但是我没有在帮助文件中找到任何东西...
tput cols
的替代方案,如果可能的话...
答案 0 :(得分:3)
Python 3支持shutil.get_terminal_size()
,如果尚未从导出COLUMNS
和LINES
的shell中调用Python,Python 3支持os.get_terminal_size()
(就像bash一样,当并以互动模式运行并附加了TTY)。
如果您想通过shell获取此信息,则 some shell(包括bash)将以交互方式公开它。以下(虽然缺乏适当的错误处理)对此进行了说明:
#!/usr/bin/env python3
import subprocess, sys
p = subprocess.Popen(['bash', '-i'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=sys.stderr)
out = p.communicate(b'''printf '%s\n' "$COLUMNS" "$LINES"''')[0]
cols, lines = out.split(b'\n')[:2]
print("Cols: {}; lines: {}".format(int(cols), int(lines)))