shell讲解

 一、用户登陆进入系统后的系统环境变量

 
$HOME 使用者自己的目录 
$PATH 执行命令时所搜寻的目录 
$TZ 时区 
$MAILCHECK 每隔多少秒检查是否有新的信件 
$PS1 在命令列时的提示号 
$PS2 当命令尚未打完时,Shell 要求再输入时的提示号 
$MANPATH man 指令的搜寻路径 
 
 
 
二、特殊变量
 
$0 这个程序的执行名字 
$n 这个程序的第n个参数值,n=1..9 
$* 这个程序的所有参数 
$# 这个程序的参数个数 
$$ 这个程序的PID 
$! 执行上一个指令的PID 
$? 执行上一个指令的返回值
 
 
三、shell中的变元
 
* 任意字符串之前的那个普通字条
. 任意字条
^ 行首
$ 行尾
+ 一个或多个之前的普通字符 
? 0个或1个之前的普通字条
| 表示或
() 表示一个字条集合 
[abc] a, b, c三者中之一 
[a-n] 从a到n的任一字符
 
 
 
四、几个特殊字符表示
 
\b 退回 
\c 打印一行时没有换行符 
\f 换页 
\r 回车 
\t 制表 
\v 垂直制表 
\\ 反斜线本身 
 
 
 
五、判断文件的属性
 
格式:-操作符 filename 
-e 文件存在返回1, 否则返回0 
-r 文件可读返回1,否则返回0 
-w 文件可写返回1,否则返回0 
-x 文件可执行返回1,否则返回0 
-o 文件属于用户本人返回1, 否则返回0 
-z 文件长度为0返回1, 否则返回0. 
-f 文件为普通文件返回1, 否则返回0 
-d 文件为目录文件时返回1, 否则返回0
 
 
 
六、测试两个整数关系
 
数字1 -eq 数字2 两数相等为真 
数字1 -ne 数字2 两数不等为真 
数字1 -gt 数字2 数字1大于数字2为真 
数字1 -ge 数字2   数字1大于等于数字2为真 
数字1 -lt 数字2 数字1小于数字2为真 
数字1 -le 数字2 数字1小于等于数字2为真
 
 
七、逻辑测试
 
-a     与 
-o      或 
!        非
 
 
八、shell中特殊字符
 
1、$ 美元符 
2、\ 反斜杠 
3、` 反引号 
4、" 双引号 
5、< ,>,*,?,[,] 
举列说明 
1、echo $? 显示的是上一条指令退出状态 
2、echo "$?" 效果同上 
3、echo '$?' 显示的是$? 
4、echo \$? 显示的是$? 
5、echo "\$?" 显示的是$? 
 
$符号
双引号对$符号不起作用
单引号可以将特殊字符的的特殊意义屏蔽掉
反斜杠也可以将特殊字符的特殊含义屏蔽掉
 
\ 反斜杠
反斜杠的作用是将特殊符号字符的特殊含义屏蔽掉
A=1234 
echo \$A 显示为$A 如果不加\将显示为1234 
echo \` 显示为` 
echo \" 显示为双引号 
echo \\ 显示为\
 
 
` 反引号
反引号的功能是命令替换,将反引号中的字符串做为命令来执行。
A=`date` 
echo $A 显示的不是date而是当时的时间串
如有一文件A的内容如下  
ABCDEFG 
1234456 
abcdefg 
B=`cat A|grep 234`� # 检索文件A中含有字符串234的行 
echo $B 将显示为1234456 
echo "$B" 将显示为123456
echo "\$B" $B
 
 
" 双引号
在系统中有些特殊字符,为避免引用这些特殊字符 往往用双引号或单引号将这些特殊字符引起来,使其不具有特殊含义。 
但有一部分特殊字符在引号中还是具有特殊含义,用双引号引起来是不起作用的。本文中所列的前四个特殊字符在双引号中还是特殊字符。
为了使其不具有特殊含义一是用单引号引进来二是用\反斜线使其失去作用。 
我们想输出这些特殊字符 " $ \ ` 
echo """ 
echo "$" 
echo "\" 
echo "`" 
但是如上不能帮你完成,我们可以使用如下的命令完成
echo "\"" 
echo "\$" 
echo "\\" 
echo "\`" 
 
 

你可能感兴趣的:(shell)