それでは、gedit myfile.txt
を実行するとうまくいきます。しかし、ファイルタイプにリンクされたデフォルトのデスクトップアプリを使用して、bashスクリプト内からファイルを開くのはどうでしょうか?
私は以下を試しましたが、ターミナルで手動で実行するとうまくいきますが、bashファイルに入れても何も起こりません:
#!/bin/bash
xdg-open "myfile.txt"&
代わりに何をすべきですか?
ターミナルを閉じた後もファイルを開いたままにしておく必要があることに注意してください。
スクリプトは機能するはずです。しかし、もう少し情報を得るために何かを追加するかもしれません:
#!/bin/bash
T=`xdg-mime query filetype $1`
echo "opening file " $1 " of type " $T "with " `xdg-mime query default $T`
xdg-open $1
echo "finished script"
このような端末(my_open.sh)を次のような端末で実行する場合:
my_open.sh path/to/somefile.txt
次の出力が得られます。
opening file path/to/somefile.txt of type text/plain with gedit.desktop
finished script
これにより、ファイルへのパスは問題なく、mimetypeが認識され、ファイルを開くために使用されるdesktopfileも問題ないことがわかります。そして、問題のファイルでgeditが開きます。
今、別のファイルで実行すると:
my_open.sh path/to/README
次の出力が得られます。
opening file path/to/README of type text/x-readme with
finished script
異なるmimetypeと不足しているデスクトップファイルに注意してください。それでも、xdg-openはすべてのテキストファイル(gedit)のデフォルトを開きます。
したがって、このようなものをスクリプトに追加して、予期しない出力が得られるかどうかを確認することをお勧めします(その後、質問に追加できます)。
Bashスクリプトtest.shを次のように作成します。
#!/bin/bash
gedit myfile.txt
次に、スクリプトを次のように実行可能にします。
chmod +x test.sh
最後に、スクリプトを次のように実行します。
./test.sh
多分gnome-openの代わりにxdg-open
あなたは正しい方向に進んでいます。ターミナルウィンドウを閉じたときにGUIアプリを開いたままにする場合は、行の先頭にNohup
を追加するだけです。
#!/bin/bash
Nohup xdg-open "myfile.txt"&
おそらく起動しようとしているシェルにDISPLAY
環境変数が設定されていないために、guiアプリが開かない場合。エコー$DISPLAY
を試してください
コマンドcat
を使用すると、ターミナル内でファイルを開くことができます(必要な場合)(質問の最初の部分に記載されています)。
使用するには、cat FILENAME
と入力するだけです。
さらにコマンドが必要な場合: Here's コマンドの良いリスト。
GNOMEのデフォルトアプリケーションgedit
でファイルを開きたい場合。
使用するには、gedit FILENAME
と入力するだけです
ここで実際に何が達成されるのかわかりませんが、単一のスクリプトでデフォルトのアプリで任意のファイルを開く必要がありますまたはアプリがこれをサポートしているという最近のコメントに基づいています。
そうであればそれを行う最も簡単な方法は、ターミナルを開いてscriptname/path/to/filenameを実行するか、pathにスペースが含まれている場合はscriptname '/ path/to/filename'
cd; mkdir -p bin && gedit ~/bin/openit1
これをスクリプトとして使用します。スクリプトに任意の名前を使用できます。例としてopenit1を使用します。 〜/ binから直接スクリプトを使用して名前に番号を追加するのが最善であるため、既存のLinuxコマンドと競合しません
#!/bin/bash
xdg-open "$1"
Geditを閉じて、ターミナルで
chmod u+x ~/bin/openit1
再起動して〜/ binを$ PATHに追加します
ターミナルを開いて起動するには
openit1 /path/to/filename or openit1 'path/to/filename'
IFが指定されている場合&origを使用します。 スクリプトごとに1つの特定のファイル&dによる呼び出し用のスクリプト「ターミナルで実行」ではなく「実行」を選択するだけでスクリプトを左クリック