端末でこのコマンドを実行できないのはなぜですか。
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
OS Xの open
コマンドの主な目的は、関連するアプリケーションでファイルを開くことです。最近の非OSX unicesでの同等のものは xdg-open
です。
xdg-open index.html
xdg-open
には、特定のアプリケーションでファイルを開くOSXのopen -a
に相当するものがありません。これは、アプリケーションでファイルを開く通常の方法は、アプリケーションの名前に続けてファイルの名前を入力することであるためです。より正確には、アプリケーションを実装する実行可能プログラムの名前を入力する必要があります。
sublime_text index.html
Linux、他のUnixシステムと同様(ただし、私の知る限り、OS Xの非Unix部分ではありません) ソフトウェアをパッケージマネージャーで追跡して管理し、使用されている場所に個々のファイルを置きます 。たとえば、すべての実行可能プログラムは小さなディレクトリのセットにあり、それらのすべてのディレクトリは PATH
variable にリストされています。 sublime_text
を実行すると、PATH
にリストされているディレクトリでsublime_text
というファイルが検索されます。 OS Xは、単一のディレクトリツリーにアンパックされ、アプリケーションデータベースに登録されているアプリケーションを処理するために、open -a
を介した追加レベルの間接参照を必要とします。 Linuxにはアプリケーションデータベースはありませんが、データベースを必要としないように編成されています。
コマンドsublime_text
Shellを実行しても機能しない場合は、Sublime Textが正しくインストールされていません。私はこれを使用したことがなく、明らかに配布パッケージ(debやrpmなど)ではなくtarアーカイブとして提供されているため、追加のインストール手順を実行する必要がある可能性があります。これを自動化するのはSublime Textの作成者の仕事ですが、まだ作成していない場合は、おそらく次のコマンドを実行して自分で行うことができます。
Sudo -s …/sublime_text /usr/local/bin
もちろん、…
をsublime_text
実行可能ファイルがあるパスに置き換えます。
発生したopen
コマンドは openvt
コマンドの古い名前です(一部のLinuxディストリビューションでは、openvt
という名前でのみ含まれています)。 openvt
コマンドは新しい virtual console を作成します。これはrootによってのみ実行でき、ほとんどの人はグラフィカルウィンドウ環境でしか作業しないため、今世紀にはあまり使用されません。
使用しているオペレーティングシステムについては言及しません。
一部のLinuxディストリビューションでは、open
コマンドは、新しい仮想コンソールでバイナリを開くopenvt
コマンドへのシンボリックリンクです。それは明らかにあなたが望むものではありません。実際、エラーメッセージは、openvt
コマンドを呼び出したことを示しています。このコマンドは、引数としてプログラムバイナリ(実行可能ファイル)を想定しています。
xdg-open
これは、openvt
とは対照的に、引数として実行可能ファイルを想定していませんが、プログラムに関連付けられているファイルをプログラムで開きます。ファイルとURLを引数として渡すことができます。
したがって、xdg-open index.html
はブラウザでファイルを開く必要がありますxdg-open image.png
は、画像ビューアなどでファイルを開く必要があります。
人々はしばしば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
}
私の解決策(毎日使用)は、xdg-open
にalias
を使用することです。
これを~/.bashrc
に貼り付けてください:
alias open='xdg-open '
次に、シェルまたはsource ~/.bashrc
を閉じて再起動します。
これで、そのコマンドで任意のファイルを開くことができます... .pngから.jpg、.docx、.pdf、.txtへ。