Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将文件移动到参数路径?_Linux_Unix_Opensuse - Fatal编程技术网

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
可能已失败,但脚本仍会显示“它已创建”。