使用 cp mv 函数和 ../

使用 cp mv 函数和 ../

我偶然发现了一段代码,并怀疑我是否理解正在做什么:

cp $i ../../$x/$y

这是否会将 i 的值从目录 /$x/$y 复制到每个 i 的两个目录中?(这是一个 for 循环。)

mv dir ../../$x$y/name

我认为这会将目录 dir 从 $x$y/name 向上移动两个目录。这样对吗?在处理长目录时,我一直怀疑自己是否理解了 bash 的语法。

答案1

这会将文件从i变量中的路径复制到提到的目录。

../../意思是“上升两级”。

$x/$y表示向下移动到目录,该目录的名称存储在x变量中,然后从变量向下移动到目录y

但如果$y目录不存在,该文件将被复制到目录$y中的文件中$x

mv dir ../../$x$y/name移至dir位于name上两层和下两层$x$y-> name

答案2

在开始解释之前,假设x1y2,并且我们在文件夹中使用了命令/home/<user>/dir1/dir11/

第一个命令是常用cp命令。你可以从 复制文件名/home/<user>/dir1/dir11/,然后将其移动:

  • 通过 2 个文件夹向上移动 2 个调用../,所以你在/home/<user>/
  • 然后向下找到 2 个文件夹,分别命名为里面所说的xy(所以你把它复制到里面/home/<user>/$x/$y/,所以它/home/<user>/1/2/在我们的例子中)

注意:如果/home/<user>/1/2/不存在,您复制的文件将采用 中定义的名称y,因此您的文件将被命名为2;但如果/home/<user>/1/不存在,cp命令将失败,您将收到错误


第二条命令是常用mv命令。你可以将dir文件夹从/home/<user>/dir1/dir11/

  • 就像cp命令中说的那样,有 2 个文件夹,所以你/home/<user>/因为 2 次../使用而处于
  • 然后向下移动 2 个文件夹,第一个在$x$y/12/在我们的示例中),然后name/。因此,您的文件夹dir放置如下:/home/<user>/12/name/dir

相关内容