1. 以 #! /bin/sh 开头。
2. 赋值语句内一定不要留多余空格,语句后不必加分号。
如 a = "Hello",等号两端的空格会让shell以为a是一个命令。
3. 取变量值在变量前加 $。
如 echo $a,将把a的值打印出来,echo会自动打印换行符。
此方法在字符串中也可使用。
如 echo "$a"
4. 使用chmod +x 使文件可执行。
5. 在shell中可以使用容易的unix命令。
6. expr进行数学计算。
如:expr 2 "+" 3 (运算符需要加引号)
也可以使用bc计数器,在bc计数器中运算符不需要加引号。
也可以使用以下方式计算:$[2 + 3]
所有的数学运算只能处理整数,不能处理小数。
7. file得到文件类型。
如:file filename
8. sort对文件排序输出,但不改变原文件。
如:sort filename
9. uniq删除连续的重复项。
如:sort filename | uniq
10. basename返回文件名,dirname返回路径名。
11. grep在文件中查找指定字符串。
如:grep "string" filename
find查找文件。
如:find ./ -name filename
12. sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令
采用正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。比如:将linuxfocus 替换为 LinuxFocus :cat text.file | sed
's/linuxfocus/LinuxFocus/' > newtext.file。
13. awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F, '{print "," }'
这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下:
Adam Bor, 34, IndiaKerry Miller, 22, USA
命令输出结果为:
Adam Bor, IndiaKerry Miller.
14. wc -l计算行数,-c字符数,-w单词数。
15. 输出重定向。
>覆盖, >>追加
16. time, date, cal
17. 流程控制
if ...; then
18. tar命令
-f:指定文件名。
-c:创建归档文件tar,未压缩。
-x:解压。
-z:指定以gz格式压缩,解压对应格式也用此参数。
-j:指定以bz2格式压缩,解压对应格式也用此参数。
-v:显示详细信息。
-f 参数要放在最后面,否则会出错。
如:
压缩:
tar -cf test.tar test 创建归档文件test.tar,未压缩
tar -zcf test.tar.gz test 创建压缩文件test.tar.gz,压缩为gz格式
tar -jcf test.tar.bz2 test 创建压缩文件test.tar.bz2,压缩为bz2格式
注:压缩文件名是自己取的,但最好使用约定的扩展名
解压:
tar -xf test.tar 解压归档文件
tar -zxf test.tar.gz 解压gz格式文件
tar -jxf test.tar.bz2 解压bz2格式文件
以上各指令都可以加上-v选项以显示详细信息。
注意各参数的顺序,-f 参数要放在最后面,否则会出错。
19. diff, cmp
20. 操作DOS文件系统
只需在命令前加m即可以操作Windows文件系统,如mcd,mcopy等。
21. 默认情况下普通用户只能在自己的主目录~和/tmp目录下创建子目录或创建文件。
22. Linux中一切操作对象都是文件,包括鼠标键盘等。
23. grep, egrep, fgrep
前两个可以使用正则表达式。
元字符:
"^" :表示文本行开头。
"$" :表示文本行结束。
"." :表示任何一个字符。
"\" :讲元字符转化为普通字符。
"\" :表示一个由word组成的单词。
"[]" :表示搜索可选择的字符。如[0-9], [a-z]
"*" : 重复任意次数。
23. 显示文件或目录大小:du。
显示磁盘使用率:df。
两个指令都可以使用-h选项可将各数据转换成方便人类阅读的格式。
24. export声明变量。export声明过的变量在一个会话中都有效。
要使环境变量启动时自动初始化,可以在/etc/profile中使用export声明。
25. 位置参数:$1,$2 ...。它是在程序名之后输入的参数,各参数间用空格分隔。
$0是一个特殊变量,它是shell程序的文件名,不是位置参数。
如:echo $1 $2
在命令行调用时,提供两个参数,此脚本即可将此参数显示出来。
26. 预定义变量。由shell定义的特殊变量。
$#:位置参数的数量。
$*:所有位置参数的内容。
$?:命令执行后返回的状态。
$$:当前进程的进程号。
$!:后台运行的最后一个进程号。
$0:当前执行的进程名。
其中,$?用于检查上一个命令执行是否正确。
在Linux中,命令退出状态0表示命令正确执行,任何非0值都表示出错。
$$变量最常见的用途是用作临时文件的名字以保证临时文件不会重复。
27. 参数置换的变量
参考Red Hat Linux 9 系统管理员完全学习手册,P191
28. 命令分组
shell中的“()”与“{}”有特殊意义。
():shell会新建一个进程运行括号中的脚本,所以括号中的变量值的改变不会对外面的程序产生影响。
{}:以管道方式运行括号中的脚本,前一条指令的输出将作为后一条指令的输入。
所以在真正需要使用括号时需要使用转义字符\,否则会被解释为命令分组。
29. 信号。
参考Red Hat Linux 9 系统管理员完全学习手册,P195
30. shell程序的调试
-e:如果一个命令失败就立即退出。
-n:读入命令但是不执行他们。
-u:置换时把未置换的变量当作出错。
-v:当读入shell输入行时把他们显示出来。
-x:执行命令时把命令和他们的参数显示出来。
所有上面的选项也可以在shell程序内部使用“set -选项”说明,“set +选项”将禁止该项起作用。
31. 流程控制语句比较琐碎不再赘述。
32. 别名alias。
使用 alias 别名='命令',可以为命令指定别名。
输入alias将可以看到系统使用的所有别名,如:alias ll='ls -l'
33. history显示命令输入历史。
使用 !! 可以重复上一条命令。
34. bash内部命令
echo :回显命令。
命令:执行命令,用在其他语言中执行shell命令。
exec 命令:进程执行完此命令即终止。
export :声明变量,使后面的脚本都可以使用。
readonly : 声明变量为只读。
read 变量名:从控制台读入数据赋给变量,可以同时输入多个变量。
shift :左移位置参数,$2变为$1,$3变为$2。
wait :等待子进程结束
exit :退出,可指定数字作为返回状态。
. shell脚本:执行其他shell脚本
35. sync同步命令。将缓存中的数据写入磁盘。
36. 运行一个长时间的指令,shell脚本将停在对应指令处等待指令的结束。
为了在长指令执行同时可以继续进行其他处理,可以让长指令在后台运行。
要让指令以后台模式运行,只需在指令后加“&”即可。
37. 使用“ctrl+z”可以让一个进程挂起。
使用“bg”使挂起的进程恢复到后台运行,使用“fg”使恢复到前台运行。
38. “ctrl+c”向进程发出结束信号。“ctrl+d”表示输入完成,正常结束。
39. at:定时任务,只执行一次。
cron:周期运行任务,以固定时间间隔重复执行。
cron在系统启动时自动以后台方式启动,不需要手工运行。
只需在crontab配置文件中指明时间间隔及需要执行的指令后,系统就会在固定时间间隔里运行相应指令。
每个用户都可以有自己的crontab,位于/var/spool/cron下,使用crontab -e编辑此配置文件。
编辑/etc/crontab将对所有用户都生效。
40. who,w:查看当前系统中的用户情况。
41. kill:默认发送TERM信号,对于可以捕获该信号的进程这样就无法将其杀死,需要使用以下指令:
kill -9 PID , -9指明为KILL信号
阅读(2037) | 评论(0) | 转发(1) |