如何将文件移动到参数path?

说我有以下代码,

mkdir $1 # Output that the folder was created and the name echo "The folder was created and name is: `echo $1`" touch $2 # Output that the file was created and the name echo "The file was created and name is: `echo $2`" 

我怎样才能将创build的文件移动到创build的参数文件夹?

你需要使用命令mv

mv $2 $1

 touch "$1/$2" 

假设$2是一个简单的名字。 或者,如果您必须使用mv ,那么:

 touch "$2" && mv "$2" "$1" 

要么:

 touch "$2" && mv "$2" "$1/$2" 

您可能需要考虑如果$2不是一个简单的文件名,但包含一些路径信息会发生什么情况。 在这种情况下,第一个“触摸和移动”组合可以说是更安全的。 请注意,这些版本在移动创建的文件之前检查touch成功。 另外请注意,如果文件已经存在,那么touch工作正常,并且该文件将被移动到目标目录。 如果文件不存在(尚),你必须再努力工作。 这就是这些问题的麻烦 – 有很多情况可能需要处理,但可能不是一个作业问题(但必须考虑更多的“生产代码”)。

否则,如果$2可能是一个带有路径信息的名字:

 mkdir "$1" || exit 1 base=$(basename "$2") touch "$1/$base" || exit 1 

或者,如果你想移动,那么:

 mkdir "$1" || exit 1 touch "$2" || exit 1 mv "$2" "$1" 

请注意文件名称周围的引号; 即使名称中包含空格或其他尴尬字符,他们也会工作。 还要注意,如果$2指定一个目录,那么mv版本的东西将移动(新创建的) $1目录下的整个目录。

mv $2 $1是你在找什么?

 mv $2 $1 echo "The file $2 was moved to $1" 

请注意,在每个命令中不需要第二个echo

 echo "The folder was created and name is: $1" 

检查哪些命令可用于复制,或在此情况下移动您创建的文件。 另外,什么阻止你直接在创建的文件夹中创建文件?