shell示例1

清除/var/log下的log文件

基本版:

1 # Cleanup 

2 #  当然要使用 root 身份来运行这个脚本 

3   

4 cd /var/log 

5 cat /dev/null > messages 

6 cat /dev/null > wtmp 

7 echo "Logs cleaned up." 

版本2:

  1 #!/bin/bash   

  2 #  一个 Bash 脚本的正确的开头部分. 

  3   

  4 # Cleanup,  版本  2 

  5   

  6 #  当然要使用 root 身份来运行. 

  7 #  在此处插入代码,来打印错误消息,并且在不是 root 身份的时候退出. 

  8   

  9 LOG_DIR=/var/log 

10 #  如果使用变量,当然比把代码写死的好. 

11 cd $LOG_DIR 

12   

13 cat /dev/null > messages 

14 cat /dev/null > wtmp 

15   

16   

17 echo "Logs cleaned up." 

18   

19 exit #  这个命令是一种正确并且合适的退出脚本的方法. 

版本3:

 1 #!/bin/bash 

  2 #  清除,  版本  3 

  3   

  4 #    Warning: 

  5 #    ------- 

  6 #    这个脚本有好多特征,这些特征是在后边章节进行解释的,大概是进行到本书的一半的 

  7 #    时候, 

  8 #    你就会觉得它没有什么神秘的了. 

  9 # 

10   

11   

12   

13 LOG_DIR=/var/log 

14 ROOT_UID=0          # $UID 为 0 的时候,用户才具有根用户的权限 

15 LINES=50              #  默认的保存行数 

16 E_XCD=66              #  不能修改目录? 

17 E_NOTROOT=67      #  非根用户将以 error 退出 

18   

19   20 #  当然要使用根用户来运行 

21 if [ "$UID" -ne "$ROOT_UID" ] 

22 then 

23      echo "Must be root to run this script." 

24      exit $E_NOTROOT 

25 fi     

26   

27 if [ -n "$1" ] 

28 #  测试是否有命令行参数(非空). 

29 then 

30      lines=$1 

31 else     

32      lines=$LINES #  默认,如果不在命令行中指定 

33 fi     

34   

35   

36 #    Stephane Chazelas  建议使用下边 

37 #+  的更好方法来检测命令行参数. 

38 #+  但对于这章来说还是有点超前. 

39 # 

40 #        E_WRONGARGS=65    #  非数值参数(错误的参数格式) 

41 # 

42 #        case "$1" in 

43 #        ""            ) lines=50;; 

44 #        *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;; 

45 #        *              ) lines=$1;; 

46 #        esac 

47 # 

48 #*  直到"Loops"的章节才会对上边的内容进行详细的描述. 

49   

50   

51 cd $LOG_DIR 

52   

53 if [ `pwd` != "$LOG_DIR" ]    #  或者 if[ "$PWD" != "$LOG_DIR" ] 

54                                                          #  不在  /var/log 中? 

55 then 

56      echo "Can't change to $LOG_DIR." 

57      exit $E_XCD 

58 fi    #  在处理 log file 之前,再确认一遍当前目录是否正确. 

59   

60 #  更有效率的做法是 

61 # 

62 # cd /var/log || { 

63 #      echo "Cannot change to necessary directory." >&2 64 #      exit $E_XCD; 

65 # } 

66   

67   

68   

69   

70 tail -$lines messages > mesg.temp #  保存 log file 消息的最后部分. 

71 mv mesg.temp messages                          #  变为新的 log 目录. 

72   

73   

74 # cat /dev/null > messages 

75 #*  不再需要了,使用上边的方法更安全. 

76   

77 cat /dev/null > wtmp    #    ': > wtmp'  和  '> wtmp'具有相同的作用 

78 echo "Logs cleaned up." 

79   

80 exit 0 

81 # 退出之前返回 0,返回 0 表示成功. 

你可能感兴趣的:(shell)