我想查看文件的最后几行,但我希望列对齐。基本上,我想禁用自动换行。
这很简单:
tail $FILE | cut -c -80
但我正在尝试将我的脚本推广到其他用户,并且我想剪切到实际的终端宽度,我可以通过以下方式获得:
stty size | cut -d" " -f2
所以我想我可以
tail $FILE | cut -c -`stty size | cut -d" " -f2`
但它不起作用:
stty: standard input: Invalid argument
cut: invalid range with no endpoint: -
Try `cut --help' for more information.
(与“new”$() 扩展的结果相同。)
现在,如果我回应它,它看起来不错:
echo cut -c -`stty size | cut -d" " -f2`
cut -c -103
我是不是漏了一个转义符?还是说这根本就不可能?
谢谢。
答案1
它不起作用的原因是stty
它在管道内执行。因此它“看不到”底层终端。在您的脚本中,您可以将终端宽度存储在变量中,例如
size=`stty size | cut -d" " -f2`
然后使用它:
tail $FILE | cut -c -$size
答案2
Bash 在变量中维护屏幕宽度COLUMNS
,您可以在管道中使用该变量:
tail $FILE | cut -c -$COLUMNS