Quiero abrir la ubicación donde está instalado Python. Para comprobar la ubicación que utilicé.
whereis python | xargs -n 1 echo
producción :
/usr/bin/python3.8
/usr/bin/python3.8-config
/usr/bin/python
/usr/lib/python2.7
/usr/lib/python3.8
/usr/lib/python3.9
/etc/python3.8
/usr/local/lib/python3.8
/usr/include/python3.8
Aunque puedo copiar más allá de la ubicación de xdg, no quiero hacerlo. Quiero usar el operador de tubería y abrir la ubicación usando xdg-open
. Sin embargo, hay un problema. ¿Cómo selecciono el argumento de la lista anterior? Supongamos que quiero seleccionar la tercera ubicación. Hay alguna forma de hacerlo.
Pensé en seguir pero no funcionó.
whereis python | xargs $3 xdg-open
Respuesta1
Simplemente filtre la salida antes de pasarla a xargs:
whereis python | awk '{print $3}' | xargs xdg-open
Ese awk
comando solo imprimirá la tercera palabra, así que eso es todo lo que pasará xargs
. Por supuesto, usar xargs
no tiene sentido cuando solo tienes un argumento. ¿Quizás quieras esto en su lugar?
xdg-open $(whereis python | awk '{print $3}')
O simplemente use which
el cual devolverá elprimeroaparición de la cadena de búsqueda en su $PATH
:
xdg-open $(which python)
Tenga en cuenta que no puede abrir python
con xdg-open
, eso no tiene sentido ya que no existe ningún programa gráfico que pueda abrir un binario de manera útil, y mucho menos un binario que sea un lenguaje de secuencias de comandos.
Respuesta2
No creo que puedas hacerloen xargs- pero podrías hacerlo con un shell:
whereis python | xargs sh -c 'echo "$3"' sh
Sin embargo, su caso de uso particular realmente no tiene sentido, ya queseñalado por el vanadio
Respuesta3
El propósito de xargs es dar cada elemento de entrada a un comando repetidamente. No "selecciona" entre las entradas. Si quieres hacer eso, debes usar otras herramientas como head, tail, grep. Por ejemplo:
whereis python | fmt -1 | tail -n +3 | head -1