$ cat $HOME/bin/olivetti
#!/bin/sh
# Define desired width of the text.
WIDTH=100
# Evaluate left indentation based on terminal width.
INDENT=$(( ( $(tput cols) - $WIDTH ) / 2 ))
# Make line of that amount of spaces.
INDENT_LINE=$( printf %${INDENT}s )
# Put it on the beginning of each line of the input file.
sed "s/^/${INDENT_LINE}/" -
man
工作方式如下:groff
将手册页源文件从 nroff 标记语言转换为可打印文本;groff
输出传递给寻呼机,寻呼机将其显示给用户。默认寻呼机是less
.groff
将页面格式化为要使用的宽度man
。默认情况下man
使用控制台的全宽,但我们可以使用MANWIDTH
环境变量覆盖它:我找不到指示
groff
缩进的方法,但幸运的是有一个less
称为输入预处理器的工具(man less
有关详细信息)。可以提供一个命令来传递less
输入。所以我写了一个脚本来缩进输入的每一行:less
$LESSOPEN
从环境变量中获取输入预处理器的命令:|-
是指示less
将预处理器用作管道:将标准输入重定向到它并从中读取标准输出。