アプリケーションでファイルを開く `open`コマンド


13

端末でこのコマンドを実行できないのはなぜですか。

open index.html

私のブラウザでこのファイルを開くことは想定されていませんか?このコマンドを実行することもできません:open index.html -a "Sublime Text"。これらのコマンドの結果は次のとおりです。

$ open index.html
Couldn't get a file descriptor referring to the console

$ open index.html -a "Sublime Text" - 
open: invalid option -- 'a' 
Usage: open [OPTIONS] -- command

2
私はxdg-openあなたがブラウザでファイルを開くべきであることを意味すると思います。openコマンドはへのリンクですopenvtコマンドと、新しい仮想コンソールでバイナリを開きます。それは明らかにあなたが望むものではありません。
マルコ

1
OSXシステムを使用していると仮定しますか?openLinuxにコマンドがあるとは思いません。
slm

1
@ slm、Marcoが指摘するように、openLinuxにはにリンクされたコマンドがありopenvtます。質問のエラーメッセージはその状況と一致しています。
Stephen Kitt

xdg-open filename_or_URL
Ijaz Ahmad Khan

1
@EdgarOliveiraプログラム(バイナリ)を開きたい場合は、その名前を端末に入力するだけです。関連するプログラムでファイルを開きたい場合は、を使用するxdg-open <file>と、対応するプログラムでファイルが開かれます。
マルコ

回答:


18

OS Xのopenコマンドの主な目的は、関連するアプリケーションでファイルを開くことです。最新の非OSX unicesの場合と同等ですxdg-open

xdg-open index.html

xdg-openopen -a特定のアプリケーションでファイルを開くOSXに相当するものはありません。これは、アプリケーションでファイルを開く通常の方法は、アプリケーションの名前に続けてファイルの名前を入力することであるためです。より正確には、アプリケーションを実装する実行可能プログラムの名前を入力する必要があります。

sublime_text index.html

Linuxは、他のUnixシステムと同様に(ただし、私の知る限り、OS Xの非Unix部分ではありません)、ソフトウェアをパッケージマネージャーで追跡して管理し、使用されている場所に個々のファイルを配置します。たとえば、すべての実行可能プログラムは小さなディレクトリのセットにあり、それらすべてのディレクトリはPATH変数にリストされています。を実行sublime_textするとsublime_text、にリストされているディレクトリで呼び出されるファイルが検索されPATHます。OS Xではopen -a、単一のディレクトリツリーにアンパックされ、アプリケーションデータベースに登録されているアプリケーションを処理するために、を介した追加レベルの間接参照が必要です。Linuxにはアプリケーションデータベースはありませんが、データベースを必要としないように編成されています。

コマンドsublime_textシェルを実行しても機能しない場合は、Sublime Textが正しくインストールされていません。私はこれを使用したことがなく、どうやらそれは配布パッケージ(debやrpmなど)ではなくtarアーカイブとして提供されるため、追加のインストール手順を実行する必要がある可能性があります。これをSublime Textの作成者が自動で行うのは実際の仕事ですが、まだ行っていない場合は、おそらくコマンドを実行して自分で行うことができます。

sudo -s …/sublime_text /usr/local/bin

もちろんsublime_text実行可能ファイルがあるパスに置き換えます。

openあなたが遭遇したコマンドは、のために古い名前であるopenvtコマンド(一部のLinuxディストリビューションは名前だけの下にそれを含めますopenvt)。このopenvtコマンドは新しい仮想コンソールを作成します。これはrootだけが実行でき、ほとんどの人はグラフィカルウィンドウ環境でしか作業しないため、今世紀にはあまり使用されません。


しかし、このコマンド「sublime_text indext.html」を実行した場合、「sublime_text:command not found」という結果が表示されます。どうすればその問題が発生しますか?
Edgar Oliveira

@EdgarOliveira問題が発生したようです。SublimeTextには適切なパッケージが付属していないようです。私の編集を参照してください。
Gilles 'SO-邪悪なことをやめる'

そのためのエイリアスを作成しました:alias sublimetext = '/ opt / sublime_text / sublime_text / home / user / Documents / sandbox / webdeveloper'を実行しましたが、「sublimetext」を実行すると、1つではなく2つのウィンドウが開きました。どうして?ありがとう
Edgar Oliveira

ファイル.bashrcを変更したとき、「ファイル.bashrcをリセットして、変更を加えたのと同じ端末で新しいエイリアスを実行できるようにするにはどうすればよいですか」という疑問があります。グーグルで検索して、UnixとLinuxで返信を見つけました。あなただけがコマンド「bash」を実行し、あなたの新しいエイリアスを実行します:)
Edgar Oliveira

7

使用しているオペレーティングシステムについては言及しません。

一部のLinuxディストリビューションでは、openコマンドはopenvt、新しい仮想コンソールでバイナリを開くコマンドへのシンボリックリンク です。それは明らかにあなたが望むものではありません。実際、エラーメッセージは、openvtコマンドを呼び出したことを示しています。このコマンドは、引数としてプログラムバイナリ(実行可能ファイル)を想定しています。

xdg-openこれは、とは対照的にopenvt、実行可能ファイルを引数として期待しないが、プログラムに関連付けられており、プログラムでファイルを開くファイルを意味すると想定します。ファイルとURLを引数として渡すことができます。

したがってxdg-open index.html、ブラウザで xdg-open image.pngファイルを開いたり、画像ビューアでファイルを開いたりする必要があります。


1
唯一の問題は、xdg-openがファイルタイプのデフォルトのアプリケーションでファイルを開くことです。xdg-openでアプリケーションを選択することはできません。アプリを選択するコマンドがあるかどうかはわかりませんが、アプリを知っている場合(「Sublime Text」の例のように)、プログラムを直接呼び出すほうがよいでしょう。
X3MBoy 2016年

1
@ X3MBoy xdg-open呼び出しの背後にある考え方は、そのファイルのデフォルトのアプリケーションを呼び出すことです。別のプログラムを使用する場合は、を呼び出します<program> <file>。私は問題を見逃しています。
マルコ

彼はいくつかのコマンドを要求します:open index.html -a "Sublime Text" -だから私が「問題」と言うのはxdg-open、htmlファイルを開くために使用する場合、「Sublime Text」のようなテキストエディターではなくブラウザーによってファイルが開かれる可能性が高いためです
X3MBoy

3

人々はしばしばxdg-openの機能をエミュレートすると名付けていますがopen、macOS openは少し異なります。1。stdout / stedrrから何もリダイレクトせず、2。実行したいものをターミナルから切り離します(ほとんどの場合、GUIを起動するときに必要なものです)。アプリを配置して、端末を置く必要がないようにします)

これを解決するために、いくつかの標準的なGNUツールを使用して適切な同等物を思いつきました(構文は魚のシェルですが、bashへの変換は簡単です)。

function open
    for i in $argv
        setsid nohup xdg-open $i > /dev/null 2> /dev/null
    end
end

追加

bashシェルを使用している人のために、ここに関数があります:

open ()
{
    for i in $*
    do
        setsid nohup xdg-open $i > /dev/null 2> /dev/null
    done
}

2

私の解決策(毎日使用)はaliasfor を使用することですxdg-open

これをあなたの上に置いてください~/.bashrc

alias open='xdg-open '

次に、シェルを閉じて再起動しますsource ~/.bashrc

これで、そのコマンドで任意のファイルを開くことができます... .pngから.jpg、.docx、.pdf、.txtへ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.