タブで区切られた2つの文字列を印刷しようとしています。私は試した:
echo -e 'foo\tbar'
printf '%s\t%s\n' foo bar
両方印刷:
foo bar
2つの間のスペースは実際には5つのスペースです(Puttyのマウス選択出力に基づいて)。
また、Ctrl + Vを使用してコマンドを入力している間にTabキーを押しても同じ結果が出ました。
出力を選択し、タブを使用して別の場所にコピーできるように強制的にタブに印刷する正しい方法は何ですか?
2番目の質問:Bashがタブをスペースに拡張するのはなぜですか?
修正する:明らかにこれはPuttyの問題です。 https://superuser.com/questions/656838/how-to-make-putty-display-tabs-within-a-file-instead-of-chang-them-to-spaces
ベストアンサー1
2つの間のスペースは実際には5マスです。
いいえ、そうではありません。echo
またはの出力にはありませんprintf
。
$ echo -e 'foo\tbar' | od -c
0000000 f o o \t b a r \n
0000010
出力を選択し、タブを使用して別の場所にコピーできるように強制的にタブに印刷する正しい方法は何ですか?
これは別の質問です。これはシェルとは関係ありませんが、出力のタブ文字を空白に変換する端末エミュレータに関連しています。多くの(すべてではありませんが)人々がそうします。
タブ付きの出力をファイルにリダイレクトし、そこからコピーしたり、unexpand
出力からスペースをタブに変換したりするのは簡単です。 (空白がタブで始まり、可能であればすべてタブに変換されるという事実もわかりませんが)、これはもちろん出力として実行する必要がある操作によって異なります。