Я начинаю экспериментировать с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
Можно создать псевдоним для этого. Мне нравится detach
over, 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-адресов, чтобы оболочка не пыталась их интерпретировать.