写一个Shell脚本,用文件名和目录名作为命令行参数,如果文件是一个普通文件并在给出的目录中,则删除该文件。若文件(第一个参数)是一个目录,则删除此目录(包括所有的文件和子目录)。
时间: 2024-10-09 16:02:21 浏览: 38
在Shell中,你可以创建一个简单的bash脚本来完成这个任务。这里是一个基础示例:
```bash
#!/bin/bash
# 检查是否提供了两个参数
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <filename> <directory>"
exit 1
fi
# 获取文件名和目录名
file="$1"
dir="$2"
# 检查文件是否存在,并判断其类型
if [ -f "$file" ]; then
# 如果是普通文件,删除它
if rm -f "$file"; then
echo "File $file deleted."
else
echo "Failed to delete file $file."
fi
elif [ -d "$file" ]; then
# 如果是目录,递归删除
if rm -rf "$dir"; then
echo "Directory $dir and its contents deleted."
else
echo "Failed to delete directory $dir."
fi
else
echo "Invalid input: '$file' is not a regular file or a directory."
fi
# 提供一些相关问题
相关问题
Linux,写一个脚本,用文件名和目录名作为命令行参数,如果文件是一个普通文件并在 给出的目录中,则删除该文件。若文件(第一个参数)是一个目录,则删除此目录(包括 所有的文件和子目录)。
在Linux中,你可以编写一个bash shell脚本来完成这个任务。下面是一个简单的示例,名为`delete_files.sh`:
```bash
#!/bin/bash
# 检查脚本是否有足够的参数
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <file_or_directory> <directory>"
exit 1
fi
# 获取文件或目录路径和目标目录
target_file="$1"
target_dir="$2"
# 检查是否为普通文件
if [ -f "$target_file" ]; then
# 如果是文件则删除它
rm -f "$target_file"
if [ $? -eq 0 ]; then
echo "File $target_file deleted."
else
echo "Failed to delete file $target_file."
fi
elif [ -d "$target_file" ]; then
# 如果是目录,递归删除及其内容
if rm -rf "$target_dir"; then
echo "Directory $target_file and its contents have been deleted."
else
echo "Failed to delete directory $target_file and its contents."
fi
else
echo "Invalid argument: $target_file is neither a file nor a directory."
fi
```
要运行这个脚本,你需要在终端中提供两个参数,例如:
```sh
./delete_files.sh your_file.txt /path/to/your/directory
```
请注意,删除操作不可逆,所以在执行此类脚本时务必小心。
编写一个shell脚本将文件上传至ftp,ftp地址、用户名、密码通过脚本的命令行参数给出
编写一个shell脚本将文件上传到FTP服务器通常涉及使用`lftp`或`curl`这样的工具,因为它们可以直接从命令行处理FTP操作。下面是一个基本的bash脚本示例,它接受FTP地址、用户名、密码以及本地文件名作为参数:
```bash
#!/bin/bash
# 检查参数是否齐全
if [ "$#" -ne 5 ]; then
echo "Usage: $0 ftp_address username password local_file_path remote_directory"
exit 1
fi
ftp_address="$1"
username="$2"
password="$3"
local_file="$4"
remote_directory="$5"
# 使用lftp连接并上传文件
lftp -u $username,$password $ftp_address << EOF
cd $remote_directory
put $local_file
bye
EOF
# 或者使用curl(假设支持直接上传文件)
# curl -T $local_file -u $username:$password ftp://$ftp_address/$remote_directory/
echo "File $local_file uploaded to FTP server at $ftp_address."
阅读全文