1,什么是Shell
Shell 是kernel的一个外壳,是一个命令解析器,负责用户与内核的交互。
2,Shell脚本
Shell脚本类似于批处理,可以方便的执行大量命令。
3,编写shell脚本
(1),用编辑器打开一个文件,首行固定格式,加入:
#!/bin/bash。
#注释,第一行格式固定
一个好的程序文件,添加注释是很重要的,即使很长时间不用,当再次使用时,也能很容易的回想起此程序的功能。
(2),编写shell脚本。
这个就是最主要学习的地方,至于怎么学习,学习什么,只有之后用心了。建议从最简单的Linux命令开始学习。
4,运行shell
(1),赋予文件执行的权限。
chmod +x file1name
(2),执行shell文件
在终端下输入:
./ filename
Remark:以上3,4两步都是在终端下操作。当然如果编写能力很强第3步可以在其他编辑器中编写。
以下为一些常用命令和符号:
- 管道操作符 (|) ,将一个命令的输出作为另外一个命令的输入。
grep "hello" file.txt | wc -l
在file.txt中搜索包含有”hello”的行并计算其行数。
在这里grep命令的输出作为wc命令的输入。
- 重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。
> 写入文件并覆盖旧文件
>> 加到文件的尾部,保留旧文件内容。
- 反短斜线(`)——键盘Esc键下面的按键对应的英文符号,使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。
find . -mtime -1 -type f -print
用来查找过去24小时(-mtime –2则表示过去48小时)内修改过的文件。
如果您想将所有查找到的文件打一个包,则可以使用以下脚本:
#!/bin/sh # The ticks are backticks (`) not normal quotes ('): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
- 通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ]
判断是否是一个文件
[ -x "/bin/ls" ]
判断/bin/ls是否存在并有可执行权限
[ -n "$var" ]
判断$var变量是否有值
[ "$a" = "$b" ]
判断$a和$b是否相等
[ -r "$mailfolder" ]
判断$mailfolder是否可读
[ -d $TARGET_DIR ]
判断$TARGET_DIR是否是一个文件夹
-
特殊的变量$1,该变量包含了传递给该程序的第一个参数值。
-
$? :是上一条命令的返回码。
[ $? -eq 0 ]
测试上一条命令的是否执行成功.
- 特殊的变量$*,该变量包含了所有输入的命令行参数值。
- 特殊的变量$#,表示命令参数个数。
- 转义字符——反斜杆()。在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓扩展的意思是程序会把通配符(比如*)替换成合适的文件名,把变量替换成变量值。为了防 止程序作这种替换,您可以使用引号。单引号更严格一些,它可以防止任何变量扩展;双引号可以防止通配符扩展但允许变量扩展;还有一种防止这种扩展的方法,那就是使用转义字符——反斜杆()。