심볼릭 링크의 내용 표시

심볼릭 링크의 내용 표시

나는 zsh심볼릭 링크를 만들었습니다.

$ ln -s ~/Documents symboliclink

그렇다면 이 심볼릭 링크 안에 무엇이 있는지 알고 싶습니다.

$ ls -l symboliclink
> lrwxrwxrwx 1 user user 21 Oct 10 15:56 symboliclink -> /home/user/Documents

이는 심볼릭 링크만 표시하고 그 안에 있는 내용은 표시하지 않습니다. just 를 사용하면 ls내용이 나열되지만, flags 를 사용하면 -l내용이 나열되지 않습니다. 이는 for bashls에서 작동합니다 ls -l. 어떻게 하면 zsh이런 행동도 얻을 수 있나요 ?

답변1

ls옵션 은 다음과 같습니다 -H.

ls -lH  symboliclink

에서 man 1p ls:

-시간

디렉토리 유형 파일을 참조하는 기호 링크가 명령줄에 지정된 경우 ls는 링크 자체가 아닌 링크가 참조하는 파일의 파일 정보와 파일 유형을 평가합니다. 그러나 ls는 링크 자체의 이름을 작성해야 합니다. , 참조 문서 링크가 아닙니다.

-L 옵션도 참고하세요.

-엘

모든 기호 링크의 파일 정보 및 파일 유형(명령줄에서 이름이 지정되었거나 파일 계층에서 발견되었는지 여부)은 링크 자체가 아닌 링크에서 참조하는 파일의 것으로 평가됩니다. 그러나 ls는 다음의 이름을 작성해야 합니다. 링크가 참조하는 파일이 아니라 링크 자체입니다. -L을 -l과 함께 사용하면 기호 링크의 내용을 긴 형식으로 기록합니다(STDOUT 섹션 참조).

답변2

ls -l둘 사이의 출력 차이가 보이는 이유 중 하나다루기 힘든그리고세게 때리다-completion을 사용 Tab하고 AUTO_REMOVE_SLASH활성화하는 것 입니다.다루기 힘든(기본값입니다).

슬래시 자동 제거<디>

완성 결과의 마지막 문자가 슬래시이고 다음으로 입력되는 문자가 단어 구분 기호, 슬래시 또는 명령을 끝내는 문자(예: 세미콜론 또는 앰퍼샌드)인 경우 슬래시를 제거하십시오.

ls -l symbTab를 입력하면 zsh와 를 모두 bash수행합니다 ls -l symboliclink/( /마지막 항목 참고). 차이점은 거기를 누르기만 하면(즉, 명령 종료) 슬래시가 제거된다는 것입니다 zsh(활성화된 경우 AUTO_REMOVE_SLASH).Enter

그래서 당신은 효과적으로 ls -l symboliclink/달릴 것입니다세게 때리다, ls -l링크 뒤를 살펴보라고 알려줍니다. 하지만다루기 힘든대상 디렉토리가 아닌 링크에 대한 정보를 확인하도록 ls -l symboliclink지시하는 를 실행합니다 .ls -l

ls옵션이 없으면 끝에 -l관계없이 항상 대상 디렉터리의 내용이 표시됩니다 ./


얻기 위해서는다루기 힘든후행 슬래시를 제거하지 않으려면 TAB-completion 후에 명시적으로 슬래시를 입력하는 것으로 충분합니다. 일반적으로 완성된 텍스트는 눈에 띄게 변경되지 않지만 /공백을 입력하거나 명령을 확인하면 유지됩니다. "보통"은 마젠타색 및 굵은꼴과 같이 자동으로 추가된 접미사 문자에 대해 강조 표시를 설정할 수 있기 때문입니다.

zle_highlight[(r)suffix:*]="suffix:fg=magenta,bold"

(노트:외부 사용시에는 작동하지 않을 수 있습니다.ZSH 구문 강조 플러그인)

(분명히) 또 다른 해결책은 을 비활성화하는 것입니다 AUTO_REMOVE_SLASH.

setopt noautoremoveslash

답변3

끝에 "/"만 추가하면 됩니다.

ls -l symboliclink/

답변4

프로그램의 동작은 프로그램 ls이 호출되는 쉘에 의존하지 않습니다. Bash와 zsh에서 서로 다른 동작이 관찰 된다면 ls이는 한 셸에서는 별칭(또는 함수)을 호출했지만 ls다른 셸에서는 호출하지 않았기 때문입니다. zsh에서 관찰되는 동작은 lsbash의 동작과 일치하므로 이를 호출하려면 다른 옵션을 사용해야 합니다.

심볼릭 링크를 역참조하도록 또는 에 ls별칭을 지정 했을 수 있습니다 . alias() 를 우회하는 것 외에는 심볼릭 링크 자체에 대한 정보를 얻을 수 없기 때문에 이는 나쁜 생각입니다 .ls -Hls -L\ls

파일이 디렉토리에 대한 심볼릭 링크인 경우 후행 슬래시를 추가하여 파일 대신 디렉토리에서 작업할 수 있습니다. .see ls -l symboliclink/와 동일합니다.ls -l symboliclink/.심볼릭 링크는 언제 심볼릭 링크와 마찬가지로 링크되는 것으로 간주됩니까?

관련 정보