Estoy empezando a experimentar con Crunchbang (que se basa en Debian y usa Terminator ) como un entorno de desarrollo web, y una de las cosas con las que estoy luchando es el comportamiento xdg-open. Vengo de un entorno OSX, así que perdóname si esta pregunta resulta ser densa.
Me gustaría poder abrir una url xdg-open http://www.google.comy luego seguir usando la misma ventana de terminal para trabajar (así es como openfunciona en OSX). En este momento, el uso xdg-openocupa la pestaña / sesión actual hasta que cierre la ventana del navegador, o finalice manualmente las cosas con ctrl + c. Prefiero que comience un nuevo proceso, de esa manera puedo abrir una URL, consultar los datos en la página y usarla en la misma pestaña / ventana sin necesidad de abrir una adicional.
fuente

Respuestas:
Extraño, funciona así de fábrica en mi Debian. Intenta ejecutarlo en segundo plano:
Puede convertir esto en una función agregando estas líneas a su
~/.bashrcarchivo:Luego puede simplemente ejecutar
open http://www.google.comy se ejecutará en segundo plano.fuente
open, (ie open = 'xdg-open') ¿hay alguna manera de obtener la funcionalidadxdg-open <url> &sin usar una función de shell?Si desea separar el proceso del shell actual en lugar de comenzarlo como un trabajo en segundo plano
xdg-open http://www.google.com &, me gusta ladetachutilidad:Se podría crear un alias para esto. Me gusta
detachmásnohupcomo se cierra stdin stdout y stderr de forma predeterminada para su invocación es más limpio.fuente
detachno parece existir en mi distribución.nohupinicia el proceso, pero aún ocupa la ventana de terminal.detachtampoco está en mi distribución; pero pitón puede manejar la apertura de URLs y separar:python -m webbrowser -t "http://example.com". Esto debería funcionar de forma inmediata en casi todas las distribuciones de Linux algo recientes.detachni siquiera está en el AUR, resultó fácil de instalar desde la fuente y, además, fue el único programa que logró lo que quería. (las alternativas enumeradas aquí y en eldetachsitio web no permiten cerrar el shell mientras sexdg-openestá ejecutando, o al menosdetachno hicieron que mi shell se quejara un poco)xdg-openespera a que termine el programa. Esto es por diseño. Si el programa es un modo de texto, debe permanecer en primer plano en el terminal. Incluso si el programa es una GUI, este comportamiento es útil en caso de quexdg-opense use desde un script y el script quiera realizar algo después de que el archivo haya sido editado (por ejemplo, envíe la nueva versión a algún lugar o haga algo con la nueva versión).Si no quieres esperar, corre
xdg-openen segundo plano. Puede ejecutar cualquier comando de shell en segundo plano colocando un ampersand al final.Con algunos programas,
xdg-openregresa de inmediato. Lo que sucede es que el programa quexdg-openinvoca regresa de inmediato. 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 salgan inmediatamente.fuente
xdg-openregresa de inmediato (puedo confirmar eso en Ubuntu 16.04), pero el programa que invoca puede pasar a un segundo plano. Por ejemplo, en mi sistema,xdg-openinvoca Evince para archivos PDF;evince foo.pdfbloquea hasta que cierre el archivo PDF, a menos que el PDF ya esté abierto, en cuyo caso el segundoevinceproceso iniciado porxdg-openenfoca la instancia existente y sale.xdg-openno tiene control sobre eso, a menos que haya una manera de hacer que el programa mantenga un proceso en ejecución.Al combinar la respuesta de terdon y la discusión de Dan D. sobre
nohupyo, creé una función que hace exactamente lo que quiero:Agregué esto a mi
.bashrc/.zshrcarchivo:Para una explicación de
/dev/null 2>&1ver esta discusión sobre escondersestdoutystderr.fuente
Prueba esto:
Utilizo esta técnica para poner en cola magnet: // URL en mi cliente de Bit Torrent Vuze.
Las comillas simples ayudan a proteger el contenido de las URL para que el shell no intente interpretarlas.
fuente
xdg-open? Parece que varios de los que respondieron aquí han indicado que el comportamiento normal es que el control se devuelve al terminal después de un período de tiempo.Si necesita abrir páginas web desde la línea de comandos (bucle), puede abrir el navegador antes de iniciar el script.
En este caso, no espera a que se cierre el navegador después del primer enlace, sino que los abre a todos en nuevas pestañas.
fuente
Como hoy, ninguna de esas opciones funcionó para mí. Soy totalmente consciente de que el OP dijo "use xdg-open", lo siento de antemano.
Terminé haciendo un simple muerto
chrome https://google.es --new-window || chromium https://google.es --new-window || firefox https://google.es.Si no tiene ninguno de esos 3 navegadores, no dude en usar los correctos con su preferencia de orden.
Nota: Firefox abrió una nueva ventana sin agregar nada. El estuche no funciona mal para ti, úsalo
firefox https://google.es -new-instance -new-window. Tenga en cuenta que es solo uno-para las banderas de Firefox.fuente
Desown es el comando correcto para esto.
Utilizo 2 funciones para esto, para mantenerlo más legible.
fuente
disownno evita que se envíen errores al terminal.