디렉토리 접미사에 대한 LS_COLORS를 미세 조정하시겠습니까?

디렉토리 접미사에 대한 LS_COLORS를 미세 조정하시겠습니까?

다른 파일 접미사에 대한 색상을 사용자 LS_COLORS정의하는 데 도움이 필요하지 않습니다. 내가하고 싶은 것은 특별한 색상을 구성하는 것입니다특정 디렉토리, 접미사를 기준으로 합니다.

dir1/(예를 들어 표준 디렉토리 색상으로 표시 하고 싶지만 dir2.special-suffix/이름이 로 끝나는 디렉토리에 대해 설정한 다른 색상으로 표시하고 싶습니다 .special-suffix.)

*.«suffix»나는 성공하지 못한 채 이 작업을 수행하기 위해 표준 방법(파일 작업)을 사용해 보았습니다 . 모든 디렉터리는 지정된 색상으로 표시되며 di이후의 모든 *.«suffix»규칙은 무시됩니다.

가능합니까?

답변1

아마도 그렇지는 않을 것입니다. 하지만 이는 개발자를 놀라게 할 수도 있습니다. 리뷰에서 발췌한 내용입니다GNU의 ls.c:

#   /* Extensions only apply to regular files, apparently. */

이것은 링크입니다가득한ls.c보기에는 좋지 않을 수도 있지만 거기에서 동일한 소스 코드를 찾을 수 있습니다.

비록 당신이할 수 있는디렉토리 모드 및/또는 링크 상태에 따라 디렉토리 색상의 변형을 가져옵니다. 물론 그런 일은 언론인의 이익을 위해 기사의 내용을 바꾸는 것과 같지만 나는 철학자가 아닙니다. 따라서 다음과 같은 접근 방식을 취할 수 있습니다.

mkdir t_not_other_writable
mkdir x_not_other_writable
chmod o+t t_not_other_writable 
LS_COLORS='lc=:rc=:rs=:di=FG=BLD;CLR=BLUE :st=FG=REV;CLR=BLUE :' \
    /usr/bin/ls --color=always -nFl

산출

drwxr-xr-x 1 1000 1000 0 Aug  7 14:37 FG=BLD;CLR=BLUE x_not_other_writable/
drwxr-xr-t 1 1000 1000 0 Aug  7 14:36 FG=REV;CLR=BLUE t_not_other_writable/

이와 같은 것이 터무니없이 위험한 아이디어가 아닌지 확인하기 위해 Google에 고정 비트의 기능을 다시 확인했습니다.

고정 비트는 파일/디렉터리의 소유자 또는 루트 사용자만 파일을 삭제하거나 이름을 바꿀 수 있도록 허용하는 파일 또는 디렉터리에 설정된 권한 비트입니다. 다른 사용자에게는 다른 사용자가 만든 파일을 삭제할 수 있는 권한이 부여되지 않습니다.

따라서 우리가 귀하의 디렉토리에 대해 이야기하고 있고 처음부터 다른 사람이 해당 디렉토리를 삭제하도록 허용할 의도가 없다면 아마도 아무런 해를 끼치지 않을 것입니다.

PS 거기에 대한 정의가 궁금하시다면 $LS_COLORS제가 꽤 잘 다루었습니다.(나는 희망) 여기. 또한 아래 소스에서 몇 가지 추가 설명을 붙여넣었습니다. dircolors -p결과가 제공하는 내용과 잘 맞기 를 바랍니다.(아직 정의가 필요한 분들을 위해):

#   /* lc: Left of color sequence */
#   /* rc: Right of color sequence */
#   /* ec: End color (replaces lc+no+rc) */
#   /* rs: Reset to ordinary colors */
#   /* no: Normal */
#   /* fi: File: default */
#   /* di: Directory: bright blue */
#   /* ln: Symlink: bright cyan */
#   /* pi: Pipe: yellow/brown */
#   /* so: Socket: bright magenta */
#   /* bd: Block device: bright yellow */
#   /* cd: Char device: bright yellow */
#   /* mi: Missing file: undefined */
#   /* or: Orphaned symlink: undefined */
#   /* ex: Executable: bright green */
#   /* do: Door: bright magenta */
#   /* su: setuid: white on red */
#   /* sg: setgid: black on yellow */
#   /* st: sticky: black on blue */
#   /* ow: other-writable: blue on green */
#   /* tw: ow w/ sticky: black on green */
#   /* ca: black on red */
#   /* mh: disabled by default */
#   /* cl: clear to end of line */

관련 정보