たとえば、llコマンドを実行したいとします。
私の出力は次のとおりです
josh@zeitgeist ~ ll
total 41148
drwxr-xr-x 42 josh josh 4096 Aug 4 22:52 ./
drwxr-xr-x 4 root root 4096 Jul 9 21:18 ../
-rw-rw-r-- 1 josh josh 3523718 Jul 11 00:17 2017-07-11-001710_3840x2160_scrot.png
しかし、私は次のように見えたいです。
josh@zeitgeist ~ ll
total 41148
drwxr-xr-x 42 josh josh 4096 Aug 4 22:52 ./
drwxr-xr-x 4 root root 4096 Jul 9 21:18 ../
-rw-rw-r-- 1 josh josh 3523718 Jul 11 00:17 2017-07-11- 001710_3840x2160_scrot.png
PS1 = 'XXX'を使用してプロンプトを変更する方法を既に知っています。表示された出力の各行を変更する方法はありますか?各コマンドについて、特に端末で(出力を変更してファイルに入れないで)?
このようにして、端末の左側に文字のインデント行ができるようにしたいと思います。私は現在、空想科学スタイルのデスクトップを作成していますが、私がやっていることの1つは、ターミナルの背景画像を使ってタイトルや境界線のないurxvtターミナルウィンドウの周りにユニークで不規則なボーダーを作成することです。唯一の問題は、出力がウィンドウの左端に直接収まり、表示したい背景部分を覆うため、すべての出力の先頭にスペースを追加する方法がわからないことです。 URxvt InternalBorderとexternalBorderを試してみましたが、ターミナルの下部と右端の背景画像を隠していました。
答え1
これはどうですか。始める新しい bash
にパイプ処理されるプロセスawk
。パイプで接続された各行は、$ 0(入力行)の前にいくつかのスペースを印刷します。
$ bash | awk '{print " " $0}'
$ id
uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
$ uname -a
Linux ip-172-31-37-61 4.9.38-16.33.amzn1.x86_64 #1 SMP Thu Jul 20 01:31:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$