Estoy empezando a experimentar conCrunchbang(que está basado en Debian y utilizaterminador) como entorno de desarrollo web, y una de las cosas con las que tengo problemas es el comportamiento de xdg-open
. Vengo de una experiencia en OSX, así que perdónenme si esta pregunta parece densa.
Me gustaría poder abrir una URL xdg-open http://www.google.com
y luego continuar usando la misma ventana de terminal para trabajar (así es como open
funciona en OSX). En este momento, usar xdg-open
ocupa la pestaña/sesión actual hasta que cierro la ventana del navegador o finalizo manualmente las cosas con ctrl + c
. Preferiría que iniciara un nuevo proceso, de esa manera puedo abrir una URL, consultar los datos de la página y usarla en la misma pestaña/ventana sin necesidad de abrir una adicional.
Respuesta1
Es extraño, funciona así desde el primer momento en mi Debian. Intente ejecutarlo en segundo plano:
xdg-open http://www.google.com &
Puede convertir esto en una función agregando estas líneas a su ~/.bashrc
archivo:
function open () {
xdg-open "$*" &
}
Luego puede simplemente ejecutarlo open http://www.google.com
y se ejecutará en segundo plano.
Respuesta2
Si desea desconectar el proceso del shell actual en lugar de iniciarlo como un trabajo en segundo plano xdg-open http://www.google.com &
, me gusta eldetach
utilidad:
detach xdg-open http://www.google.com
Se podría crear un alias para esto. Me gusta detach
porque nohup
cierra stdin stdout y stderr de forma predeterminada para que su invocación sea más limpia.
Respuesta3
xdg-open
espera a que termine el programa. Esto es por diseño. Si el programa es un programa en modo texto, debe permanecer en primer plano en la terminal. Incluso si el programa es GUI, este comportamiento es útil en caso de que xdg-open
se use desde un script y el script quiera realizar algo después de que el archivo haya sido editado (por ejemplo, enviar la nueva versión a algún lugar o crear algo con la nueva versión).
Si no quieres esperar, ejecútalo xdg-open
en segundo plano. Puede ejecutar cualquier comando de shell en segundo plano colocando un signo comercial al final.
xdg-open http://www.google.com &
Con algunos programas, xdg-open
regresa inmediatamente. En realidad lo que sucede es que el programa que xdg-open
invoca regresa inmediatamente. Esto suele suceder con los programas GUI que abren todos los archivos en una sola instancia: cuando los inicia por segunda vez, envían un mensaje a la instancia en ejecución para indicarle que abra el archivo y salga inmediatamente.
Respuesta4
Prueba esto:
DISPLAY=:0.0; xdg-open '<url>'
Utilizo esta técnica para poner en cola las URL magnet:// en mi cliente Bit Torrent Vuze.
ssh someserver "DISPLAY=:0.0; xdg-open 'http://www.google.com/'"
Las comillas simples ayudan a proteger el contenido de las URL para que el shell no intente interpretarlas.