shell脚本学习系列(一)
下一篇:Bash变量与环境配置文件
1Shell基础
1.1概述
1.1.1Shell是什么?
Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在shell中可以直接调用Linux命令。
1.1.2Shell分类
Shell的两种主要语法类型有Bourne和C, 这两种语法彼此不兼容。
Bourne家族主要包括sh、ksh、Bash、psh、zsh; (主流Linux) C家族主要包括:csh、tcsh (BSD版Unix)
1.2脚本执行方式
1.2.1echo输出命令
1.2.1.1 echo [选项] [输出内容]
注意: 如果输出内容包含空格,则必须使用双引号或单引号
选项:
-e 支持反斜线控制的字符转换
控制字符 作用
\\ \本身
\a 输出警告音
\b 退格键,即向左删除键
\c 取消输出行末的换行符.和"-n"选项一致
\e ESCPE键
\f 换页符
\n 换行符
\r 回车键
\t 制表符,即tab键
\v 垂直制表符
\0nnn 八进制ASCII码输出字符
\xhh 十六进制ASCII码输出字符
示例:
1.echo -e 'hello world!' ======> hello world!
echo -e "ab\bc" ======> ac \b 表示退格删除
2.echo -e "\e[1;31m abcd \e[0m" =======> (红色的) abcd
30m-黑色; 31m-红色; 32m-绿色; 33m-黄色; 34m-蓝色;
35m-洋红; 36m-青色; 37m-白色;
- 1.2.1.2脚本开头:
#!/bin/Bash
- 1.2.1.3脚本执行
赋予权限
Chmod 755 xxxx.sh
执行
./xxxx.sh
或
bash xxxx.sh
1.3 Bash基本功能
- 1.3.1历史命令与补全
1.3.1.1history [选项] [历史命令保存文件]
选项:
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件~/bash_history
注意:历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改(HISTSIZE属性)
历史命令的调用:
1)使用上、下箭头调用以前的历史命令
2)使用"!n"重复执行第n条命令
3)使用"!!"重复执行上一条命令
4)使用"!字符串"重复执行最后一条以该字符串开头的命令
- 1.3.1.2使用tab键补全命令或文件名
- 1.3.2别名与快捷键
1.3.2.1Alias
alias 别名= '原命令' 设定别名
alias 查询命令别名
示例: alias vi = 'vim'
让别名永久生效:
vi /root/.bashrc
删除别名:
unalias 别名
注意:命令执行时的顺序
1)第一顺位执行用绝对路径或相对路径执行的命令
2)第二顺位执行别名
3)第三顺位执行Bash的内部命令
4)第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
- 1.3.2.2Bash常用快捷键
- 1.3.3输入输出重定向
- 1.3.3.1标准输入输出
- 1.3.3.2输出重定向
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备中. |
命令>>文件 | 以追加的方式, 把命令的正确输出输出到指定的文件或设备中. | |
标准错误输出重定向 | 错误命令 2>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备中. |
错误命令 2>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备中. | |
正确输出和错误输出同时保存 | 命令>文件 2>&1 | 以覆盖的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中. |
命令>>文件 2>1 | 以追加的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中. | |
命令 &>文件 | 以覆盖的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中. | |
命令 &>>文件 | 以追加的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中. | |
命令>>文件1 2>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
- 1.3.3.3输入重定向
wc [选项] [文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
命令<文件 把文件作为命令的输入
命令<<标识符
…
标识符 把标识符之间的内容作为命令的输入
- 1.3.4多命令顺序执行与管道符
- 1.3.4.1多命令顺序执行
- 1.3.4.2dd命令
dd命令可用于拷贝任意类型的文件,包括磁盘,分区等,主要用于磁盘拷贝.
dd if=输入文件 of=输出文件 bs=字节数 count=个数
选项:
if=输入文件 指定源文件或源设备
of=输出文件 指定目标文件或目标设备
bs=字节数 指定一次输入/输出的字节,即把字节数看做一个数据块
count=个数 指定输入/输出多少个数据块
例子:
创建一个1000kb的文件:dd if=/dev/zero of=/root/testfile bs=1k count=1000;
拷贝一个sda磁盘:dd if=/dev/sda of=/dev/sda2 bs=1024k count=1000;
- 1.3.4.3管道符 |
命令1 | 命令2 表示命令1的正确输出,作为命令2的操作对象
示例:
ll –a /etc/ | more
netstat –an | grep “ESTABLISHED”
grep [选项] “搜索内容” 文件名
选项:
-i 忽略大小写
-n 输出行号
-v 取反
--color=auto 搜索出的关键字用颜色显示
- 1.3.5通配符和其他特殊符号
- 1.3.5.1通配符
- 1.3.5.2其他特殊符号
shell脚本学习系列(一)
下一篇:Bash变量与环境配置文件