질문을 표현하는 다른 방법을 모르지만 기본적으로 vagrant
VM을 불러 와 같은 명령을 실행 한 다음 아래처럼 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
답변
직접적인 대답은 아니지만 두 가지 대안을 살펴볼 가치가 있습니다.
-
별명
명령을 반복해서 사용하면 별칭을
~/.bashrc
alias vassh="vagrant up && vagrant ssh"
-
커맨드 라인 히스토리
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