2012-04-25 18 views
3

デスクトップのショートカットは/home/user/Desktop/myfolder/link.desktopです。bashスクリプトは他の場所に配置されています。 /tmp/myscript.shbashスクリプトを呼び出すデスクトップショートカットの場所を見つける

スクリプト内で、スクリプトを呼び出すショートカットのパスを見つけるにはどうすればよいですか?まったく可能ですか?

実際に達成したいのは、ショートカットリンクが存在するサブフォルダがあることです。 /home/user/Desktop/myfolder/subfolder。私のスクリプトでは、サブフォルダにアクセスしたいと思っています。

私はreadlink -fを試しましたが、ショートカットアイコンがどこにあるかにかかわらず、常に/home/userを返します。

ショートカットリンクが生成され、異なる場所に動的に配置されるため、作業パスを設定できません。

+1

ショートカットリンクが生成された場合、そのスクリプトが存在するフォルダの引数を生成できませんか? – ricochet1k

+0

問題は、ショートカットが1つの場所で生成されますが、どこにでもコピー(展開)できることです。そのアイデアは、いくつかの入力データが、ショートカットリンクと相対的に位置するサブフォルダを通じてアクセスできるということでした。 –

+0

Gnome、KDE、XFCE、...のデスクトップはどれですか?しかし、それらのすべてのために、ショートカットが格納されているディレクトリは役割を果たしてはいけませんが、起動されている場所、つまりデスクトップです。 –

答えて

1

まあ、少なくともあなたはあなたのスクリプトの中でこのような何かを行うことができます。それには、あなたのファイルシステムと検索スクリプトごと.desktopファイルをtravellます

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 /サブフォルダを渡すことができます。ありがとう!!! –

関連する問題