九.Shell基础

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 别名='原命令' #设定命令别名

别名永久生效与删除别名

设置别名永久生效:

在.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的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。

你可能感兴趣的:(九.Shell基础)