zoukankan      html  css  js  c++  java
  • shell脚本简介

    在解释shell脚本这个名词之前,我们先来说下什么是shell

    1. 什么是shell

    shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(脚本)的方式。
    下面的图中黄色部分就是命令解释器shell处于的操作系统中的位置。

    提示:
    shell英文是贝壳的意思,从上图我们可以看出,命令解释器shell就像一个贝壳一样包住了系统核心。

    2. 什么是shell脚本

    当linux命令或语句不在命令行下执行(严格说,命令行也是shell),而是通过一程序文件执行时,该程序就被称为shell脚本或shell程序,shell程序很类似dos系统下的批处理程序(扩展名*.bat)。用户可以在shell脚本中敲入一系列的命令及命令语句组合。这些命令、变量和流程控制语句等有机的结合起来就形成了一个功能强大的shell脚本。
    举例:
    范例一:清除/var/log下messages日志文件的简单命令脚本
    把所有命令放在一个文件里堆积起来形成了脚本,下面就是一个最简单的命令堆积形成的shell脚本。

     #要使用root身份来运行这个脚本。
     #清除日志脚本,版本1
    cd  /var/log
    cat  /dev/null   >messages
    echo "logs  cleaned up."
    

    提示:/var/log/messages 是系统的日志文件,很重要
    看完这个脚本大家有什么想法?
    ①. 上面的脚本,如果不是root就无法执行清理日志。
    ②. 没有任何的流程控制语句,简单的说就是顺序操作,没有成功判断和逻辑性。
    范例二:包含命令、变量和流程控制语句的清除/var/log下messages日志文件的shell脚本。

    [root@1-241 scripts]# vim messages.sh 
    [root@1-241 scripts]# cat messages.sh 
    #!/bin/sh
    #清空日志脚本
    LOG_DIR=/var/log
    ROOT_UID=0
    if [ "$UID" -ne "$ROOT_UID" ]
         then
             echo "must be root to run this scripts."
             exit 1
    fi
    	
    cd $LOG_DIR || {
          echo "cannot change to necessary directory." >&2 
          exit 1
    }
    		
    cat /dev/null > messages && echo "log cleaned UP."
    exit 0
    

    拓展:清空日志及文件内容的三种方法:

    [root@1-241 scripts]# echo >/var/log/nginx/ccs_access.log 
    [root@1-241 scripts]#  >/var/log/nginx/ccs_access.log 
    [root@1-241 scripts]# cat /dev/null >/var/log/nginx/ccs_access.log
    
  • 相关阅读:
    Oracle中的to_date参数含义
    Oracle 中 IW和WW 有何差别
    iBaits.Net(1):简介与安装
    带你逛逛诺基亚芬兰总部:满满都是回忆啊
    LINQ的分组聚合技术
    WPF的Docking框架 ——AvalonDock
    iBatis.Net(3):创建SqlMapper实例
    iBatis.Net(2):基本概念与配置
    C#异步编程及其同步机制
    web使用
  • 原文地址:https://www.cnblogs.com/scajy/p/11281539.html
Copyright © 2011-2022 走看看