Bash Scripting:使用mv的“转储”目录 - 当前目录

时间:2014-06-01 00:46:28

标签: linux bash ubuntu scripting mv

我正在编写一个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

1 个答案:

答案 0 :(得分:1)

所有这些答案都是偏离基础的。你试图做一些毫无意义的事情 - mv test test。指明源和目的地的方式并不重要,它的作用是什么 - 试图"移动"它已经存在的目录。

无论mv test test是文件或目录,还是符号链接或设备或其他,

test都是无操作。这个命令从来没有"看起来内部"你正在努力去看它是什么。

如果您想将test目录的内容移动到当前目录中,那就是mv test/* .之类的内容虽然它不能使用与现有子目录同名的嵌套目录。

如果要在文件系统周围移动整个目录树,请使用tarrsync或其他内容。