【问题标题】:Basic Shell Scripting in BASHBASH 中的基本 Shell 脚本
【发布时间】:2013-02-10 01:58:59
【问题描述】:

我正在学习 BASH 脚本的第一学期,但遇到了一些困难。我参加过其他编程课程,如 C++ 或 Java,但 Bash 的语法让我很受不了。我很想对这个问题提出一些建议。我需要执行以下操作:

  • 从 /var/log/secure 文件中提取今天的数据
  • 检查我是否有一个名为“mylogs”的目录
  • 如果我不这样做 - 然后创建一个
  • 检查您是否已有与当前日期、月份和小时相匹配的文件 在“mylogs”目录中。
  • 如果这样做,请回显屏幕“文件存在,没有任何内容写入我的日志”,然后 出口。如果它不存在,则将今天的数据从 /var/log/secure 写入您的 “mylog-month-day-hour”文件。示例(2 月 4 日下午 2 点)输出: mylog-02-04-14

我只需要脚本语法部分的帮助。

谢谢 - 我也希望任何网站都能在 BASH 中提供帮助。

【问题讨论】:

  • 我建议您将问题缩小到有明确答案的范围内。
  • 这听起来确实像你班级的作业清单。 whatHaveYouTried.com ?祝你好运。

标签: linux bash


【解决方案1】:
  • 从 /var/log/secure 文件中提取今天的数据

你可以这样做......

grep "^Feb 24" /var/log/secure
  • 检查我是否有一个名为“mylogs”的目录,如果没有,则创建一个

你可以这样做......

test -d mylogs || mkdir mylogs
  • 检查“mylogs”目录中是否已有与当前日期、月份和时间相匹配的文件。 (假设文件名的格式为 DDMMHH)

    test -e mylogs/`date +%d%m%H` && echo "我已经有一个文件"

  • 如果这样做,请回显屏幕“文件存在,没有任何内容写入我的日志”,然后退出。如果它不存在,则将今天的数据从 /var/log/secure 写入您的“mylog-month-day-hour”文件。示例(2 月 4 日下午 2 点)输出:mylog-02-04-14

嗯,你现在应该明白了。我想你现在可以解决这个问题了 ;) 一个有用的命令是 man -k <keyword>

【讨论】:

  • 谢谢——我唯一的问题是(我一直在研究这个)是我需要每天运行它——所以运行 Grep 2 月 24 日是行不通的——那么只有日期有变量吗?
  • 对于具有一位数的日期值的日期,grep "^Feb 2" 将匹配 2 日和 20 日至 29 日... 可以使用例如“^Feb 2[^0-9]”,或者如果您知道它后面跟着一个特定字符,请查找它,例如“^2 月 2 日”或“^2 月 2 日”。
  • 感谢大家的帮助。
【解决方案2】:

【讨论】:

  • 谢谢 - 如果我想从 /var/log/secure 中获取日期 - 我会使用 grep 吗?
  • 是的,它是一个很好的搜索工具。当我的服务器被黑时,我正在用 grep 嗅探细节。
  • grep、sed、awk、cut、find、date、tr、测试操作符、><|(我可能会遗漏一些)都是您需要的命令如果您想精通编写 shell 脚本,请阅读手册页。
猜你喜欢
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多