今天,一位QQ好友来问我:
你好,请问你懂虚拟机吗?知道怎么编写shell脚本,将指定目录下的所有文件复制到另一个目录中吗?
估计是期末考试用吧!
现在不是流行AI吗?下面就是我随手问AI生成并整理了一份给他的内容,也足够他用了。
一、下面是一个简单的Shell脚本,用于将一个指定目录下的所有文件复制到另一个指定目录:
#!/bin/bash
检查参数数量
======
if \[ "$#" -ne 2 \]; then
echo "Usage: $0 SOURCE_DIR TARGET_DIR"
exit 1
fi
定义源目录和目标目录
==========
SOURCE_DIR=$1
TARGET_DIR=$2
检查源目录是否存在
=========
if \[ ! -d "$SOURCE_DIR" \]; then
echo "Source directory $SOURCE_DIR does not exist."
exit 1
fi
检查目标目录是否存在,如果不存在则创建
===================
if \[ ! -d "$TARGET_DIR" \]; then
echo "Target directory $TARGET_DIR does not exist. Creating..."
mkdir -p "$TARGET_DIR"
fi
复制所有文件从源目录到目标目录
===============
cp -r "$SOURCE_DIR"/\* "$TARGET_DIR"
检查复制操作是否成功
==========
`if [ $? -eq 0 ]; then
echo "所有文件都已成功从 $SOURCE_DIR 复制到 $TARGET_DIR."
else
echo "复制文件时出错."
exit 1
fi
`
二、使用说明:
1、将上述脚本保存为一个文件,例如 copy_files.sh
2、给予脚本执行权限:
chmod +x copy_files.sh
三、运行脚本,并指定源目录和目标目录:
例如:
./copy_files.sh /path/to/source/dir /path/to/target/dir
四、脚本说明:
#!/bin/bash:指定使用Bash解释器。
if [ "$#" -ne 2 ]; then ... fi:检查参数数量是否为2个(源目录和目标目录)。
SOURCE_DIR=$1 和 TARGET_DIR=$2:将传入的参数分别赋值给源目录和目标目录变量。
if [ ! -d "$SOURCE_DIR" ]; then ... fi:检查源目录是否存在。
if [ ! -d "$TARGET_DIR" ]; then ... fi:检查目标目录是否存在,如果不存在则创建。
cp -r "$SOURCE_DIR"/* "$TARGET_DIR":递归复制源目录中的所有文件到目标目录。
if [ $? -eq 0 ]; then ... else ... fi:检查复制操作是否成功,并输出相应信息。
这个脚本会将源目录中的所有文件和子目录复制到目标目录中。
如果你只想复制文件而不包括子目录,可以去掉 cp 命令中的 -r 选项。