Используйте xdg-open для открытия URL-адреса с новым процессом

Используйте xdg-open для открытия URL-адреса с новым процессом

Я начинаю экспериментировать сCrunchbang(который основан на Debian и используеттерминатор) как среды веб-разработки, и одна из проблем, с которой я борюсь, — это поведение xdg-open. Я работаю с OSX, поэтому простите меня, если этот вопрос покажется вам сложным.

Я хотел бы иметь возможность открывать URL с помощью xdg-open http://www.google.comи затем продолжать использовать то же самое окно терминала для работы (так openработает OSX). Прямо сейчас использование xdg-openзанимает текущую вкладку/сеанс, пока я не закрою окно браузера или не завершу вручную все с помощью ctrl + c. Я бы предпочел, чтобы он запускал новый процесс, таким образом я могу открыть URL, обратиться к данным на странице и использовать его в той же вкладке/окне без необходимости открывать дополнительную.

решение1

Странно, на моем Debian он работает из коробки. Попробуйте запустить его в фоновом режиме:

xdg-open http://www.google.com &

Вы можете превратить это в функцию, добавив следующие строки в свой ~/.bashrcфайл:

function open () {
    xdg-open "$*" &
}

Затем вы можете просто запустить его open http://www.google.com, и он будет работать в фоновом режиме.

решение2

Если вы хотите отсоединить процесс от текущей оболочки, а не запускать его как фоновое задание с помощью xdg-open http://www.google.com &, мне нравитсяdetachполезность:

detach xdg-open http://www.google.com

Можно создать псевдоним для этого. Мне нравится detachover, nohupтак как по умолчанию закрывает stdin, stdout и stderr, поэтому его вызов чище.

решение3

xdg-openждет завершения программы. Это сделано намеренно. Если программа является программой текстового режима, она должна оставаться на переднем плане в терминале. Даже если программа является программой с графическим интерфейсом, это поведение полезно в случае, если она xdg-openиспользуется из скрипта, и скрипт хочет выполнить что-то после редактирования файла (например, отправить новую версию куда-то или иным образом сделать что-то с новой версией).

Если вы не хотите ждать, запустите xdg-openв фоновом режиме. Вы можете запустить любую команду оболочки в фоновом режиме, поставив амперсанд в конце.

xdg-open http://www.google.com &

С некоторыми программами xdg-openнемедленно возвращается. На самом деле происходит так, что программа, которая xdg-openвызывает, немедленно возвращается. Обычно это происходит с программами с графическим интерфейсом, которые открывают все файлы в одном экземпляре: когда вы запускаете их во второй раз, они отправляют сообщение запущенному экземпляру, чтобы сообщить ему открыть файл и немедленно выйти.

решение4

Попробуй это:

DISPLAY=:0.0; xdg-open '<url>'

Я использую эту технику для добавления magnet:// URL-адресов в очередь моего Bit Torrent-клиента Vuze.

ssh someserver "DISPLAY=:0.0; xdg-open 'http://www.google.com/'"

Одинарные кавычки помогают защитить содержимое URL-адресов, чтобы оболочка не пыталась их интерпретировать.

Связанный контент