を使用している場合、ls -lAhF
列3と4はユーザーとグループの所有権です。つまり、
drwxrwxrwt 2 root root 60 Nov 15 15:50 .X11-unix/
srwxr-xr-x 1 marti marti 0 Nov 15 15:51 .menu-cached-:0-marti=
srwxr-xr-x 1 marti marti 0 Nov 15 15:51 .pcmanfm-socket--0-marti=
drwxr-xr-x 4 root root 80 Nov 15 15:50 dtach/
drwx------ 2 marti marti 40 Nov 16 17:36 mc-marti/
drwx------ 2 root root 40 Nov 16 20:25 mc-root/
ファイルがルート所有であることを簡単に知るために、3番目と4番目の列のキーワード「root」を赤にしたいと思います。
したがって、ユーザーグループがルートでない場合は、すべてが以前のように見えます。
ユーザーがrootの場合、列3のキーワード「root」は赤です。グループルートの場合も同様です。
どうすればいいですか? 私は"zsh"をシェルとして使用します。
ls
構成することは不可能だと思います。しかし、でエイリアス/関数を使用できますかzsh
?
答え1
root
出力で次の関数が発生すると、赤で表示され、ls
その後にスペースが表示されます。
ls() {
if [ -t 1 ]; then
command ls --color=always "$@"| sed "s/root /$(tput setaf 1)root$(tput sgr0) /g"
else
command ls "$@"
fi
}
これはroot
、ユーザーとグループの列だけでなく、 ""(スペースを含む)を含むファイルでも一致するため、root
正確に望むものではないかもしれません。カラー出力を強制すると、少なくとも「root」というファイルと一致しないことが確認されます。
このsed
呼び出しはZsh関連の関数を使用して置き換えることができますtput
。
echoti
:sed "s/root /$(echoti setaf 1)root$(echoti sgr0) /g"
- 急速な拡張:(
sed "s/root /${(%):-%F{red}root${(%):-%f} /g"
はい、最初の支柱はバランスが取れません) colors
(autoload colors; colors
):sed "s/root /${fg[red]}root${reset_color} /g"
端末が16色以上をサポートしている場合は、より大きな値を使用できますsetaf
。%F{red}
数値も使用できます。このnearcolor
モジュール目的のRGB値に最も近い色を見つける簡単な方法を提供します。
既存がある場合ls
ニックネーム、設定を--color=tty
無効にする必要があります。それ以外の場合は、--color=tty
通話後に表示され、自分の色が無効になります。--color=always
ls
ls
答え2
迅速で汚い解決策:
function ls {
command ls "$@" | grep -E --color=always "^|root "
}
簡単にするために、root
すべてのファイル名の単語にも色が付けられます。
パイプ使用率チェックを追加していませんが、ここの他の回答で確認できます。