我正在编写一个bash脚本,它将指定的目录转储到目标目录(如果没有指定目标,则转到当前目录。)如果指定了目标目录,但是当我尝试使用当前目录时,脚本可以正常工作目录(通过$ PWD)我收到以下错误。
mv: `test' and `/home/user/programming/bash/test' are the same file
当前工作目录只是/ home / user / programming / bash。由于某种原因,我要转储的目录被附加到当前目录路径。我为转储创建的函数如下。
dump_dir()
{
echo "Dumping \"$1\" into \"$2\"..."
mv -i $1 $2
}
我如何使用mv做到这一点?有更好的命令吗?
编辑:
运行命令dump_dir test $ PWD给出输出
Dumping "test" into "/home/user/programming/bash"...
然后是我上面说的错误。由于某种原因,mv命令采用$ PWD并将“test”附加到它的末尾。
编辑:
要复制错误,请打开终端并输入
mv some_directory $PWD
显然将some_directory替换为实际的目录;)
编辑:再次......抱歉:)
当用户仅提供要转储的目录时,我将调用该函数。
dump_dir $1 $PWD
答案 0 :(得分:1)
所有这些答案都是偏离基础的。你试图做一些毫无意义的事情 - mv test test
。指明源和目的地的方式并不重要,它的作用是什么 - 试图"移动"它已经存在的目录。
mv test test
是文件或目录,还是符号链接或设备或其他, test
都是无操作。这个命令从来没有"看起来内部"你正在努力去看它是什么。
如果您想将test
目录的内容移动到当前目录中,那就是mv test/* .
之类的内容虽然它不能使用与现有子目录同名的嵌套目录。
如果要在文件系统周围移动整个目录树,请使用tar
或rsync
或其他内容。