~/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
のようなものは、param 1のディレクトリを指します。
タイピングの量を最小限に抑えるには、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
Bashでは、 中括弧の展開 を使用できます
mv blob/a_long_directory_name/{c/x.x,evenmore/y.y}
シェルのテキスト置換機能を使用できます。 bash
では、次のような獣を使用できます。
mv blob/a_long_directory_name/c/xx !#:$:gs^c/xx^evenmore/yy
分解するには:
!#
は、これまでに入力された現在の行です
:$
は、検討中の文字列(この場合は!#
)の最後のワード(n
番目のワードを選択するには、n
で置き換える)を選択するよう要求します。これまでに入力した行の最後の単語が前の単語になります。
:gs^xx^yy
は、結果のWordに対してグローバル(g
)テキスト置換(s
)を実行し、「xx」を「yy」に置き換えます。 ^
は、パターンで/
を使用できるようにするs
コマンドの区切り文字です。
この方法では、パスの任意の部分( 'xx')を他のWord( 'yy')に置き換えることができるため、少し一般的です。
最後に、他の履歴操作と同様に、適切なシェルオプションを設定することをお勧めします(例:~/.bashrc
)。この場合
shopt -s histverify
returnキーを押すと編集された行が表示されるので、編集してエラーをチェックできます。
なぜそのような構成を使用するのかはわかりませんが、この場合は機能します。