📜  没有提示的 bash 复制 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:26:57.203000             🧑  作者: Mango

没有提示的 Bash 复制

在 Bash(Shell)中,我们可以使用 cp 命令来复制文件或目录。但是,当我们使用 cp 命令时,会提示我们是否要将已存在的文件覆盖,这可能会导致我们的脚本被阻塞,尤其是当我们需要自动化执行脚本时。在这种情况下,我们可以使用 cp 命令的 -f 选项来覆盖已存在的文件。但是,这种方法还是会有一些提示信息出现,这也可能会导致我们的脚本出错。因此,本文将介绍一种没有任何提示的 Bash 复制方法。

方法

要复制文件或目录而不提示任何信息,我们可以使用以下命令:

yes | cp /path/to/source /path/to/destination/

这个命令使用了 Bash 中的 yes 命令和 cp 命令。yes 命令会不断地向标准输出打印 y 字符,而 cp 命令的 -i 选项会在复制时提示用户是否要覆盖已存在的文件。因此,当我们将 yes 命令的输出通过管道传递给 cp 命令时,cp 命令会自动将所有的提示信息都回答为 y,从而实现自动覆盖。

示例

下面是一个简单的脚本,使用了上述的复制方法来将一个文件夹下的所有文件复制到另一个文件夹中:

#!/bin/bash

source_dir="/path/to/source/"
destination_dir="/path/to/destination/"

yes | cp -r "$source_dir" "$destination_dir"

在这个脚本中,我们将源文件夹的路径和目标文件夹的路径赋值给了 source_dirdestination_dir 变量。接着,我们使用了上述的复制命令,并将选项 -r 用于递归地复制整个文件夹。最后,我们将整个命令行通过 yes 命令的输出重定向来将所有的提示信息自动回答为 y

总结

通过本文介绍的方法,我们可以在 Bash(Shell)中实现没有任何提示的文件复制。这个方法尤其适用于需要自动化执行的脚本中,可以避免交互式操作产生的错误。但是,请务必谨慎使用这个方法,并确保已经备份好了所有的文件,以免不必要的损失。