It look like set tabstop=4 in VIM, but I don't know how to set it in bash
for example:
echo -e "1234567890\t321\n1\t2\n123\t1"
current output:
1234567890 321
1 2
123 1
I want output like this:
1234567890 321
1 2
123 1
It can be shown in anywhere, just like cat somefile or php -r 'echo "\t123";'
How can I set tab width in bash?
That's not a property of your shell (or php or cat). It's your terminal that manages the output.
Use the tabs command to change the behavior:
$ tabs 4
$ echo -e "a\tb"
a b
$ tabs 12
$ echo -e "a\tb"
a b
(tabs is specified in POSIX, and output above is "faked": it's still a tab character between the two letters.)
You can use setterm to set this
setterm -regtabs 4
I put it in my .bash_profile but its not bash related specifically
You can set either regular or irregular intervals using the tabs utility. It will work whether you're doing your own output, using cat to output a file that already includes tabs or using the output of a program you don't control.
However, if you're controlling your output it's preferable to use printf instead of echo and format strings instead of tabs.
$ 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
Unless you want someone else to be able to control the output of your program using the tabs utility.
来源:https://stackoverflow.com/questions/10782699/how-to-set-4-space-tab-in-bash