1、$$变量保存所运行的当前进程的进程号。$0 代表脚本文件名。$# 代表参数的个数、$_变量中存放上一条命令中最后一个参数的值


2、trap 命令可以捕获控制台信号
答:利用trap可以做Ctrl+C结束脚本时需要做的清理操作如:trap "ClearPID" 1 2 3 15


3、tee将信息输出到多个文件
答:echo "ok" | tee -a a.txt >>b.txt


4、查看本机tcp连接状态及数目统计
答:netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -n -k 2 -r


5、IFS变量
答:
IFS用作shell指定的缺省域分隔符。原理上讲域分隔符可以是任意字符,但缺省通常为空格、新行或tab键。IFS在分隔文件或变量中各域时很有用。下面的例子将IFS设置为冒号,然后echo $PATH变量,给出一个目录分隔开来的可读性很强的路径列表。


6、while循环中最简单写死循环的方法为
答:

while :
do
do someting
done

7、 查出目前 ip_conntrack 记录最多的前五名 IP
答:cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 5


8、linux bash中暂时屏蔽 alias
答:\ 对,正是这个斜线可以暂时屏蔽alias的定义,如:cp -r 就不会再有是否覆盖的提示了。


9、在文件中查找指定内容并且显示该内容,并不是显示内容所在的行
答:利用sed -o参数就可以解决问题了


10、创建/删除多个连续的文件(大括号的应用)
答:利用大括号({})来搞定,如:

$ touch Front-{A,B,C}-Back
$ ls -1
Front-A-Back
Front-B-Back
Front-C-Back
$ echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
$ ls
2007-01  2007-07  2008-01  2008-07  2009-01  2009-07
2007-02  2007-08  2008-02  2008-08  2009-02  2009-08
2007-03  2007-09  2008-03  2008-09  2009-03  2009-09
2007-04  2007-10  2008-04  2008-10  2009-04  2009-10
2007-05  2007-11  2008-05  2008-11  2009-05  2009-11
2007-06  2007-12  2008-06  2008-12  2009-06  2009-12

11、shell中使用(())进行数字运算
如:

#!/bin/bash
echo -n "how old are you?"
read age
echo "Wow,in $((60-age)) years ,you'll be 60!"

12、shell中读取指定的配置文件并对变量进行赋值
# shell脚本中读取配置文件并做赋值操作

while read NAME TYPE
do
if [ "$NAME" == "" ] || [ "`echo $NAME$TYPE| grep '#'`" != "" ] ;then
continue
else
eval `echo "${NAME}=${TYPE}"`
fi
done

# config.shc 配置文件内容
====== config.shc ========
# 注释内容
变量名 值
===========================
注意:配置文件中的变量名和值之间用Tab分格!


本文最后更新于2010.05.27


原创文章,转载请注明: 转自 http://salogs.com