Linux 如何将文件移动到参数路径?
假设我有以下代码Linux 如何将文件移动到参数路径?,linux,unix,opensuse,Linux,Unix,Opensuse,假设我有以下代码 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`" 如何将已创建的文件移动到已创建的参数文
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`"
如何将已创建的文件移动到已创建的参数文件夹中?您要找的是
mv$2$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"
请注意,您不需要在每个命令中使用第二个echo
:
echo "The folder was created and name is: $1"
检查哪些命令可用于复制或移动您创建的文件。另外,是什么阻止您直接在已创建文件夹中创建文件?检查哪些命令可用于复制或移动您创建的文件。还有,是什么阻止您直接在创建的文件夹中创建文件
touch "$1/$2"
这假设$2
是一个简单的名称。或者,如果必须使用mv
,则:
touch "$2" &&
mv "$2" "$1"
或:
如果$2
不是一个简单的文件名,而是包含一些路径信息,您可能需要考虑会发生什么。在这种情况下,第一个“触摸移动”组合可能更安全。请注意,这些版本会在移动创建的文件之前检查触摸是否成功。另外请注意,如果文件已经存在,则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
目录下
这假设$2
是一个简单的名称。或者,如果必须使用mv
,则:
touch "$2" &&
mv "$2" "$1"
或:
如果$2
不是一个简单的文件名,而是包含一些路径信息,您可能需要考虑会发生什么。在这种情况下,第一个“触摸移动”组合可能更安全。请注意,这些版本会在移动创建的文件之前检查触摸是否成功。另外请注意,如果文件已经存在,则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
i、 e.mv$2$1
您需要使用命令mv
i、 e.mv$2$1
这显然比创建一个空文件并移动它更有效,但由于这是家庭作业,我认为OP明确询问了mv
。这显然比创建一个空文件并移动它更有效,但由于这是作业,我认为OP明确地询问了mv
。您真的不需要嵌套的echo
命令:echo”文件夹已创建,名称为:$1“
。此外,在该阶段,您尚未验证文件夹是否已创建;mkdir
可能已失败,但脚本仍将显示“它已创建”。您确实不需要嵌套的echo
命令:echo”文件夹已创建,名称为:$1“
。此外,在该阶段,您尚未验证文件夹是否已创建;mkdir
可能已失败,但脚本仍会显示“它已创建”。