Почему я не могу запустить эту команду в моем терминале:
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
command-line
file-opening
Эдгар Оливейра
источник
источник
xdg-open
который должен открыть файл в вашем браузере. Командаopen
является ссылкой наopenvt
команду и открывает двоичный файл в новой виртуальной консоли. Это явно не то, что вы хотите.open
Linux есть какая-либо команда.open
Linux есть команда, связанная сopenvt
; сообщения об ошибках в вопросе соответствуют этой ситуации.xdg-open <file>
и он должен открыть файл с соответствующей программой.Ответы:
Основная цель команды OS X
open
- открыть файл в связанном приложении. Эквивалент этого на современных не OSX-юнитах естьxdg-open
.xdg-open
не имеет эквивалента OSXopen -a
для открытия файла в определенном приложении. Это связано с тем, что обычный способ открыть файл в приложении - просто ввести имя приложения и имя файла. Точнее, вам нужно ввести имя исполняемой программы, которая реализует приложение.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, чтобы сделать это автоматически, но если они этого не сделали, вы, вероятно, можете сделать это самостоятельно, выполнив командуЗамените
…
на путь, гдеsublime_text
исполняемый файл, конечно.Команда, с которой
open
вы столкнулись, является более старым именемopenvt
команды (некоторые дистрибутивы Linux включают его только под именемopenvt
). Командаopenvt
создает новую виртуальную консоль , которая может быть выполнена только пользователем root и редко используется в этом столетии, поскольку большинство людей когда-либо работают только в графической оконной среде.источник
Вы не упоминаете операционную систему, которую используете.
В некоторых дистрибутивах Linux
open
команда является символической ссылкой наopenvt
команду, которая открывает двоичный файл в новой виртуальной консоли. Это явно не то, что вы хотите. Ваши сообщения об ошибках действительно указывают, что вы вызвалиopenvt
команду. Эта команда ожидает двоичный файл программы (исполняемый файл) в качестве аргумента.Я предполагаю, что вы имеете в виду,
xdg-open
что, в отличие отopenvt
, не ожидает исполняемый файл в качестве аргумента, а файл, который связан с программой и открывает файл с программой. Вы можете передавать файлы и URL-адреса в качестве аргументов.Поэтому
xdg-open index.html
следует открыть файл в браузере,xdg-open image.png
открыть файл в программе просмотра изображений и т. Д.источник
xdg-open
вызова состоит в том, чтобы вызвать приложение по умолчанию для этого файла. Если вы хотите использовать другую программу, просто позвоните<program> <file>
. Я не вижу проблемы.open index.html -a "Sublime Text" -
Вот почему я говорю «проблемы», потому что если вы используете ,xdg-open
чтобы открыть файл HTML, есть bettern вероятность того, что й файл будет открыт в браузере не в текстовом редакторе , как «Sublime Text»Хотя люди часто называют
xdg-open
эмулирующую функциональностьopen
, macOSopen
немного отличается, потому что он 1. не перенаправляет ничего из stdout / stedrr и 2. отсоединяет все, что вы хотите запустить от терминала (что почти всегда то, что вы хотите при запуске GUI приложения, чтобы у вас не было терминалов, лежащих вокруг)Чтобы решить эту проблему, я придумал правильный эквивалент, используя некоторые стандартные инструменты GNU (синтаксис - «рыбная оболочка», но преобразование в bash тривиально):
Добавлено :
Для тех, кто использует оболочку bash, вот функция:
источник
Мое решение (используется ежедневно) заключается в использовании
alias
дляxdg-open
.Просто поместите это на свой
~/.bashrc
:Затем закройте и перезапустите вашу оболочку или
source ~/.bashrc
.Теперь вы можете открыть любой файл с помощью этой команды ... из .png в .jpg в .docx в .pdf в .txt.
источник