![如何将多个文件复制到一个目录并同时进入该目录?](https://linux22.com/image/910951/%E5%A6%82%E4%BD%95%E5%B0%86%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95%E5%B9%B6%E5%90%8C%E6%97%B6%E8%BF%9B%E5%85%A5%E8%AF%A5%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我正在尝试在我的 .bashrc 中编写一个 bash 函数,它复制目录中的多个文件并进入该目录,问题是它复制了文件但没有进入目录并说:“省略目录” cpcd()if [ -d "${!#}" ] then cp "$@" "${!#}" && cd "${!#}" && ls else print "last argument is not a directory or does not exist" fi
答案1
当你这样做时:
cp "$@" "${!#}"
其效果是重复最后一个参数(目录名)。
因此,我认为您想要的可能是这个(只需删除"${!#}"
):
cp "$@"
另一个问题是你说它没有进入目录。你刚刚正常执行的脚本不会改变你当前的工作目录;如果你想要这样做,你需要改为执行脚本。因此,不要像这样运行它:
./yourscript.sh [arguments]
然后你可以像这样获取它:
. yourscript.sh [arguments]