1つのコマンドでファイルをコピー先フォルダにコピーし、CDをコピー先フォルダにコピーする方法

1つのコマンドでファイルをコピー先フォルダにコピーし、CDをコピー先フォルダにコピーする方法

私の問題を説明するために私がした愚かな方法は次のとおりです。

cp fileFromMyFriend.txt ~/my_first_subfolder/my_second_subfolder/more_subfolders
cd ~/my_first_subfolder/my_second_subfolder/more_subfolders

これらの2行を1つにまとめるショートカットは何ですか? & や などの接続記号を探していません。

代わりに、長いフォルダパスを再入力しないようにしています。

(ここに来る前に、cpのマニュアルページを閲覧し、別のフレーズで質問を検索しました)

ベストアンサー1

対話形式で使用する場合:正常に入力して最初のコマンドを実行します。次に、次のように入力します(または+でcd Space M-.入力できます)。キーボードショートカット(M-.Esc .Alt.M-.yank-last-arg) 前のコマンドの最後の単語を挿入します。

スクリプトの場合:ディレクトリ名を変数に入れます。忘れないで変数を使用するときは二重引用符を使用してください。

target_dir=~/my_first_subfolder/my_second_subfolder/more_subfolders
cp fileFromMyFriend.txt "$target_dir"
cd "$target_dir"

同じコマンドシーケンスを頻繁に使用する場合機能。次のbash関数が呼び出され、cp最後のパラメータを変更するディレクトリとして使用します。最後の引数がディレクトリまたはディレクトリへのシンボリックリンクではない場合、最後の引数を含むディレクトリに変更されます。これはほとんどの用途には機能しますcpが、-tGNUオプションでは機能しませんcp

cp_cd () {
  cp "$@"
  if [ -d "${!#}/." ]; then
    cd -- "${!#}"
  else
    cd -- "$(dirname -- "${!#}")"
  fi
}

おすすめ記事