Подтвердить что ты не робот

Как установить 4 пробела в bash

В 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 somefile или php -r 'echo "\t123";'

Как установить ширину табуляции в bash?

4b9b3361

Ответ 1

Это не свойство вашей оболочки (или php или cat). Это ваш терминал, который управляет выходом.

Используйте команду tabs, чтобы изменить поведение:

$ tabs 4

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

$ echo -e "a\tb" 
a           b

(tabs указан в POSIX, а вывод выше "faked": он все еще является символом табуляции между двумя буквами.)

Ответ 2

Вы можете установить регулярные или нерегулярные интервалы с помощью утилиты 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.

Ответ 3

Вы можете использовать setterm для установки этого

setterm -regtabs 4

Я поместил его в свой .bash_profile, но не связанный с ним bash