web-dev-qa-db-ja.com

bashスクリプト内からファイルを開くにはどうすればよいですか?

それでは、gedit myfile.txtを実行するとうまくいきます。しかし、ファイルタイプにリンクされたデフォルトのデスクトップアプリを使用して、bashスクリプト内からファイルを開くのはどうでしょうか?

私は以下を試しましたが、ターミナルで手動で実行するとうまくいきますが、bashファイルに入れても何も起こりません:

#!/bin/bash
xdg-open "myfile.txt"&

代わりに何をすべきですか?

ターミナルを閉じた後もファイルを開いたままにしておく必要があることに注意してください。

22
Industrial

スクリプトは機能するはずです。しかし、もう少し情報を得るために何かを追加するかもしれません:

#!/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)のデフォルトを開きます。

したがって、このようなものをスクリプトに追加して、予期しない出力が得られるかどうかを確認することをお勧めします(その後、質問に追加できます)。

16
xubuntix

Bashスクリプトtest.shを次のように作成します。

#!/bin/bash
gedit myfile.txt

次に、スクリプトを次のように実行可能にします。

chmod +x test.sh

最後に、スクリプトを次のように実行します。

./test.sh
5
Usman

多分gnome-openの代わりにxdg-open

3
Denis

あなたは正しい方向に進んでいます。ターミナルウィンドウを閉じたときにGUIアプリを開いたままにする場合は、行の先頭にNohupを追加するだけです。

#!/bin/bash
Nohup xdg-open "myfile.txt"&

おそらく起動しようとしているシェルにDISPLAY環境変数が設定されていないために、guiアプリが開かない場合。エコー$DISPLAYを試してください

2
Mark

質問の最初の部分

コマンドcatを使用すると、ターミナル内でファイルを開くことができます(必要な場合)(質問の最初の部分に記載されています)。

使用するには、cat FILENAMEと入力するだけです。

その他の情報

さらにコマンドが必要な場合: Here's コマンドの良いリスト。

GNOMEデフォルトエディター

GNOMEのデフォルトアプリケーションgeditでファイルを開きたい場合。

使用するには、gedit FILENAMEと入力するだけです

0
Alvar

ここで実際に何が達成されるのかわかりませんが、単一のスクリプトでデフォルトのアプリで任意のファイルを開く必要がありますまたはアプリがこれをサポートしているという最近のコメントに基づいています。

そうであればそれを行う最も簡単な方法は、ターミナルを開いて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による呼び出し用のスクリプト「ターミナルで実行」ではなく「実行」を選択するだけでスクリプトを左クリック

0
doug