Linux Bash脚本:“脚本”;“倾倒”;使用mv的目录-当前目录

Linux Bash脚本:“脚本”;“倾倒”;使用mv的目录-当前目录,linux,bash,ubuntu,scripting,mv,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

我正在编写一个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
显然,用实际目录替换某些_目录;)

编辑:再次…抱歉:)

当用户只提供要转储的目录时,我将按如下方式调用该函数

dump_dir $1 $PWD

所有这些答案都太离谱了。您试图做一些毫无意义的事情-
mvtest
。无论您如何指定源和目标,这都是它的目的——尝试将目录“移动”到它已经存在的位置

mv-test-test
是无操作,无论
test
是文件、目录、符号链接或设备还是其他。命令甚至从不“看”你正在移动的东西,看它是什么

如果您想将
test
目录的内容移动到当前目录中,这是不同的-这类似于
mv test/*。
,尽管这不适用于与现有子目录同名的嵌套目录


如果要在文件系统中移动整个目录树,请使用
tar
rsync
或其他方法。

您只需执行一个长形式的
mv test
。运行
dump_dir test$PWD
后,您希望
test
在哪里?$1必须是指向目录的绝对路径,或指向目录的相对路径。我编辑了我的问题以包含终端输出。我希望测试的内容被移动到$PWD中。我基本上尝试使用当前工作目录重命名目录测试。我开始觉得这是一个糟糕的计划。。。谢谢你的快速回复!您可以发布一个带有参数的函数调用示例吗?那会有很大帮助。谢谢。:-)
mv
的基本用法不是编程问题。mv测试/*成功了!谢谢你,马克!你说得对,我确实想移动文件夹的内容!可能应该说明…:/是的,因为问题不具体。他说的是移动目录,而不是内容。