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

С помощью lxc list --format=json вы получаете документ JSON с большим количеством информации обо всех доступных контейнерах.

lxc list mycontainer --format=json ограничивает это контейнерами, имена которых начинаются со строки mycontainer (используйте 'mycontainer$' для точного соответствия).

Разбор JSON, как правило, безопаснее, чем разбор текстового документа почти в произвольной форме.

Чтобы извлечь имена снимков , используя jq :

$ lxc list mycontainer --format=json | jq -r '.[].snapshots[].name'

Это даст вам список, подобный

2017-04-29-mycontainer
2017-04-30-mycontainer
2017-05-01-mycontainer

Чтобы поместить это в массив в bash:

snaps=( $( lxc list mycontainer --format=json | jq -r '.[].snapshots[].name' ) )

Просто имейте в виду, что если вы сделаете это, имена снимков со специальными для оболочки символами (*?[) приведут к подстановке имен файлов. Вы можете предотвратить это с помощью set -f перед командой (и set +f после).

Если вы просто хотите перебрать снимки:

lxc list mycontainer --format=json | jq -r '.[].snapshots[].name' |
while read snap; do
   # do something with "$snap"
done

0
19.01.2017, 01:32
1 ответ

Выясните, где установлено новое eclipse , и введите не просто eclipse , а полный путь: / где / the / new / eclipse / is / installed / bin / eclipse

Если это новое затмение станет вашим первым выбором, вы можете определить псевдоним в своих файлах запуска (например, .profile для sh ):

alias eclipse=/where/the/new/eclipse/is/installed/bin/eclipse

Теперь, если вы введете eclipse , будет запущено новое. Чтобы выполнить старую, вам нужно будет указать ее полный путь.

Вы даже можете определить два псевдонима, по одному для каждого eclipse :

alias eprolog=/where/the/new/eclipse/is/installed/bin/eclipse
alias eplatform=/where/the/old/eclipse/is/installed/bin/eclipse

... и ввести либо eprolog , либо eplatform в приглашении оболочки.

5
28.01.2020, 02:16

Теги

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