日期:2014-05-16  浏览次数:20728 次

linux shell笔记

1、> file 
前面没有命令,shell会创建一个空文件(长度为0个字符),如果文件以前已经存在,其内容就会丢失。

2、一行中可以键入多条命令,命令之间用分好分隔。

3、如果在键入的命令之后跟一个&符号,该命令就发送到后台执行,也就是说,该命令不再占住终端,可以继续处理其他工作。

4、$字符是shell的特殊字符,如果$后跟一个合法的变量名,shell会把它当作在此处用变量所存储的值来替换的指令。表达式可以写为$((expression))。

5、shell变量$#,里面存的是命令行中所键入的参数个数。

6、$*可以引用传递给程序的所有的参数,在参数不确定或者参数数目可变的程序中,通常是很有用的。
   "$@" 它会被替换成“$n”,这里$@前后的双引号是必不可少的,如果没有,变量$@和$*完全一样。

7、如果要给一个程序传递9个以上的参数,不能用$10、$11的方法来取第10个以及以后的参数,要用${n}这种格式。

8、shell自动将最后所执行命令的退出状态设置到shell变量$?中。
	$cp phonebook phone2
	$echo $?
	$0
	0操作成功 非0操作失败

9、内部命令test,它用来在if命令中测试一种或几种条件,格式为 test expression。
	-n string 检测string不为空为真
	-n string 检测string为空为真
   test命令的另外一种模式[expression]
	-eq	等于
	-ge	大于等于
	-gt	大于
	-le	小于等于
	-lt	小于
	-ne	不等于
   文件判断
	-d	为目录	
	-e	存在
	-f	普通文件
	-r	可读文件
	-s	长度不为0
	-w	可写文件
	-x	可执行文件
	-L	链接文件
   逻辑判断	
	!	逻辑非
	-a	逻辑与
	-o	逻辑或

10、小括号格式 \(  \)

11、else结构
	if command1
	then
	   command
	else
	   command
	fi

12、内部命令exit 它可以立即终止shell程序的执行。exit n  n为希望返回的退出状态,不指定为最后一条命令的退出状态。

13、elif结构
	if command1
	then
	   command
	elif command2
	then
	   command
	else
	   command
	fi

14、case结构
	case value in
	pat1)  command
	       command
		...
	       command;;

	pat2)  command
	       command
		...
	       command;;
	...
	patn)  command
	       command
		...
	       command;;
	esac

	case语句中的特殊字符指定匹配模式:
		?表示任一个字符
		*表示0或若干个任意字符一个

15、-x 调试程序选项
	sh -x 程序名 程序参数

16、空命令  :
    其目的是什么也不做,多用于条件语句

17、&&和||结构
    &&       如果在任何需要shell命令的位置写了 command1 && command2 则先执行command1,如果返回的退出状态为0则执行command2;如果command1返回的退出状态不为0,则跳过command2。
    ||       结构功能也差不多,区别在于只有当第一条命令的退出状态不为0时才执行第二条命令。
	
	在这种结构的左右两边都可以用管道线。如果用在左边,检测的是管道线中最后一条命令的退出状态。

18、for命令
	for var in  word1 word2 ...  wordn/filenames[1-n]/$*
	do
		command
		command
		...
	done

19、while命令
	while command1
	do 
		command
		command
		...
	done
while 经常与shift命令共同使用。shift命令使位置变量向下移(即$n到$n-1),并且$#递减。

20、until命令
	until command1
	do
		command
		command
		...
	done
与while模式相反

21、sleep n 程序挂起n秒

22、break n、continue n从循环中退出

23、PATH
	PATH是执行命令时shell要搜索的目录,这些目录彼此之间用冒号{:}分隔

24、exec 命令
	exec program  以新shell代替当前程序
?