#!/bin/sh
# Shell script functions for the OSSEC HIDS
# Author: Daniel B. Cid <[email protected]>
# 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
这样,一些诸如一些错误信息就不会显示出来。