Quero abrir o local onde o python está instalado. Para verificar o local que usei.
whereis python | xargs -n 1 echo
saída :
/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
Embora eu possa copiar o local do xdg, mas não quero fazer isso. Quero usar o operador pipe e abrir o local usando xdg-open
. No entanto, há um problema. Como seleciono o argumento da lista acima. Suponha que eu queira selecionar o terceiro local. Há alguma forma de fazer isso.
Pensei em seguir mas não funcionou.
whereis python | xargs $3 xdg-open
Responder1
Basta filtrar a saída antes de passá-la para xargs:
whereis python | awk '{print $3}' | xargs xdg-open
Esse awk
comando imprimirá apenas a terceira palavra, então é tudo para o qual você passará xargs
. É claro que usar xargs
é inútil quando você tem apenas um argumento. Talvez você queira isso em vez disso?
xdg-open $(whereis python | awk '{print $3}')
Ou simplesmente use which
which retornará oprimeiroocorrência da string de pesquisa em seu $PATH
:
xdg-open $(which python)
Observe que você não pode abrir python
com xdg-open
, isso não faz sentido, pois não existe nenhum programa gráfico que possa abrir um binário de forma útil, muito menos um binário que seja uma linguagem de script.
Responder2
Eu não acho que você pode fazer issoem xargs- mas você poderia fazer isso com um shell:
whereis python | xargs sh -c 'echo "$3"' sh
No entanto, seu caso de uso específico não faz sentido, poisapontado pelo vanádio
Responder3
O objetivo do xargs é fornecer repetidamente cada item de entrada para um comando. Ele não "seleciona" as entradas. Se quiser fazer isso, você deve usar outras ferramentas como head, tail, grep. Por exemplo:
whereis python | fmt -1 | tail -n +3 | head -1