如何通过一个命令将文件复制到目标文件夹并 cd 到目标文件夹

如何通过一个命令将文件复制到目标文件夹并 cd 到目标文件夹

为了解释我的问题,这是我做事的愚蠢方式:

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

将这两行合二为一的捷径是什么?我不是在寻找连接符号,例如 & 或 ;

相反,我试图避免重新输入很长的文件夹路径。

(在来到这里之前,我已经浏览了 cp 手册页并用不同的措辞谷歌搜索了这个问题)

答案1

如果这是用于交互式使用:正常键入并运行第一个命令。然后键入cd Space M-.(您可以键入M-.asEsc .或 as 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,但不适-t用于 GNU 选项cp

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

答案2

我就简单回答一下你的这个问题:Rather I'm trying to avoid retyping my very long folder path.

如果这就是您想要做的,您可以这样做:

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

答案3

为了使用您使用过的最新文件,您可以运行以下命令

cd $_ # directory case
vim $_ # file case

相关内容