shell脚本编程,实现如下,创建文件bak_log,且赋予写的权限 1)如果/tmp/bak_log是一个文件,则打印“/tmp/bak_log is a file”否则打印“No,/tmp/bak_log is not a file” 2)如果/tmp/bak_log是可写的,则打印“/tmp/bak_log is writable”且把当前时间的时分秒写入/tmp/bak_log中,否则打印“unable wirte to /tmp/bak_log”
时间: 2023-06-04 12:08:02 浏览: 55
我可以为您解答这个问题。请先输入以下命令来实现创建文件bak_log并赋予写的权限:
```
touch /tmp/bak_log
chmod +w /tmp/bak_log
```
然后运行以下脚本来实现您的需求:
```
#!/bin/bash
if [ -f /tmp/bak_log ]; then
echo "/tmp/bak_log is a file"
else
echo "No, /tmp/bak_log is not a file"
fi
if [ -w /tmp/bak_log ]; then
echo "/tmp/bak_log is writable"
echo $(date +"%H:%M:%S") >> /tmp/bak_log
else
echo "unable to write to /tmp/bak_log"
fi
```
运行脚本后,如果/tmp/bak_log是一个文件,则输出“/tmp/bak_log is a file”,否则输出“No, /tmp/bak_log is not a file”;如果/tmp/bak_log是可写的,则输出“/tmp/bak_log is writable”,并将当前时间的时分秒写入到文件中,否则输出“unable to write to /tmp/bak_log”。
相关问题
写一个shell脚本实现每周日晚上12点定时删除/var/log/目录下后缀带数字的文件
您可以创建一个shell脚本来实现每周日晚上12点定时删除`/var/log/`目录下后缀带数字的文件。以下是一个示例脚本:
```bash
#!/bin/bash
# 获取当前日期和星期几
current_date=$(date +%Y-%m-%d)
current_day=$(date +%A)
# 检查是否为周日
if [ "$current_day" = "Sunday" ]; then
echo "当前是周日,开始删除后缀带数字的文件..."
# 进入/var/log/目录
cd /var/log/
# 查找并删除后缀带数字的文件
find . -type f -name "*[0-9]*" -delete
echo "删除完成!"
else
echo "不是周日,不执行删除操作。"
fi
```
保存脚本文件,并确保具有执行权限(使用`chmod +x script.sh`赋予执行权限)。然后,您可以将此脚本添加到cron作业中,以在每周日晚上12点自动执行。
```bash
crontab -e
```
在打开的文件中,添加以下行来调度脚本执行:
```bash
0 0 * * 0 /path/to/script.sh
```
保存并关闭文件。这将在每周日的午夜12点(0小时,0分钟)自动执行脚本。
请注意,执行此脚本将永久删除匹配条件的文件,请确保您真正需要删除这些文件,并在执行之前进行适当的备份和确认。
shell脚本中,如果存在access.log文件,则对该文件进行备份,备份名称为access.log_bak_当前时间
好的,针对你的问题,可以使用如下的shell脚本来实现:
```
#!/bin/bash
# 判断access.log是否存在
if [ -f "access.log" ]; then
# 获取当前时间
current_time=$(date "+%Y%m%d_%H%M%S")
# 备份access.log文件
cp access.log access.log_bak_$current_time
fi
```
该脚本首先使用`-f`选项判断当前目录下是否存在`access.log`文件,如果存在,则获取当前时间,并将`access.log`文件备份为`access.log_bak_当前时间`的格式。备份文件名中的时间格式为`年月日_时分秒`。如果`access.log`文件不存在,则不进行备份操作。
希望这个答案能够帮到你!