私が家にいて~/blob
ファイルがある場合~/blob/a_long_directory_name/c/x.x
私は打者を打つことができます。
mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y
最初のパラメータのディレクトリパス(現在のディレクトリではない)を使用して短い内容を入力できるショートカットはありますか?
mv blob/a_long_directory_name/c/x.x $same_dir/y.y
これは$same_dir
パラメータ1のディレクトリを指します。
答え1
bashで利用可能支柱の拡張
mv blob/a_long_directory_name/{c/x.x,evenmore/y.y}
答え2
タイピングの量を最小限に抑えるための最も簡単な方法は、おそらく2段階で行うことです。 CDを適切なディレクトリにコピーして移動します。
コマンドが1つしかない場合は、サブシェルを使用できます。
$ (cd blob/a_long_directory_name/c/ && mv x.x y.y )
つまり、成功時にのみcd
サブシェルにのみ適用され、現在のシェルの作業ディレクトリは変更されません。mv
cd
複数のコマンドがある場合は、ディレクトリスタッキングを使用してください。
$ pushd blob/a_long_directory_name/c/
$ mv x.x y.y
$ mv z.z q.q
$ popd
答え3
シェルのテキスト置換機能を使用できます。では、bash
次の獣を使用できます。
mv blob/a_long_directory_name/c/xx !#:$:gs^c/xx^evenmore/yy
それを破壊する:
!#
これまでに入力された現在の行
:$
n
検討中の文字列の最後の単語を選択するように求められます(この場合)(最初の単語を選択するには数字で置き換えます)。これまでに入力した行の最後の単語が前の単語になります。n
!#
:gs^xx^yy
g
結果の単語に対してグローバル()テキスト置換()を実行し、「xx」を「yy」に置き換えます。パターンで使用できるコマンドの区切り記号。s
^
s
/
この方法は、パス(「xx」)の一部を別の単語(「yy」)に置き換えることができるため、少し一般的です。
最後に、すべての履歴操作と同様に、適切なシェルオプション(たとえば)を設定することをお勧めします~/.bashrc
。この場合
shopt -s histverify
Enterキーを押すと編集された行が表示されるため、編集を続けてエラーを確認できます。
なぜそのような設定を使用するのかはわかりませんが、この場合はうまくいきます。