1.Shell是什么
- shell是命令行解释器,将用户语言根据ASCII码表转换成机器语言传给Linux内核。
- Shell还是功能强大的脚本编程语言,易编写,易调试,灵活性强;在Shell中可以直接调用Linux系统命令。
2.Shell分类
- 1979年Unix使用的Bourne Shell,主文件名为sh,不支持历史命令;主要包括:sh、ksh、Bash、psh、zsh
- C Shell 主要在BSD版的Unix系统中使用,与C语言类似;主要包括:csh、tcsh
注意:
- Unix中主要用的是Cshell,Linux中用的是Bash,也是标准shell。
- 通过echo $SHELL可以查看当前系统用的是哪种shell,结果:/bin/bash;
- 其中/etc/shells中配置了可兼容的shell。
3.Shell的脚本执行方式
3.1 echo命令
命令格式: echo [选项][输出内容]
作用:将信息显示在显示屏上。
选项:
-e 支持反斜线控制的字符转换
如:\a 输出警告音
\b 向左删除键
\n 换行符
\r 回车键
\t 制表符,即Tab键
\v垂直制表符
\0nnn 按照八进制ASCII码输出字符
\xhh 按照十六进制ASCII码输出字符。
echo输出可以使用不同颜色,语法:echo -e “\033[字背景颜色;文字颜色m字符串\033[0m”
3.2 shell脚本编写基础认识
- 文件开头一定加#!/bin/bash,作用:如果调用非shell语言,也作为shell处理!
- 可以直接调用linux命令,更适合做系统管理。
3.3shell脚本执行
方法一:赋予执行权限,直接运行,如:
chmod 755 hello.sh
./hello.sh
方法二:通过bash调用执行脚本
bash hello.sh #通过bash直接解释脚本,可以不用赋执行权限。
3.4 Bash基本功能
3.4.1 命令别名及快捷键
命令格式:alias 别名命令名=‘命令‘,如:alias vi=‘vim’
若让别名永久生效,则可以写入.bashrc文件(环境变量配置文件),vi ~/.bashrc,后source .bashrc,立刻生效。
删除别名:unalias 别名
注意:定义了别名后,命令的执行顺序:使用绝对路径或相对路径的命令->别名命令->Bash内部命令->$PATH环境变量定义的目录找到的命令
3.4.2常用快捷键
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u从光标所在位置删除到行首
ctrl+z把命令放到后台
ctrl+r在历史命令中搜索
3.4.3 历史命令
1.history命令
命令格式:history [选项][历史命令保存文件]
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件~/.bash_history(~用户家目录)
如:直接使用history,不加参数可以查看到本次使用过的和之前的历史命令。使用history -w可以直接把当前的历史命令直接写入.bash_history中。
使用cat .bash_history查看文件中保存的历史命令。
注意:历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改:HISSIZE=1000,修改成想要保存的值。
2.历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字符串”重复执行最后一条以该字符串开头的命令
注意:调用几调用的history中查出来的命令。
常用的是第1条和最后1条。
3.命令和文件补全
原理:命令的补全,依赖的是$PATH中的路径去查找命令;
文件补全,依赖的是目录。
方法:使用tab键补全。
作用:1.加快输入速度;
2.检查输入是否存在错误。
3.4.4 输出重定向
1.标准输入输出
注意:实际使用中“文件描述符”用的更多。
2.输出重定向
含义:默认输出是显示器,改变其输出对象,比如输出到文件中,称为输出重定向。
- 常用的输出重定向语法:
命令>文件 #把命令输出到指定的文件或设备中,注意是覆盖方式。
命令>>文件 #把命令追加到指定的文件或设备中。
注意:以上输出的都是正确内容,如果是错误的输出需要使用:
错误命令 2>文件
错误命令 2>>文件
缺点:正确输出和错误输出要单独操作。
- 正确输出和错误输出一起重定向
命令格式:命令 &>文件,命令 > 文件 2>&1 #两个命令等同
命令 &>>文件,命令 >> 文件 2>&1
命令 >>文件1 2>>文件2 #正确的命令输出到文件1,错误的命令输出到文件2,这个命令用的比较多。
3.输入重定向(实际使用少)
- 命令:wc
作用:统计键盘输入的字符
命令格式:wc [选项][文件名]
-c 统计字节数
-w 统计单词数
-l 统计行数
- 输入重定向
默认wc命令统计的是键盘输入的字符,可以通过输入重定向可以统计文件中的字符。
如:wc <abc.log,或者wc abc.log
3.4.5 管道符
- 多命令顺序执行
通过三个运算符进行连接,“;&& ||”,
; #如:date;ls;pwd多个命令顺序执行,命令间没有任何逻辑关系。注意:中间的命令执行错误,不影响其他命令的执行!
&& #命令1&&命令2,命令1正确才执行命令2
|| #命令1||命令2,命令1执行错误才执行命令2
实际应用:如:ls && echo yes || echo no #命令正确执行输出yes,命令错误输出no
- 管道符
命令格式:命令1 | 命令2
#命令1的输出作为命令2的输入
如:ls -l /home | more,netstat -an | grep ESTABLISHED,netstat -an | grep ESTABLISHED | wc -l (双管道符)
3.4.6 通配符
其他特殊符号:
注意:
- ‘’,""区别,如:aa=111,echo ‘$aa’-->$aa;echo "$aa"-->111
- ``,里面是系统命令,比如:a=`ls`,echo "$s"-->显示ls查询出来的内容,等同于a=$(ls)