디렉토리 심볼릭 링크를 계속하면서 긴 형식 (-l)을 사용하는 방법은 무엇입니까?


27

ls -l출력 형식을 변경 할뿐만 아니라 디렉토리 심볼릭 링크를 처리하는 방법을 알았습니다 .

> ls /rmn
biweekly.sh  daily.sh  logs ...

> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11  2011 /rmn -> /root/maintenance/

symlink /rmn에 대한 정보가 아닌에 포함 된 내용에 대한 자세한 목록을 얻고 싶습니다 /rmn.

내가 생각할 수있는 한 가지 해결 방법은 다음과 같은 작업을 수행하는 쉘 함수를 만드는 것입니다.

cd /rmn
ls -l
cd -

그러나 그것은 다음 번 사용을 망쳐 놓기 때문에 너무 해키처럼 보입니다 cd -. 더 좋은 방법이 있습니까?

(저는 CentOS 2.6.9에 있습니다)


나는 또한 그것을 알아 차리고 누군가가 또한 알아 차리기 위해 인터넷 검색을 갔다. 그것이 내가 여기 온 방법입니다. :)
Yevgeniy Afanasyev

답변:


27

ls에 옵션이 있는지 확인하십시오.

 -H, --dereference-command-line
     follow symbolic links listed on the command line 
 --dereference-command-line-symlink-to-dir
     follow each command line symbolic link that points to a directory

도움이되지 않으면 다음을 수행하여 엉망으로 매크로를 작동시킬 수 있습니다 cd -.

(cd /rmn ; ls -l)

서브 쉘에서 실행됩니다.


그것은 -H있고, 그 트릭을했습니다. 고맙습니다!
RomanSt

4
나는 그것이 --dereference-command-line-symlink-to-dir짧은 형식을 갖기를 정말로 바란다 .
wchargin

14

이 간단한 문제에 대한 생각이 왜 그렇게 복잡해야하는지 잘 모르겠습니다. 그러나 아마도 질문에 잘못된 방법이있을 것입니다. 어쨌든 : 비슷한 기능이 필요할 때 다음을 사용했습니다.

ls -lL

그것은 내 경우에 트릭을했다. 로부터 ls매뉴얼 페이지

-L, --dereference
     when showing file information for a symbolic link, 
     show  information  for  the file the link references
     rather than for the link itself

예를 들어 /media/stickUSB 스틱의 데이터에 액세스 할 수 있는 바로 가기를 만들었습니다 . ls -l /media/stick실제 연결 ls -lL /media/stick을 표시 하고 USB 스틱 의 내용 을 표시합니다 .

내부의 동작 사이의 차이에 대한 몇 가지 더 깊은 연구 후 -H-L, 나는 마침내이 문제에 대한 훌륭한 기사를 건너 왔어요 얕은 생각 블로그 (심지어 당신의 즐거움을위한 몇 가지 참신한 쉘 스크립트 트릭을 특징으로!)

이것은 다음과 같이 두 옵션 사이 의 미묘한 차이점 (원래 매뉴얼보다 낫습니다!)을 나타냅니다.

  • -H -명령 행에 명시 적으로 언급 된 링크 만 역 참조
  • -L- 명령 줄에 언급 되지 않은 링크의 역 참조

(이 두 가지를 간단한 일상 업무 와 함께 사용하는 경우 일반적으로 결과에 차이가 없어야합니다.)

게다가 : 긴 형식 ( --option) 을 기억하고 싶다면 --dereference과도하게 긴 괴물보다 암기하는 것이 덜 번거 롭습니다 --dereference-command-line-symlink-to-dir.


5
ls -l /rmn/

할 것인가 또는

ls -l /rmn/.

그러나 동작은와없이 다르지 않아야합니다 -l. 에 대한 별칭이 ls있습니까?


3
ls깃발은 미쳤다. -l만드는 -H등의 수행, 오프에 기본 -F. coreutils-어떤 파일이 나열되어 있는지 참조하십시오 .
Mikel

@Mikel 그것은 당신이 그것에 대해 완전히 옳은 것처럼 보입니다. 그리고 그렇습니다. (또한, 나는 ls에 대한 별칭이 없으며, 탈출을 시도했지만 결과는 동일합니다)
RomanSt

실제로 그것은 POSIX에 의해 지정됩니다. 나는 ls='ls -F'실제로 별명을 가진 사람이었습니다 .
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.