读脚本代码(一)

来源:互联网 发布:iphone数据恢复工具 编辑:程序博客网 时间:2024/04/28 23:41

#!/bin/sh
# Shell script functions for the OSSEC HIDS
# Author: Daniel B. Cid <daniel.cid@gmail.com>
# Last modification: Mar 02, 2006


TRUE="true";
FALSE="false";


##########
# isFile 判断是否为一个文件
##########
isFile()
{
    FILE=$1
    #列出文件并屏蔽所有输出
    ls ${FILE} >/dev/null 2>&1
    #如果返回值为0,表明FILE是一个文件,否则返回错误码。
    if [ $? = 0 ]; then 
        echo "${TRUE}"
        return 0;
    fi
    echo "${FALSE}"
    return 1;
}

用法:
    if [ ! `isFile ${PREDEF_FILE}` = "${FALSE}" ]; then
        . ${PREDEF_FILE}
    fi

 

 

#0
ls ${FILE} >/dev/null 2>&1解释:
ls ${FILE}是命令,>/dev/null:stdout输出结果重定向到/dev/null,即不显示任何内容;2>&1:stderr的输

出结果重定向到stdout,即也是重定向到/dev/null。
/dev/null是一个黑洞,进去任何东西都不会出来。所以就是屏蔽输出的意思。将标准输出和标准错误输出都屏

蔽。

#1
测试:
]# ls      ;第一次命令
]# anaconda-ks.cfg install.log.syslog  ;第一次输出结果
]# ls >/dev/null    ;第二次命令, 没有输出结果
]# ls fdfdf     ;第三次命令:fdfdf文件不存在
]# ls:无法访问 fdfdf:没有哪个文件或目录 ;第三次输出结果
]# ls fdfdf >/dev/null    ;第四次命令
]# ls:无法访问 fdfdf:没有哪个文件或目录 ;第四次输出结果
]# ls fdfdf >/dev/null 2>&1   ;第五次命令, 没有输出结果

证明 >/dev/null 2>&1将所有输出屏蔽。

#2 . ./src/init/shared.sh
意思是包含这个文件。相当于#include "./src/init/shared.h"

#3 /dev/null和/dev/zero的区别
抄自http://hi.baidu.com/hackers365/blog/item/1f2fd28f4f8e17ff513d92f1.html

/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
/dev/zero,是一个输入设备,你可你用它来初始化文件。


/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以

标准输出显示或写入文件,那么可以将消息重定向到位桶。
/dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设

备或文件写入字符串0。
$if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-r--r--     1 oracle    dba           1024 Jul 15 16:56 test.txt


eg,

     find / -name access_log   2>/dev/null

这样,一些诸如一些错误信息就不会显示出来。

原创粉丝点击