Intereting Posts
Локальные диски, обнаруженные как многолучевое устройство Что касается удаления первых 327 строк во всех файлах .dat в папке Выделение с регулярным выражением в сеансе ssh? Диск ввода / вывода и средний пик нагрузки один раз в час Сообщение редактора Vi – преобразование входной кодировки не поддерживается Монитор Debian вышел из диапазона после установки Сгенерируйте порядковый номер для каждой строки в конце. Изменено. Может ли кто-нибудь помочь и предложить на этом Могу ли я указать перенаправленный вход перед составной командой? Создание загрузочного USB-накопителя с установщиком NetBSD в Linux Игнорировать первые строки x при выполнении сценария? Скрытие данных в файловых системах Есть ли версия Linux, которая может быть запущена в 2015 году Kindle Fire Rsync dry-run statistics – Различные статистические данные после выполнения команд «cp» и «rsync» Почему команда чтения не принимает интерактивные параметры при запуске sh? Как я могу управлять существующей удаленной оболочкой?

Могу ли я ссылаться на команду перед '&&' после '&&'

Не уверен, как еще фразовать вопрос, но в основном, я часто нахожу себя в команде, такой как vagrant чтобы вызвать виртуальную машину, а затем ssh в нее, как показано ниже:

 vagrant up && vagrant ssh 

За исключением написания моей собственной функции или скрипта, существует ли способ «повторно использовать vagrant часть во второй части команды?

С расширением (t)csh , bash или zsh вы можете написать:

 vagrant up && !#:0 ssh 

Но, серьезно, вы бы не

Вы можете сделать:

 eval vagrant\ {'up &&',ssh} 

но это не облегчило бы.

Вы всегда можете сделать функцию

 doall() { cmd=$1; shift for arg do "$cmd" "$arg" || return done } 

А потом:

 doall vagrant up ssh 

Не прямой ответ, но, возможно, стоит рассмотреть две альтернативы (слишком много для комментария):

  1. кличка

    Если вы повторно используете команду, вы можете поместить псевдоним в свой ~/.bashrc

     alias vassh="vagrant up && vagrant ssh" 
  2. История командной строки

    Ctrl + R позволяет вам искать ваши предыдущие команды. Это будет намного быстрее, чем использование переменных …

  v=vagrant; $v up && $v ssh 

Это может быть близко к тому, что вы ищете.

Вот функция, которая – в bash – печатает первое слово в командном положении для текущей составной команды:

 rc() { $(set -f; unset IFS set -- $(history 1) IFS="(){};|'\\\"&#" set \ $2;IFS=\ ;set -- $* printf %s "$1") "$@"; } 

С этим вы могли бы сделать:

 vagrant up && rc ssh 

Пример:

 echo up && rc ssh 

ВЫВОД

 up ssh 

или…

 set -x (echo);rc 'times two' 

ВЫВОД

 + echo + rc 'times two' ++ set -f ++ unset IFS +++ history 1 ++ set -- 549 '(echo);rc' ''\''times' 'two'\''' ++ IFS='(){};|'\''\"&#' ++ set ' ' echo '' rc ++ IFS=' ' ++ set -- echo rc ++ printf %s echo + echo 'times two' times two