首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在bash中设置4空格制表符

如何在bash中设置4空格制表符
EN

Stack Overflow用户
提问于 2012-05-28 17:58:19
回答 6查看 38.1K关注 0票数 34

它在VIM中看起来像set tabstop=4,但我不知道如何在bash中设置它

例如:

echo -e "1234567890\t321\n1\t2\n123\t1"

当前输出:

1234567890      321
1       2
123     1

我想要这样的输出:

1234567890  321
1   2
123 1

它可以像cat somefilephp -r 'echo "\t123";'一样在任何地方显示

如何在bash中设置标签宽度?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-05-28 18:09:44

这不是您的shell (或php或cat)的属性。管理输出的是您的终端。

使用tabs命令更改行为:

$ tabs 4

$ echo -e "a\tb"      
a   b
$ tabs 12

$ echo -e "a\tb" 
a           b

(tabs是在POSIX中指定的,上面的输出是“伪造的”:它仍然是两个字母之间的制表符。)

票数 70
EN

Stack Overflow用户

发布于 2012-05-28 20:38:55

可以使用tabs工具设置定期或不规则间隔。无论你是自己输出,还是使用cat输出已经包含标签的文件,还是使用你不能控制的程序输出,它都可以工作。

但是,如果要控制输出,最好使用printf而不是echo,使用格式化字符串而不是制表符。

$ printf '%-12s%8.4f %-8s%6.2f\n' 'Some text' 23.456 'abc def' 11.22
Some text    23.4560 abc def  11.22
$ format='%*s%*.*f %*s%*.*f\n'
$ printf "$format" -12 'Some text' 8 4 23.456 -8 'abc def' 6 2 11.22
Some text    23.4560 abc def  11.22

除非您希望其他人能够使用tabs实用程序控制您的程序的输出。

票数 1
EN

Stack Overflow用户

发布于 2015-03-12 06:04:15

您可以使用setterm来设置它

setterm -regtabs 4

我把它放在我的.bash_profile里,但它与bash无关

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10782699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档