shell 是一个命令解释器,同时还是一种功能强大的程序设计语言,它定义各种变量和参数,并提高了在高级程序语言中才具有的控制结构,包括循环和分支。shell是解释性语言
shell的种类
最常见的shell: Bourne shell(sh) , C shell (csh)
Korn shell(ksh) Bourne-again shell (bash)
主讲 bash
bash 特点
命令记忆功能 : 上下键 即可
自动补全功能: 输入 tab 键 即可补全
别名设置功能: alias 声明 ,例如 常用 ls -l 查看目录下的文件 ,则可以 这样设置别名 ( alias ll = 'ls -l')
用户仅需输入 ll 即可调用
shell运行
第一种:
相对路径 直接执行
./sh01(假设脚本文件名为 sh01)
第二种:bash sh01 脚本名作为参数传递给 bash
第三种:bash < sh01 以输入重定向方式让bash 从给定的脚本文件中读入命令行( 这种执行方式的脚本后面不能带参数的)
shell 基础
shell 是文本文件,既由 字符组成的文件
1.通配符
符号 含义
* 匹配任意字符的0次或多次出现 (/ 斜线不匹配,因为用作路径名中的定界符了)
? 匹配任意单个字符 (/ 不匹配)
[] 匹配该字符组理里所限定的任何一个字符 例如 spa.[co] ,仅匹配 spa.c或 spa.o
[0-9] 仅匹配 0到9里边某一个数字
[^] or [!] 匹配不在该字符组中的任何一个字符
{string1,string2,...} 匹配其中一个指定的字符串
例: ls /ho/stu /ho/cs1 /ho/re,可写: ls /ho/{stu,cs1,re}
----待补----2021-2-12
2.引号
三种引号: 单引号 双引号 倒引号 ' "" `
先说下 转义字符 , 想在 编程中正确使用 某些字符符号,而不被 解释器 解释为语法符号,从而造成 语法错误, 使用 转义字符 " \ "
例如:
echo it is warm ; come over and visit(会报错)
修改后: echo it is warm \; come over and visit(将 ; 转为普通字符)
但有时 不容易阅读程序。所以 单引号的作用就体现出来了
echo it is warm (and sunny ) ; come over & visit(会报错)
修改: echo ' it is warm (and sunny ) ; come over & visit '
加上单引号即可,将整体作为字符串
单引号与双引号区别.png
双引号会使 变量引用符号 $ 和 倒引号 保留其含义,其他字符均为普通字符(如上图)
所以如果需要在双引号中输出 $ 和 倒引号,则需要在前边加上转义字符 \
而倒引号的用法呢
倒引号的用法.png
可以看到图中 date 两边用了倒引号, 由倒引号括起来的字符会被 shell解释为命令
date 是 查询日期命令,故而输出 today 的时候会输出当前日期
3.输入/输出重定向符号
类型 符号 作用
输入重定向 command <file 文件作为命令的输入
command<<分界符 标准输入中读入,直到遇见分界符才停止
错误输出重定向 command 2>file 覆盖的方式 把command的错误信息输出到file文件中
command 2>>file 追加的方式 把command的错误信息输出到file文件中
输出重定向 command >file 覆盖的方式 把command的正确输出结果输出到file文件中
command >>file 追加的方式 把command的正确输出结果输出到file文件中
案例此处 不给,有兴趣的可以根据表格自行测试
4.命令执行操作符
4.1 顺序执行
多条命令一行出现
ls;date;cd /user;pwd;
案例.png
4.2逻辑与 &&
如果用 && 连接命令,则命令1正确执行了,命令2才会执行,以此类推
cp /root && rm /root/test (格式: 命令1 && 命令2 && 命令3...)
4.3逻辑或 ||
使用 || 连接的话,只有前一条命令执行错误,后一条命令才能执行。
案例可与上一小节一样测试
4.4注释,管道符号
# 表示注释符号,放在行头,该行 所有内容会被解释为 注释内容,shell会忽略不执行
| 管道符,也是将多条命令 依次执行的命令,与 逻辑与 &&命令 不同的是: 管道符是 将上一条命令的输出作为下一条命令的输入
ls 是查看当前目录下的目录和文件
利用管道符 将 ls 的输出内容作为 grep 匹配的内容 ,可以看到 bin 和 snap 符合 匹配 被输出了
网友评论