Shell基础:
1-1Shell概述
*Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序
*Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令
*Shell的分类
*Bourne Shell:主文件名为sh
*C Shell:主要是在Unix系统中使用,语法与C语言类似
**Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
**Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell
**Linux支持的Shell
*/etc/shells
1-2脚本执行方式
1.echo输出命令
*echo [选项] [输出内容]
*选项:
-e:支持反斜线控制的字符转换
2.第一个脚本
*vi hello.sh
#!/bin/bash 表示为此脚本的解释程序
# 表示的是注释符号;如果#位于行首,则整行均为注释,如果#不位于行首,那么#的后面为注释 3.脚本执行
*赋予执行权限,直接运行
eg:chmod 755 hello.sh
./hello.sh
*通过Bash调用执行脚本
eg:bash hello.sh
1-3Bash的基本功能
*命令别名与快捷键
*历史命令
*输出重定向
*多命令顺序执行
*Shell中特殊符号
1-3-1别名与快捷键
什么是别名?
*命令别名==人的小名
查看与设定别名
*alias #查看系统中所有的命令别名
*alias 别名='原命令' #设定命令别名
*unalias 别名 #删除别名
命令生效顺序 ???????
*第一顺位执行用绝对路径或相对路径执行的命令
*第二顺位执行别名
*第三顺位执行Bash的内部命令
*第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
*ctrl+c 强制终止当前命令
*ctrl+l 清屏
*ctrl+a 光标移动到命令行首
*ctrl+e 光标移动到命令行尾
*ctrl+u 从光标所在位置删除到行首
*ctrl+z 把命令放入后台
*ctrl+r 在历史命令中搜索
1-3-2输出重定向
1.标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出
2.输出重定向
类型 符号 作用
标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出到指定的文件或设备当中
命令>>文件 以追加的方式,把命令的正确输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出到指定的文件或设备当中
错误命令 2>>文件 以追加的方式,把命令的错误输出到指定的文件或设备当中
输出重定向:就是本来正常输出,是输出到显示器上,但是现在用了输出重定向将其输出到文件中,因此叫重定向
3.输入重定向
*$ wc [选项] [文件名]
*选项:
-c统计字节数
-w统计单词数
-l统计行数
*命令<文件把文件作为命令的输入
*命令<<标识符
*...
*标识符把标识符之间内容作为命令的输入
1-4管道符
1.多命令顺序执行
多命令执行符 格式 作用
; 命令1 ;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1 && 命令2 逻辑与
当命令1正确执行,则命令2才会执行;
当命令1执行不正确,则命令2不会执行;
|| 命令1 || 命令2 逻辑或
当命令1执行不正确,则命令2才会执行;
当命令1正确执行,则命令2不会执行;
2.管道符
*命令格式:
*$命令1 | 命令2
#命令1的正确输出作为命令2的操作对象
1-5通配符
1.通配符
通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。eg:[abc]代表一定匹配一个字符,或者是a,又或者是b,或者是c
[-] 匹配中括号中任意一个字符,-代表一个范围。eg:[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号中任意一个字符。eg:[^0-9]表示匹配一个不是数字的字符
2.Bash中其它特殊符号
符号 作用
'' 单引号。在单引号中所有的特殊符号,如"$"和"'"(反引号)都没有特殊含义。
"" 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"'"和"\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
$() 和反引号作用一样,用来引用系统命令。
# 在shell脚本中,#开头的行代表注释。
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。
1-1Shell概述
*Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序
*Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令
*Shell的分类
*Bourne Shell:主文件名为sh
*C Shell:主要是在Unix系统中使用,语法与C语言类似
**Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
**Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell
**Linux支持的Shell
*/etc/shells
1-2脚本执行方式
1.echo输出命令
*echo [选项] [输出内容]
*选项:
-e:支持反斜线控制的字符转换
2.第一个脚本
*vi hello.sh
#!/bin/bash 表示为此脚本的解释程序
# 表示的是注释符号;如果#位于行首,则整行均为注释,如果#不位于行首,那么#的后面为注释 3.脚本执行
*赋予执行权限,直接运行
eg:chmod 755 hello.sh
./hello.sh
*通过Bash调用执行脚本
eg:bash hello.sh
1-3Bash的基本功能
*命令别名与快捷键
*历史命令
*输出重定向
*多命令顺序执行
*Shell中特殊符号
1-3-1别名与快捷键
什么是别名?
*命令别名==人的小名
查看与设定别名
*alias #查看系统中所有的命令别名
*alias 别名='原命令' #设定命令别名
别名永久生效与删除别名
设置别名永久生效:
在.bashrc中设置:alias 别名='原命令',设置永久别名后,其会自动保存到alias中,可以在alias中看到该命令别名,为什么我的设置永久生效别名不成功?????
*vi ~/.bashrc #写入环境变量配置文件*unalias 别名 #删除别名
命令生效顺序 ???????
*第一顺位执行用绝对路径或相对路径执行的命令
*第二顺位执行别名
*第三顺位执行Bash的内部命令
*第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
*ctrl+c 强制终止当前命令
*ctrl+l 清屏
*ctrl+a 光标移动到命令行首
*ctrl+e 光标移动到命令行尾
*ctrl+u 从光标所在位置删除到行首
*ctrl+z 把命令放入后台
*ctrl+r 在历史命令中搜索
1-3-2输出重定向
1.标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出
2.输出重定向
类型 符号 作用
标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出到指定的文件或设备当中
命令>>文件 以追加的方式,把命令的正确输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出到指定的文件或设备当中
错误命令 2>>文件 以追加的方式,把命令的错误输出到指定的文件或设备当中
输出重定向:就是本来正常输出,是输出到显示器上,但是现在用了输出重定向将其输出到文件中,因此叫重定向
3.输入重定向
*$ wc [选项] [文件名]
*选项:
-c统计字节数
-w统计单词数
-l统计行数
*命令<文件把文件作为命令的输入
*命令<<标识符
*...
*标识符把标识符之间内容作为命令的输入
1-4管道符
1.多命令顺序执行
多命令执行符 格式 作用
; 命令1 ;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1 && 命令2 逻辑与
当命令1正确执行,则命令2才会执行;
当命令1执行不正确,则命令2不会执行;
|| 命令1 || 命令2 逻辑或
当命令1执行不正确,则命令2才会执行;
当命令1正确执行,则命令2不会执行;
2.管道符
*命令格式:
*$命令1 | 命令2
#命令1的正确输出作为命令2的操作对象
1-5通配符
1.通配符
通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。eg:[abc]代表一定匹配一个字符,或者是a,又或者是b,或者是c
[-] 匹配中括号中任意一个字符,-代表一个范围。eg:[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号中任意一个字符。eg:[^0-9]表示匹配一个不是数字的字符
2.Bash中其它特殊符号
符号 作用
'' 单引号。在单引号中所有的特殊符号,如"$"和"'"(反引号)都没有特殊含义。
"" 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"'"和"\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
$() 和反引号作用一样,用来引用系统命令。
# 在shell脚本中,#开头的行代表注释。
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。