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

Кажется, что ядро остановилось как тогда, когда это приходит к начальной загрузке карты памяти, еще не сообщил об этом о существовании. Интересно, что делает Вашу конфигурацию, делают, но она не делает работ и не обеспечила название правильного устройства ядра FreeBSD начальной загрузки.

Необходимо ли спросить ядро о доступном вводе дисков'?' как подсказка предполагает. После этого необходимо ввести в корректной корневой спецификации файловой системы для корневого раздела. Это должно быть что-то как ufs:/dev/da0s1a в зависимости от того, как Вы действительно делили свою карту памяти.

При нахождении корректного пути диска, необходимо изменить grub.conf с тем путем. Также обратите внимание, что это должно прочитать 'FreeBSD', не 'kFreeBSD', поскольку Ваша установка просто тихо проигнорирована.

13
07.05.2013, 22:24
8 ответов

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

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

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

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

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

11
27.01.2020, 19:52
  • 1
    Это работает отлично. Я надеялся иметь простой псевдоним к к open, (т.е. открытый ='xdg-open'), там способ получить функциональность xdg-open <url> & не используя функцию оболочки? –  Nick Tomlin 07.05.2013, 22:27
  • 2
    @NickTomlin Не насколько я знаю, нет, но что Вы получили против функций? Как Вы видите в моем обновленном ответе, это почти столь же просто как псевдоним. –  terdon♦ 07.05.2013, 23:07
  • 3
    Не особая предвзятость, я надеялся избежать функции, так как я пытаюсь использовать (и повторное использование), тот же псевдоним и для Mac OS и для *отклоняет разновидности. –  Nick Tomlin 07.05.2013, 23:20
  • 4
    Никакая причина, почему Вы не могли. Функции зависят от оболочки, пока Вы используете, избивают все рассматриваемые системы, она должна работать отлично. –  terdon♦ 07.05.2013, 23:23
  • 5
    Это работает из поля над Fedora 20 также. –  Cristian Ciupitu 30.07.2014, 21:47

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

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

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

7
27.01.2020, 19:52
  • 1
    Увы, detach кажется, не существует в моем дистрибутиве. nohup запускает процесс, но все еще занимает окно терминала. –  Nick Tomlin 07.05.2013, 22:25
  • 2
    detach не находится в моем дистрибутиве также; но Python может обработать открытие URL и отсоединение: python -m webbrowser -t "http://example.com". Это должно работать out-of-the поле над почти всеми несколько недавними дистрибутивами Linux. –  Krets 10.07.2017, 14:21

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

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

Я использую эту технику, чтобы ставить в очередь magnet://URL в мой Разрядный клиент Потока Vuze.

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

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

0
27.01.2020, 19:52
  • 1
    Это все еще поддерживает процесс в рабочем состоянии в текущем окне терминала. Сообщите мне, должен ли я разъяснить свой вопрос. –  Nick Tomlin 07.05.2013, 22:29
  • 2
    Да, если Вы хотите, чтобы это пошло, фон сразу затем просто поместил его в фон с амперсандом "и". Разве ответ того @terdon, как говорят, не делает? –  slm♦ 07.05.2013, 22:37
  • 3
    Проблема здесь не xdg-открыта, см. ответ @Gilles, он объясняет, почему xdg-открытый держится, это - GUI, который Вы отправляете URL, к которому заставляет xdg-открытый ожидать. –  slm♦ 07.05.2013, 22:47
  • 4
    В какой браузер Вы отправляете URL? Есть ли диалоговое окно или что-либо еще выталкиваемое при отправке URL w/ xdg-open? Кажется, что несколько из отвечающих сторон здесь указали, что нормальное поведение состоит в том, что управление возвращается к терминалу после некоторого промежутка времени. –  slm♦ 07.05.2013, 22:52
  • 5
    благодарит за разъяснение. Я рассмотрел ответы, и я понимаю это лучше теперь. Браузер является iceweasal. –  Nick Tomlin 07.05.2013, 22:55

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

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

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

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

4
27.01.2020, 19:52
  • 1
    , как такие приложения проводят единственную политику экземпляра? DBus является одним способом, о котором я знаю, но есть ли 'xdg' способ реализовать это? –  PnotNP 16.03.2016, 06:17
  • 2
    @NulledPointer, сообщениями окна X11, D-шиной, …, я предполагаю D-шину, является “стандартный” Freedesktop путь, но я не знаю, существует ли формальная спецификация для этого. –  Gilles 'SO- stop being evil' 16.03.2016, 12:10
  • 3
    В моей системе Ubuntu 16.04, xdg-открытой всегда сразу, возвращается. Для моего текущего приложения я на самом деле предпочел бы, чтобы оно заблокировалось. То, где делает Ваш "xdg-открытый, ожидает программы для окончания. Это дизайном". информация прибывает из? –  Charl Botha 24.02.2017, 13:10
  • 4
    @CharlBotha xdg-open возвраты сразу (я могу подтвердить, что на Ubuntu 16.04), но программа она вызывает, может переместиться в фон. Например, в моей системе, xdg-open вызывает файлы Evince for PDF; evince foo.pdf блоки, пока Вы не закрываете файл PDF, если PDF не является уже открытым, в этом случае вторым evince процесс, запущенный xdg-open фокусирует существующий экземпляр и выходы. xdg-open не имеет никакого контроля над этим, если нет способ заставить программу сохранить рабочий процесс. –  Gilles 'SO- stop being evil' 24.02.2017, 15:07

Если вам нужно открыть веб-страницы из командной строки (цикла), вы можете просто открыть браузер перед запуском скрипта.

В этом случае он не ждет закрытия браузера после первой ссылки, а открывает их все в новых вкладках.

0
27.01.2020, 19:52

Как и сегодня, ни один из этих вариантов мне не помог. Я прекрасно знаю, что ОП сказал: «Используйте xdg -open», извините заранее.

Я закончил тем, что сделал мертвый -простой chrome https://google.es --new-window || chromium https://google.es --new-window || firefox https://google.es.

Если у вас нет ни одного из этих 3-х браузеров, вы можете использовать любой из них в нужном вам порядке.

Примечание. :Firefox открыл новое окно, ничего не добавив. Case у вас не работает плавно, используйте firefox https://google.es -new-instance -new-window. Обратите внимание, что это только один -для флагов Firefox.

0
27.01.2020, 19:52

disown — правильная команда для этого.

Для этого я использую 2 функции, чтобы текст был более читабельным.

f_x()
{
   xdg-open "$1" &
   disown
}

x()
{
   f_x "$*" > /dev/null 2>&1
}
0
27.01.2020, 19:52

Объединив ответ тердона и обсуждение Дэна Д.nohupя создал функцию, которая делает именно то, что я хочу:

  1. Открывает файл в выбранном приложении без какой-либо записи в терминал.
  2. Отсоединяет процесс, чтобы можно было закрыть окно терминала.
  3. Не записывает в терминал какие-либо ошибки, выдаваемые приложением.

Я добавил это в свой .bashrc/.zshrcфайл:

function open () {
  nohup xdg-open "$*" > /dev/null 2>&1
}

Для объяснения /dev/null 2>&1см. это обсуждение скрытия stdoutиstderr.

1
27.01.2020, 19:52

Теги

Похожие вопросы