端末でこのコマンドを実行できないのはなぜですか?
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
答え1
OS Xの主な目的open
このコマンドは、リンクされたアプリケーションでファイルを開きます。最新の OSX ではなく unice に対応する内容は次のとおりです。xdg-open
。
xdg-open index.html
xdg-open
open -a
特定のアプリケーションでファイルを開くのに対応するOSXはありません。これは、アプリケーションでファイルを開く一般的な方法は、単にアプリケーション名を入力してからファイル名を入力することです。より正確には、アプリケーションを実装するランチャーの名前を入力する必要があります。
sublime_text index.html
Linux、他のUnixシステムと同様に(しかし、私が知っている限り、OS Xの非Unixy部分ではありません)パッケージマネージャ追跡ソフトウェアを使用してソフトウェアを管理し、個々のファイルを使用する場所に配置します。。たとえば、すべてのランチャーは小さなディレクトリセットにあり、これらのディレクトリはすべて次のディレクトリに一覧表示されます。PATH
変える;ランタイムは、にリストされているディレクトリからsublime_text
呼び出されたファイルを探します。 OS Xでは、単一のディレクトリツリーに解凍され、アプリケーションデータベースに登録されているアプリケーションを処理するために追加のレベルの間接参照が必要です。 Linuxにはアプリケーションデータベースはありませんが、不要な方法で構成されています。sublime_text
PATH
open -a
コマンドsublime_text
シェルの実行が機能しない場合は、Sublime Textが正しくインストールされていません。私はそれを試したことがなく、配布パッケージ(debやrpmなど)ではなくtarアーカイブとして提供されているので、追加のインストール手順を実行する必要があるかもしれません。これを自動化することは、実際にはSublime Textクリエイターの使命ですが、まだ自動化していない場合は、次のコマンドを実行して直接実行できます。
sudo -s …/sublime_text /usr/local/bin
もちろん、…
実行可能ファイルのあるパスに置き換えてください。sublime_text
発生したコマンドはopen
古い名前です。openvt
コマンド(一部のLinuxディストリビューションでは名前にのみ含まれていますopenvt
)。このopenvt
コマンドは新しい仮想コンソール、これはrootとしてのみ実行でき、ほとんどの人がグラフィックウィンドウ環境でのみ作業するため、今世紀には頻繁に使用されません。
答え2
どのオペレーティングシステムを使用しているかについて言及していません。
一部のLinuxディストリビューションでは、このコマンドはopen
新しい仮想コンソールでバイナリファイルを開くコマンドへのシンボリックリンクです。openvt
これは明らかにあなたが望むものではありません。エラーメッセージは、コマンドが呼び出されたことを示しますopenvt
。このコマンドにはプログラムバイナリ(実行ファイル)が引数として必要です。
私は実行可能ファイルを引数として要求せずにプログラムに関連付けられており、そのプログラムを使用してファイルを開くファイルを意味するものと比較してを意味すると仮定xdg-open
します。openvt
ファイルとURLをパラメータとして渡すことができます。
したがって、xdg-open index.html
ファイルはブラウザで開く必要があり、
xdg-open image.png
ファイルは画像ビューアなどで開く必要があります。
答え3
人々はしばしばこれをxdg-open
エミュレーション機能と呼んでいますが、open
macOSはopen
1. stdout / stedrrから何もリダイレクトせずに2.ターミナルで実行したいものを切り離すという点で少し異なります(ほとんどの場合、ユーザーがやっていること)。 GUIを起動するときに必要なもの)アプリケーションを使用すると端末がありません)
この問題を解決するために、いくつかの標準GNUツールを使用して適切な対応するツールを考えました(構文はFishシェルですが、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
}
答え4
毎日使用する私のソリューションはalias
for xdg-open
。
これを次の項目に入れてください~/.bashrc
。
alias open='xdg-open '
その後、シェルを閉じて再起動するか、source ~/.bashrc
。
このコマンドを使用して、.pngから.jpg、.docx、.pdf、.txtまですべてのファイルを開くことができます。