Я хочу открыть место, где установлен python . Чтобы проверить местоположение, я использовал.
whereis python | xargs -n 1 echo
вывод:
/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
Хотя я могу скопировать за пределы местоположения для xdg, но я не хочу этого делать. Я хочу использовать оператор конвейера и открыть местоположение с помощью xdg-open
. Однако есть одна проблема. Как выбрать аргумент из списка выше. Предположим, я хочу выбрать 3-е место. Есть ли способ это сделать.
Я думал о подписке, но это не сработало.
whereis python | xargs $3 xdg-open
Просто отфильтруйте вывод перед передачей его в xargs:
whereis python | awk '{print $3}' | xargs xdg-open
Эта команда awk
напечатает только третье слово, так что это все, что вам нужно перейти к xargs
. Конечно, использование xargs
бессмысленно, если у вас есть только один аргумент. Возможно, вы хотите это вместо этого?
xdg-open $(whereis python | awk '{print $3}')
Или просто используйте , который
вернет первое вхождение строки поиска в вашем $ PATH
:
xdg-open $(which python)
Обратите внимание, что вы не можете открыть python
с помощью xdg-open
, что бессмысленно, поскольку нет графической программы, которая может с пользой открыть двоичный файл, не говоря уже о двоичном файле, который является языком сценариев.
Назначение xargs - многократно передавать каждый элемент ввода команде. Он не «выбирает» из входов. Если вы хотите это сделать, вам следует использовать другие инструменты, такие как head, tail, grep. Например:
whereis python | fmt -1 | tail -n +3 | head -1
Я не думаю, что вы можете сделать это в xargs - но вы можете сделать это в shell:
whereis python | xargs sh -c 'echo "$3"' sh
Однако ваш конкретный случай использования не имеет смысла, как указал vanadium