`open` для открытия файла в приложении

Почему я не могу запустить эту команду в моем терминале:

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 

Основная цель open команды OS X – открыть файл в соответствующем приложении. Это эквивалентно тому, что на современных организациях, отличных от OSX, является xdg xdg-open .

 xdg-open index.html 

xdg-open не имеет эквивалента open -a OSX для открытия файла в конкретном приложении. Это связано с тем, что обычный способ открыть файл в приложении – просто ввести имя приложения, за которым следует имя файла. Точнее, вам нужно ввести имя исполняемой программы, которая реализует приложение.

 sublime_text index.html 

Linux, как и другие Unix-системы (но не, насколько я знаю, не-Unixy части OS X) управляет программным обеспечением, отслеживая его с помощью диспетчера пакетов и помещая отдельные файлы там, где они используются . Например, все исполняемые программы находятся в небольшом наборе каталогов, и все эти каталоги перечислены в переменной PATH ; sublime_text ищет файл под названием sublime_text в каталогах, перечисленных в PATH . OS X требует дополнительного уровня косвенности через open -a для обработки приложений, которые распаковываются в одном дереве каталогов и регистрируются в базе данных приложений. В Linux нет базы данных приложений, но она организована таким образом, что она не нужна.

Если запуск командной sublime_text не работает для вас, то Sublime Text не установлен правильно. Я никогда не использовал его, и, по-видимому, он поставляется как tar-архив, а не как дистрибутив (например, deb или rpm), поэтому вполне возможно, что вам нужно сделать дополнительный шаг установки. На самом деле создатели Sublime Text делают это автоматически, но если они этого не сделали, вы можете сделать это сами, выполнив команду

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

Замените по пути, где, sublime_text выполняется исполняемый файл sublime_text .

open команда, с которой вы столкнулись, является более старым именем для команды openvt (некоторые дистрибутивы Linux включают ее только под именем openvt ). Команда openvt создает новую виртуальную консоль , которая может выполняться только root и не используется очень часто в этом столетии, поскольку большинство людей работают только в графической среде окна.

Вы не упоминаете операционную систему, которую используете.

В некоторых дистрибутивах Linux команда open является символической ссылкой на команду openvt которая открывает двоичный файл в новой виртуальной консоли. Это явно не то, что вы хотите. Ваши сообщения об ошибках действительно указывают на то, что вы вызывали команду openvt . Эта команда ожидает двоичный код программы (исполняемый файл) в качестве аргумента.

Я предполагаю, что вы имеете в виду xdg-open который, в отличие от openvt , не ожидает исполняемого файла в качестве аргумента, а файл, связанный с программой, и открывает файл с программой. Вы можете передавать файлы и URL-адреса в качестве аргументов.

Поэтому xdg-open index.html должен открыть файл в вашем браузере, xdg-open image.png должен открыть файл в вашем средстве просмотра изображений и т. Д.