というプログラムがあります。プログラムが端末を開き、内容を標準出力として表示するように、foo.txt
私のプログラムをMIMEタイプに関連付けたいと思います。私はRubyを好みますが、BASHスクリプトも機能します。.txt
foo.txt
実際の例:を使用できます。同じ方法で独自の実行可能ファイルを使用してファイルを開きfirefox
たいです。txt
実際にどのように機能させるのかわかりませんか?
例 2: .txt
Geany/Mousepad/Atom/Code などを使用してファイルを開くことができます。私がマウスパッドのようなツールを作っているとしましょう。私のプログラムは.txt
MIMEタイプをどのように扱うべきですか?
これまで、私はRubyで小さなGUIプログラムを作成して実行可能にし、私のプログラムで開いてみましたfoo.txt
(私はNemoファイルマネージャを使用しています)。私のRubyプログラムはパラメータとstdinをキャプチャしたので、パラメータとSTDINがある場合はそれを表示します。しかし、このファイルを含むファイルを開くと、私のプログラムはウィンドウも表示しません.txt
!
この結果を得るにはどうすればよいですか?
答え1
紹介する
アプリケーションを使用してファイルを開くと、そのファイルはパラメータとしてアプリケーションに渡されます。
だからオープンしたらFirefox ナイトリーlocated in/bin/
とp.html
located inは/home/user/
デフォルトでrunに似ています/bin/firefox-nightly /home/user/p.html
。
実行ファイルの生成
質問で述べたように:
これまで、私はRubyで小さなGUIプログラムを作成して実行可能にし、プログラムとしてfoo.txtを開いてみました(私はNemoファイルマネージャを使用しました)。
OPが要求したようにコピーを引数として渡すRubyプログラムを作成しましょう/tmp/tempfile-#{n}
。コマンドライン引数を受け入れるすべてのプログラミング言語が機能します。
#!/usr/bin/env ruby
# Errors
ERR_NO_FILE = 2
FILE = $*[0]
begin
tempfile, counter = File.join(%W(/ tmp tempfile)), 0
tempfile.replace(File.join(%W(/ tmp tempfile-#{counter += 1}))) while File.exist?(tempfile)
IO.write(tempfile, IO.read(FILE))
rescue Errno::ENOENT
exit!(ERR_NO_FILE)
rescue Interrupt, SystemExit, SignalException
exit!(0)
rescue Exception
abort($!.backtrace.join(?\n))
end if FILE
私たちのプログラムを呼び出そうShanzhai.rbを選択して/tmp/ディレクトリに移動します。
もちろん、次のように端末でプログラムを実行できます。
/tmp/copycat.rb /tmp/AFile
重複した一時ファイルがある場合、すべての内容はそのファイルの数だけ/tmp/AFile
コピーされます。/tmp/tempfile-#{n}
#{n}
アプリケーション項目の生成
ファイルマネージャでプログラムを使用してそれを開くには、アプリケーションエントリを作成する必要があります。これには2つのオプションがあります。これ最初のオプションは:
$HOME/.local/share/applications
次の内容でcopycat.desktopというファイルを作成します。
[Desktop Entry]
Version=1.0
Type=Application
Name=CopyCat
Comment=Copy the contents of a file to /tmp/tempfile#{n}
Exec=/tmp/copycat.rb %u
Icon=edit-copy
Path=
Terminal=false
StartupNotify=false
Actions=
Categories=Copy;Utility
%u
Execで始まる行にこのオプションを追加することを忘れないでください。
テスト
さて、テストのために「hello world」または好きな名前という単純なファイルを作成しましょう。ファイルマネージャを開き、ファイルのセカンダリマウスボタンをクリックして、「次のプログラムで開く」または同様のオプションを選択します。 GUIに関する内容なので、サンプル写真をいくつか追加します。
ここで使用しているファイルマネージャはNautilusですが、他のファイルマネージャでも機能する必要があり、テキストだけが異なる場合があります。
これ2番目のオプションはすべてのユーザーがアプリケーションを使用できるようにします。これを行うには、ファイルをからルート$HOME/.local/share/applications/copycat.desktop
に移動/usr/share/applications
し、所有権をルートに変更する必要があります。
これがLinuxでカスタム実行可能ファイルを使用して開く方法です。同様のGUIアプリケーションを同じ方法で作成して開くことができます。
答え2
case $1 in
*txt) applic=less ;;
*html) applic=vim ;;
esac
xterm -e $applic $1 &
ミニマリストながらもテストされています。
最初のxtermでこのスクリプトを呼び出すことができます。を見ないで、アンパサンドとアンパサンドにcase-esac
注意してください。xterm
-e