확장형의 특징적인 색상을 유지하면서 ls --color=auto
파일이 하드링크일 때 밑줄을 긋는 방법이 있는지 궁금합니다.
예를 들어 내가 그렇게 하면
LS_COLORS="*.tgz=01;31:mh=04" ls --color=auto foo.tgz
파일은 굵은 빨간색으로 표시되지만, 그렇게 하면 다음과 같습니다.
ln foo.tgz bar.tgz
LS_COLORS="*.tgz=01;31:mh=04" ls --color=auto foo.tgz
이제 파일이 흰색이고 밑줄이 그어진 것으로 보입니다. 나는 그것을 굵은 빨간색과 밑줄로 보고 싶고, 물론 다른 확장과 함께 사용되기를 원합니다.
답변1
모두수정 명령을 사용하면 하드 링크된 파일을 굵은 빨간색으로 표시할 수 있습니다.
LS_COLORS="*.tgz=01;31:mh=04" ls --color=auto foo.tgz
도착하다
LS_COLORS="*.tgz=01;31:mh=04;01;31" ls --color=auto foo.tgz
mh=
변수 부분은 LS_COLORS
하드링크 파일을 참조합니다. 안쪽에 테이블도 있어요ls
소스 코드문서에서 찾을 수 없습니다:
enum indicator_no
{
C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,
C_FIFO, C_SOCK,
C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,
C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,
C_CLR_TO_EOL
};
static const char *const indicator_name[]=
{
"lc", "rc", "ec", "rs", "no", "fi", "di", "ln", "pi", "so",
"bd", "cd", "mi", "or", "ex", "do", "su", "sg", "st",
"ow", "tw", "ca", "mh", "cl", NULL
};
04
밑줄 친 SGR 코드(선택된 그래픽 표현) 입니다 . 그리고 01
응31
용감한그리고빨간색, 각각. 섹션의 변수에 이를 추가하여mh
를 사용하면 다른 파일과 마찬가지로 하드 링크 파일의 색상을 지정할 수 있습니다(또는 다른 번호를 선택한 경우 다르게).
그러나 GNU는 ls
각 파일에 색상을 지정하기 위해 하나의 구성표만 선택합니다. 콜론 :
분리 방식. 하드 링크(심볼릭 링크 및 디렉토리 포함)와 같은 특수 범주를 확인한 후 프로그램은오직tgz
이러한 범주 중 어느 것도 적용되지 않는 경우 와 같은 접미사를 찾으십시오 . 존재하다소스 코드, 즉 댓글입니다.
/* Check the file's suffix only if still classified as C_FILE. */
계획을 선택하면 해당 계획을 실행하고,조합을 시도하지 않음.