タイトルの種類はそれをすべて言う:私はのようなものの出力のものをきちんと色付きの列を取得したいls -al
のように、発言権を、10basetomの答えにこの質問。
タイトルの種類はそれをすべて言う:私はのようなものの出力のものをきちんと色付きの列を取得したいls -al
のように、発言権を、10basetomの答えにこの質問。
回答:
これはで実行できawk
ます。残念ながら、の形式ls -l
は指定されていないため、すべてのシステムで機能するソリューションを考え出すことは不可能であり、一部のシステムでは、どの列にどの色を使用するかを調整する必要があります。
まず、で使用されている元のスペースを保持したいと思いますls -l
。そうしないと、列の配置が正しくなくなります。このSO回答のFPAT
おかげで、オプションでこれを行うことができます:
ls -la | awk '
BEGIN {
FPAT = "([[:space:]]*[^[:space:]]+)";
OFS = "";
}
awk
(各位置PARAM、 $1
、$2
など)一つのフィールド、現在の行のすなわち、1つのカラムを指します。FPAT
上記のオプションで行ったことは、各フィールドを再定義して先行するすべてのスペースを含めることです。そのため、元print
に戻すと、スペースが保持され、列が同じ位置に留まります。
これで、各フィールドを編集してカラーコードを挿入し、編集した出力を印刷できます。
{
$2 = "\033[31m" $2 "\033[0m";
$3 = "\033[36m" $3 "\033[0m";
$4 = "\033[36m" $4 "\033[0m";
$5 = "\033[31m" $5 "\033[0m";
$6 = "\033[36m" $6 "\033[0m";
$7 = "\033[36m" $7 "\033[0m";
$8 = "\033[31m" $8 "\033[0m";
print
}
'
各列は、デフォルト(にリセットバックされることに注意してください0
間[
およびm
その後)。色が複数の列にまたがるようにしたい場合は、そのコードを省略できます。個人的には、各列を個別に指定することを好みます。
で再利用可能なコマンドを定義できます.bashrc
。例えば:
lsc() {
ls -la | awk '
BEGIN {
FPAT = "([[:space:]]*[^[:space:]]+)";
OFS = "";
}
{
$2 = "\033[31m" $2 "\033[0m";
$3 = "\033[36m" $3 "\033[0m";
$4 = "\033[36m" $4 "\033[0m";
$5 = "\033[31m" $5 "\033[0m";
$6 = "\033[36m" $6 "\033[0m";
$7 = "\033[36m" $7 "\033[0m";
$8 = "\033[31m" $8 "\033[0m";
print
}
'
}
この関数定義を実行するには、bash
セッションの再起動(またはrun source ~/.bashrc
)が必要になる場合があります。
ここから、を呼び出すだけでlsc
、必要な出力が得られます。
--color=always
。ファイル名の列に異なる色を適用しない限り($9
この例では)、awk
それらを通過させる必要があります。
これにより、2列目ls -alF
が赤、3〜8列目が青、9 列目が黒で印刷されます。
ls -alF | awk -v black=$(tput setaf 0) -v red=$(tput setaf 1) -v blue=$(tput setaf 4) '{$2=red $2; $3= blue $3; $9=black $9} 1'
これは単なる例です。これは、必要に応じてカスタマイズできます。
複数行にまたがるコードを好む人のために:
ls -alF | awk -v black=$(tput setaf 0) \
-v red=$(tput setaf 1) \
-v blue=$(tput setaf 4) \
'{
$2=red $2
$3= blue $3
$9=black $9
}
1'
tput
端末用のさまざまな制御コードを生成するユーティリティです。例えば、 tput setaf n
へのフォアグラウンドカラーを設定するn
場合n
、0から7の範囲であり得ます
0 – Black
1 – Red
2 – Green
3 – Yellow
4 – Blue
5 – Magenta
6 – Cyan
7 – White
tput
とそのカラー機能について詳しくは、こちらをご覧ください。
AWKコード定義変数black
、red
およびblue
そのそれぞれ、黒、赤、青用の端子コードを含みます。これらのコードは、色を付けたい列の先頭に配置されます。
1つのトリックは、カラーコードが自動的にリセットされないことです。したがって、ある行で最後に指定した色が何であれ、別のcolorコマンドが指定されていない限り、次の行のデフォルトの色になります。
awk
!列の配置を維持するためにパターンも含めることをお勧めします:)
FPAT
は間隔を正しく保つためのあなたのトリックが好きです。