2012-04-25 2 views
3

바탕 화면 바로 가기가 /home/user/Desktop/myfolder/link.desktop과 같습니다. bash 스크립트가 실행됩니다 (예 : bash). /tmp/myscript.shbash 스크립트를 호출 한 바탕 화면 바로 가기의 위치를 ​​찾습니다.

내 스크립트에서 내 스크립트를 호출 한 바로 가기 경로를 어떻게 찾을 수 있습니까? 전혀 가능합니까?

내가 실제로 달성하고자하는 것은 바로 가기 링크가있는 하위 폴더가 있다는 것입니다. /home/user/Desktop/myfolder/subfolder. 그리고 내 스크립트에서 하위 폴더에 액세스 할 수 있기를 원합니다.

나는 readlink -f을 시도했지만 그 바로 가기 아이콘이 어디에 있든 항상 /home/user을 반환합니다.

바로 가기 링크가 생성되어 다른 위치에 동적으로 배치되므로 작업 경로를 설정할 수 없습니다.

+1

바로 가기 링크가 생성되면 스크립트에 스크립트가 상주하는 폴더의 인수를 생성 할 수 없습니까? – ricochet1k

+0

문제는 바로 가기가 한 위치에서 생성되었지만 어디서나 복사 (확산) 될 수 있다는 것입니다. 아이디어는 일부 입력 데이터는 바로 가기 링크에 상대적으로 위치한 하위 폴더를 통해 액세스 할 수 있다는 것이 었습니다. –

+0

Gnome, KDE, XFCE 등 어떤 데스크탑입니까? 그러나 그 모든 경우에 대해 바로 가기가 저장되는 디렉토리는 역할을 수행해서는 안되며 데스크탑이 호출되는 곳에서 수행되어야합니다. –

답변

1

글쎄, 적어도 당신이 당신의 스크립트에서이 같은 작업을 수행 할 수 있습니다 귀하의 파일 시스템을 travell과의 스크립트에 대한 모든 .desktop 파일을 검색합니다

find/-iname '*desktop' -exec fgrep -l $0 \{\} \; 2>/dev/null 

...하지만 참고를이 될 수 있습니다 오해의 소지가 있습니다. 누군가 .desktop에 댓글을 달 수 있기 때문에 ... ^Exec=/PATH/TO/$0과 같이 먼저 검색 문자열을 만들고 fgrep 대신 egrep을 사용하십시오.

또는 그것에 복사하기가 위치하고 예 Exec 라인에 매개 변수로 새 위치에 추가 할 때 당신은 .desktop 파일을 편집 복사 기능을 수행 할 수 있습니다

mycp() { 
    sed "s/^Exec=.*/& $2/" $1 > $2 
} 

또는 내가 '(함께 가면 Exec 행의 %k 매개 변수 according to the spec을 사용하십시오.

+0

안녕하십니까, 제안을 주셔서 감사합니다. 그러나 다른 매개 변수를 사용하여 스크립트를 호출하는 여러 바탕 화면 바로 가기를 가지고 있기 때문에 나에게 적합하지 않습니다. –

+0

@PeterMeier가 대답을 업데이트했습니다. –

+0

위의 % k 매개 변수는 내가 찾고있는 매개 변수입니다. % k/하위 폴더를 매개 변수로 전달할 수 있습니다. 감사!!! –

관련 문제