2010-11-15 17 views
15

Tworzenie skryptu bash i próbuję znaleźć sposób, aby dowiedzieć się, na co wskazuje moje symboliczne łącze. W tej chwili robię to z tym, ale działa to tylko wtedy, gdy moje dowiązanie symboliczne znajduje się w bieżącym katalogu. Czy istnieje sposób, aby dowiedzieć się, do czego prowadzi moje dowiązanie symboliczne, jeśli znajduje się w innym katalogu?Jak mogę się dowiedzieć, na co wskazuje moje łącze symboliczne?

ls -l "symlink" | cut -d'>' -f2 

Odpowiedz

23

Jeśli masz narzędzie readlink(1) (część coreutils GNU), robi to, co chcesz. W przeciwnym razie jesteś trochę bliżej zatoczki, nie jestem świadomy żadnego prostego przenośnego odpowiednika.

6

Na toolchain BSD, robie:

stat -f %Y <filename> 

Na przykład:

% ln -sf /bsd ~/blah   
% stat -f %Y ~/blah 
/bsd 

Na GNU toolchain to nie jest tak łatwe, można użyć coś takiego:

$ stat -c %N /usr/bin/firefox 
`/usr/bin/firefox' -> `../lib/firefox-3.6.12/firefox.sh' 

Następnie użyj awk/cut i sed, aby wyodrębnić i usunąć cytaty śmieciowe.

Lub rozwiązaniem komunikatora jest użycie ls -al i albo awk/cut, aby wyodrębnić kolumnę, której potrzebujesz.

Powiązane problemy