![ls:ルートがファイルを所有している場合は、[ユーザー]列と[グループ]列に異なる色を使用します。](https://linux33.com/image/164180/ls%EF%BC%9A%E3%83%AB%E3%83%BC%E3%83%88%E3%81%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%89%80%E6%9C%89%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%5B%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%5D%E5%88%97%E3%81%A8%5B%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%5D%E5%88%97%E3%81%AB%E7%95%B0%E3%81%AA%E3%82%8B%E8%89%B2%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
を使用している場合、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
すべてのファイル名の単語にも色が付けられます。
パイプ使用率チェックを追加していませんが、ここの他の回答で確認できます。