![lsで他のファイルの色を変更する方法[重複]](https://linux33.com/image/98291/ls%E3%81%A7%E4%BB%96%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%89%B2%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%5B%E9%87%8D%E8%A4%87%5D.png)
そのため、ディレクトリ、通常のファイル、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
}
追加資料: