2012-05-28 1 views
18

4 공간 탭을 설정합니다,하지만 난 예를 들어 bash는어떻게 VIM에서 <code>set tabstop=4</code> 같이 떠들썩한 파티

에서 설정하는 방법을 모른다 :

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

전류 출력 :

1234567890  321 
1  2 
123  1 

나는 출력과 같이합니다 :

1234567890 321 
1 2 
123 1 

그것은 단지 내가 bash는 탭의 폭을 설정하는 방법 cat somefile 또는 php -r 'echo "\t123";'

처럼 어디서나에 표시 할 수 있습니까?

+0

보인다). 대신 공백을 쓸 수도 있지만 다음과 같은 것을 알고있을 것입니다. p – keyser

답변

38

셸 (또는 PHP 또는 고양이)의 속성이 아닙니다. 출력을 관리하는 터미널입니다.

$ tabs 4 

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

$ echo -e "a\tb" 
a   b 

:

이 동작을 변경하려면 tabs 명령을 사용하여 (tabs은 POSIX에서 지정, 출력은 위의 "가짜": 그것은 여전히 ​​두 글자 사이에 탭 문자입니다.)

+3

참고 : = tabs =는 POSIX가 아닌 ** Unix ** (XSI 옵션이있는 POSIX)에 지정됩니다. POSIX를 따르지만 유닉스가 아닌 시스템은 = tabs = 명령을 구현할 필요가 없습니다. –

+0

NB :'ash' 쉘에서'tabs'가 작동하지 않을 수도 있습니다. –

+2

추가 : 호출기 "less"는 영향을받지 않으므로 "less -x4"를 사용하십시오. "git diff"를 사용하려면 "git config --global core.pager 'less -x4'" – Mikl

1

tabs 유틸리티를 사용하여 규칙적인 간격이나 불규칙한 간격을 설정할 수 있습니다. cat을 사용하여 이미 탭이 포함 된 파일을 출력하거나 제어하지 않는 프로그램의 출력을 사용하여 출력을 수행하는지 여부에 관계없이 작동합니다.

출력을 제어하는 ​​경우 echo 대신 printf을 사용하고 탭 대신 형식 문자열을 사용하는 것이 좋습니다.

$ 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 유틸리티를 사용하여 프로그램의 출력을 제어 할 수 있도록하려면 않는.

0

당신은 설정 setterm을 사용할 수 있습니다이

setterm -regtabs 4 

내 .bash_profile에에 넣어하지만 특별히 관련 비난하지

당신이 그것을 (변경 수없는 경우 즉 내가 찾은 답이야로