为了解释我的问题,这是我做事的愚蠢方式:
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