bashでまだ実行されていない文字列の一部を繰り返すことは可能ですか?

bashでまだ実行されていない文字列の一部を繰り返すことは可能ですか?

同じ行(たとえば、リンク)でコマンドの一部(まだ実行されていない)を繰り返すことができるかどうかを知りたいです。

このコマンドを実行したいとしましょう。

mkdir -p /some/long/dest/path && rsync -azP /some/long/src/path /some/long/dest/path 

次のように入力することは可能ですか?

mkdir -p /some/long/dest/path && rsync -azP /some/long/src/path /path/at/x:2

明らかに、x:2配列のインデックスは最後に実行されたコマンドだから、文字列を一緒にリンクしてコマンドを再利用できるかどうか疑問に思います。x現在の文字列位置です。

ベストアンサー1

行編集を使用してパラメータを取得し、行のmkdir末尾に貼り付けることができます。 (私はvi-styleライン編集を使用するので非常に簡単です。ESCを押して編集モードに入り、そのパスにジャンプし、パスをドラッグして貼り0WW付けます。default -styleライン編集にも同等の機能があるとします。)mkdiryWpemacs

または、

p=/some/long/dest/path; mkdir -p "$p" && rsync -azP /some/long/src/path/ "$p"

それとも対話型セッションなので、mkdir結果を確認してください。検査パス:

mkdir -p /some/long/dest/path
rsync -azP /some/long/src/path/ !$

以前に発生したことがない場合は、最後のコマンドの最後の引数()を!$置き換えることができます。 (他の中から)$にありますman bash。試してみて、どのように進行しているかを確認してください。

date --date tomorrow
echo !$
date --date !$

プロジェクトは最初から参照されますecho !!:0

その主張をどのように引用すべきかわかりません。現在のこのスタイル演算子と一緒にコマンドラインを使用してくださいhistory

おすすめ記事