34

VIMのように見えますが、 bashset tabstop=4で設定する方法がわかりません

例えば:

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でタブ幅を設定するにはどうすればよいですか?

4

6 に答える 6

72

これは、シェル (または php や cat) のプロパティではありません。出力を管理するのはあなたの端末です。

tabs動作を変更するには、次のコマンドを使用します。

$ tabs 4

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

$ echo -e "a\tb" 
a           b

(tabsは POSIX で指定されており、上記の出力は「偽物」です。2 つの文字の間にあるタブ文字のままです。)

于 2012-05-28T10:09:44.213 に答える
1

ユーティリティを使用して、定期的または不規則な間隔を設定でき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ユーティリティを使用してプログラムの出力を制御できるようにしたい場合を除きます。

于 2012-05-28T12:38:54.817 に答える
1

setterm を使用してこれを設定できます

setterm -regtabs 4

私はそれを .bash_profile に入れましたが、具体的には bash 関連ではありません

于 2015-03-11T22:04:14.643 に答える