를 사용하는 경우 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/
파일이 루트 소유임을 쉽게 알 수 있도록 세 번째와 네 번째 열의 키워드 "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
모든 파일 이름의 단어에도 색상이 지정됩니다.
파이프 사용량 확인을 추가하지 않았지만 여기의 다른 답변에서 확인할 수 있습니다.