lsで他のファイルの色を変更する方法[重複]

lsで他のファイルの色を変更する方法[重複]

そのため、ディレクトリ、通常のファイル、bashスクリプトなどのテキストの色を変更する方法があることを知っています。これに基づいてファイルの色を変更する方法はありますか_file extension_

例:

$ ls -l
foo.txt  [is red] 
foo.text  [is blue] 
foo.secret  [is green] 
foo.txt  [is red]

答え1

はい、LS_COLORS変数を使用してください(GNU仮定ls)。これを操作する最も簡単な方法は、以下を使用することですdircolors

dircolors --print-database > dircolors.txt

現在の設定をにダンプし、dircolors.txt設定を追加して編集できます。

eval $(dircolors dircolors.txt)

更新されてエクスポートLS_COLORSされます。これをシェル起動スクリプトに追加する必要があります。

提供した設定例を適用するために追加する項目はdircolors.txt次のとおりです。

.txt 00;31
.text 00;34
.secret 00;32

答え2

これを達成する1つの方法(最善の方法ではない)は、カスタムシェル関数を作成することです。

myls() {
  for f in *; do
    if [ "${f##*.}" = txt ]; then
      printf '\e[1;31m%s\e[0m\n' "$f"
    elif [ "${f##*.}" = text ]; then
      printf '\e[1;34m%s\e[0m\n' "$f"
    elif [ "${f##*.}" = secret ]; then
      printf '\e[1;32m%s\e[0m\n' "$f"
    else
      printf '%s\n' "$f"
    fi
  done
}

追加資料:

関連情報