выберите позиционный аргумент в xargs

Я хочу открыть место, где установлен 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
1
задан 28 May 2021 в 04:04

3 ответа

Просто отфильтруйте вывод перед передачей его в 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 , что бессмысленно, поскольку нет графической программы, которая может с пользой открыть двоичный файл, не говоря уже о двоичном файле, который является языком сценариев.

6
ответ дан 28 July 2021 в 11:35

Назначение xargs - многократно передавать каждый элемент ввода команде. Он не «выбирает» из входов. Если вы хотите это сделать, вам следует использовать другие инструменты, такие как head, tail, grep. Например:

whereis python | fmt -1 | tail -n +3 | head -1
2
ответ дан 28 July 2021 в 11:35

Я не думаю, что вы можете сделать это в xargs - но вы можете сделать это в shell:

whereis python | xargs sh -c 'echo "$3"' sh

Однако ваш конкретный случай использования не имеет смысла, как указал vanadium

2
ответ дан 28 July 2021 в 11:35

Другие вопросы по тегам:

Похожие вопросы: