回答:
ファイル記述子を使用すると、次のようなことができます。
現在の出力記述子を保存して、後で復元できるようにします
exec 3>&1
タブを挿入するプロセス置換に出力ストリームをリダイレクトします-例えば
exec 1> >(paste /dev/null -)
この時点から、標準出力に書き込むプロセスはすべて、paste
コマンドを介して「出力」され、開始時にタブを挿入します。
完了したら、保存したファイル記述子を復元して一時的な記述子を閉じることにより、通常の動作を再開できます
exec 1>&3 3>&-
less
、などの出力のスクロールを可能にするためのツールまたは類似のツールを使用するプログラムの出力を中断しますman
。
私はこの答えがあなたにとって最適ではないことを理解しています_
が、引数として取得したコマンドを実行し、すべての出力をタブでインデントする単純な名前(またはまだ使用されていない他のもの)でBash関数を作成できます。
例:
$ _ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial
この関数のコードはこれだけです:
_(){ sed "s/^/\t/" <($*); }
次のコマンド~/.bashrc
を実行して、ユーザーのすべてのBashセッションで使用できるように、ファイルに追加できます。
echo '_(){ sed "s/^/\t/" <($*); }' >> ~/.bashrc
すべてのユーザーが使用できるようにするには、/etc/bash.bashrc
代わりに追加します(管理者権限が必要です)。
echo '_(){ sed "s/^/\t/" <($*); }' | sudo tee -a /etc/bash.bashrc
または/usr/local/bin/_
、次の内容のようなスクリプトファイルを作成して、Bash関数を使用せずに、すべてのユーザーに対して同じことを実現することもできます。
#!/bin/bash
sed "s/^/\t/" <($*)
を使用してファイルを保存した後、スクリプトを実行可能にする必要があります
sudo chmod +x /usr/local/bin/_
ではecho
具体的には、あなたはそれがのようにバックスラッシュエスケープを解釈することができ\t
(タブストップをして)-e
スイッチ:
echo -e "\tHello World"
しかし、すべてのコマンドの出力をそのように変更することはほとんど不可能です(おそらく可能です)。読みやすさを目標とする場合は、次のようにコマンドプロンプトの外観(色付けなど)のカスタマイズを検討することをお勧めします。
環境変数の内容を変更することにより、プロンプトをカスタマイズできますPS1
。上記のスクリーンショットの作成元のブログ投稿で、その方法の小さな例を見ることができます。いわゆるANSIエスケープシーケンスの詳細な使用方法、より快適なツールの使用方法、新しいターミナルでデフォルトで変更を適用する方法などは、この回答の範囲外です。しかし、その手法を使用することに決めた場合、Webには多くのチュートリアルと詳細情報があります。
YOUR COMMAND | indent
必要がある場合や、その前に別のコマンドを入力する必要がある場合(アンダースコアだけでも可能)、_ YOUR COMMAND
大丈夫でしょうか?