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代替当前程序