後で同じコマンドで再利用できるように、コマンドの一部に名前を付けることはできますか?

後で同じコマンドで再利用できるように、コマンドの一部に名前を付けることはできますか?

fromからtolongfileロインファイルを名前に移動するには、次のようにします。/longpath//longpath/morepath/

mv (/longpath)/(longfile) $1/morepath/$2

つまり、後で同じ入力で再利用できるように、入力の特定の部分を覚えておく必要があることをbashに通知できますか? (上記の例では、角かっこを束ねて動作する仮想Rememberコマンドと、$グループの内容を挿入する仮想再利用コマンドを使用しています)

答え1

あなたできるこれを行う:

mv /longpath/longfile !#:1:h/morepath/

バラよりhttps://www.gnu.org/software/bash/manual/bashref.html#History-Interaction

  • !#現在のコマンドです
  • :1コマンドの最初のパラメーター。
  • :hそれは「頭」である - 考えdirname
  • /morepath/頭に貼る
  • 同じデフォルト名を保持するようにファイルをディレクトリに移動します。

たとえば、拡張子「.txt」を追加するなど、「長いファイル」の名前を変更したい場合は、次のようにします。

mv /longpath/longfile !#:1:h/morepath/!#:1:t.txt

個人的に私はマウスを使って切り取り、貼り付けます。実際、私は!!私よりも!$複雑なものを見たことがありません。!!:gs/foo/bar/

答え2

中かっこ拡張を使用してこれを行うこともできます。

mv /longpath/{,morepath/}longfile

シェルはそれを拡張して、mvコマンドが次のように表示されるようにします。

mv /longpath/longfile /longpath/morepath/longfile

答え3

コマンドラインでより効率的に入力するには、次を参照してください。さまざまな読書ラインショートカット効果があるReadlineはすでにシェルに組み込まれています。特別な場合には、部分行を引っ張ったり削除したり、readlinekilliringから再度呼び出すことができます。

また、EDITOR環境変数をお気に入りのエディタに設定すると、Ctrl-X、Ctrl-Eは現在のコマンドラインをすべてのエディタ権限で変更できるエディタウィンドウにコピーします。完了したら、エディタを保存/終了すると、その行がシェルで実行されます。

答え4

お客様がリクエストする特定のケースでは、サブシェルを使用することもできます。

mv (/longpath)/(longfile) $1/morepath/$2

~になる

( cd /longpath; mv longfile morepath/ )

また、使用しているシェルの現在の作業ディレクトリを維持してください。

これは以下と全く変わりません。ワイルドカードのシェル拡張の使用に関する提案ただし、単一の引数で簡単なものを簡単にサポートできるよりも複雑な場合に使用できます。

関連情報