この質問をどのように表現するかはわかりませんが、基本的に仮想vagrant
マシンを起動してから、次のようにsshを実行するなどのコマンドを実行することがよくあります。
vagrant up && vagrant ssh
vagrant
関数やスクリプトを直接書くだけでなく、コマンドの2番目の部分を「再利用」する方法はありますか?
答え1
(t)csh
、bash
またはzsh
歴史があなたを拡大するにつれてできる書く:
vagrant up && !#:0 ssh
しかし、真剣に、あなたはそうではありません
答え2
次のことができます。
eval vagrant\ {'up &&',ssh}
しかし、それでも簡単になるわけではありません。
いつでも関数を作成できます。
doall() {
cmd=$1; shift
for arg do
"$cmd" "$arg" || return
done
}
それから:
doall vagrant up ssh
答え3
直接的な答えではありませんが、2つの選択肢を見る価値があります(説明するには多すぎます)。
ニックネーム
コマンドを再利用する場合は、コマンドにエイリアスを追加できます。
~/.bashrc
alias vassh="vagrant up && vagrant ssh"
コマンドライン履歴
Ctrl+R前のコマンドを検索できます。変数を使用するよりもはるかに高速です。
答え4
v=vagrant; $v up && $v ssh
これはあなたが探しているものに近いかもしれません。
bash
以下は、現在複合コマンドのコマンド位置にある最初の単語を印刷する関数inです。
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