shell
shell是一个翻译器,shell将命令转为CPU可执行的二进制代码,然后CPU把执行后的结果传给shell,shell有很多种,在linux中默认使用的shell是hash。
shell有很多内置的命令,如常用的cd,ls等
type命令可以查看一个命令是不是shell内嵌的命令:type cd
在Linux输入命令的时候,在同一行可以输入多个命令,之间用;隔开
一个命令太长的时候可以用\回车另起一行输入,这样做可以防止一个命令单词被分成两行,影响阅读
变量
定义一个变量名,可以由字母、数字、下划线组成,但不能以数字开始
给一个变量赋值的时候:变量名=可取值,等号的两边不能出现空格,如果可取值中含有空格的时候,用""引起来
查看一个变量的值命令:echo $变量名
查看当前shell的进程:echo $$
取消一个变量:unset 变量名
本地变量
在终端中:xx=10,意思是定义了一个变量名叫xx的变量,并赋值为10,这种变量是本地变量,这个变量只是在当前的shell有效,不会影响到子shell
环境变量
在终端中:export yy=20,定义了一个环境变量,承上,如果此时#export xx,则把上一段中的xx由本地变量转为环境变量了,环境变量会影响到所有的子shell
查看变量命令:set可以显示所有的变量,env显示环境变量,export也可以显示环境变量,或者export -p,这三者都能显示环境变量
declare也可以用来定义环境变量:declare -x zz=80,定义一个环境变量zz,赋值为80,declare +x zz则是把zz定义为本地变量
位置变量
$1 $2 $3 $4,分别表示第1个参数、第2个参数、第3个参数、第4个参数,而$0表示的是这个文件的名字,$#表示参数的个数,$*表示所有的参数
在位置参数显示中,如命令:
#set 1 2 3 4 5 6 7 8 9 a b c d
#echo $10
得到的结果是10,而不是想象中的a,这是因为在解析命令#echo $10的时候,先执行$1得到第1个参数1,然后直接显示1和0了,就是10,正确的方法是:#echo ${10},这样就可以得到第10个参数a了
在切换用户的时候,变量HOME,USER会被赋值
终端提示符的变量是PS1,断行的提示符的变量是PS2
locale -a可以查看系统支付的编码,其变量是LANG
原文:http://www.cnblogs.com/yiyezc/p/5233238.html