本系列博文是听了课程Linux达人养成计划后的个人学习笔记,较为详细,供大家参考。
目录
第9章 shell基础
9.1 shell概述
shell 是什么
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序。
shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令。通俗地讲,shell充当用户和内核之间的翻译器。
shell分类
shell的两种主要语法类型是Bourne 和 C,这两种语法彼此不兼容。
Bourne Shell:sh、ksh、Bash、psh、zsh
C Shell:csh、tcsh,C Shell主要在BSD版的Unix中使用,其语法和C语言类似而得名。
当前linux中的标准shell是B
ash
echo $SHELL
# 查看当前shell
v
i /etc/shells #
查看支持的shell类型
9.2 脚本执行方式
1、echo输出命令
echo [选项] [输出内容]
选项:
-e
支持反斜线控制的字符转换
控制字符 | 作 用 |
---|---|
\a | 输出警告音 |
\b | 退格键,也就是向左删除键 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,也就是Tab键 |
\v | 垂直制表符 |
\0nnn | 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数 |
\xhh | 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 |
常规用法 :
echo -e "h\te\tl\nl\to\t"
echo -e \ "\x68\t\x\65\t\x\6c\n\x\6c\t\x6f\t"
2、echo输出颜色
echo -e "\e[1;31m 嫁人就要嫁凤姐 \e[0m"
\e[1;31m #开启颜色显示
\e[0m #取消颜色显示
30m=黑色,31m=红色,32m=绿色,33m=黄色
34m=蓝色,35m=洋红,36m=青色,37m=白色
3、第一个脚本vi hello.sh
#!/bin/bash
echo -e "\e[1;34m hello world! \e[0m"
脚本执行方法
方法一:赋予执行权限,直接执行
chmod 755 hello.sh
方法二:通过Bash调用的执行脚本
bash helloworld.sh
9.3 Bash的基本功能
9.3.1 命令别名与快捷键
- 别名永久生效与删除别名
vi ~/.bashrc #
写入环境变量配置文件source .bashrc #
环境变量直接生效
- 查看与设定别名
alias
# 查看系统中所有的命令别名alias 别名= '原命令' #
设定命令别名unalias 别名 #
删除别名
- 命令生效顺序
1. 执行用绝对路径或相对路径执行的命令
2. 执行别名
3. 执行 Bash 的内部命令
4. 执行按照 $PATH 环境变量定义的目录查找顺序找到第一个命令
- 常用快捷键(非常有用,记住!!)
ctrl+c
强制终止当前命令ctrl+l
清屏 同命令clear
ctrl+a
光标移动到命令行首ctrl+e
光标移动到命令行尾ctrl+u
从光标所在位置删除到首行ctrl+z
把命令放入后台ctrl+r
在历史命令中搜索 上下滚动
9.3.2 历史命令
- 历史命令
history [选项] [历史命令保存文件]
选项:
-c
清空历史命令-w
把缓存中的历史命令写入历史命令保存文件~/.bash_history
/etc/profile
HISTSIZE属性可设置保存历史命令条数,默认1000条
- 历史命令的调用
↑↓
调用以前的历史命令(常用)!n
重复执行第n条历史命令!!
重复执行上一条命令!字符串
重复执行最后一条以该字符串开头的命令(常用)
9.3.3 输出重定向
- 标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
- 输出重定向
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令>文件 |
以覆盖的方式,把命令的正确输出到制定的文件或设备当中 |
标准输出重定向 | 命令>>文件 |
以追加的方式,把命令的正确输出到制定的文件或设备当中 |
标准错误输出重定向 | 命令2>文件 |
以覆盖的方式,把命令的错误输出到制定的文件或设备当中 |
标准错误输出重定向 | 命令2>>文件 |
以追加的方式,把命令的错误输出到制定的文件或设备当中 |
- 正确输出和错误输出同时保存
符号 | 作用 |
---|---|
命令>文件 2>&1 |
以覆盖的方式,把正确输出和错误输出都保存到一个文件当中 |
命令>>文件 2>&1 |
以追加的方式,把正确输出和错误输出都保存到一个文件当中 |
命令 &> 文件 |
以覆盖的方式,把正确输出和错误输出都保存在同一个文件当中 |
命令 &>> 文件 |
以追加的方式,把正确输出和错误输出都保存在同一个文件当中 |
命令>>文件1 2>>文件2 |
把正确的输出追加到文件1中,吧错误的输出追加到文件2中 |
ls &>/dev/null
把输出结果直接丢了
- 输入重定向
wc
直接输入字符 ctrl + d
停止输入wc [选项][文件名]
-c
统计字节数-w
共计单词书-l
统计行数
9.3.4 管道符
- 多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1;命令2 |
多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1&&命令2 |
逻辑与。当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行 |
|| | 命令1||命令2 |
逻辑或。当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行 |
- 管道符
命令1 | 命令2
命令1的整除输出作为命令2的操作对象
more
分页显示ls -l /etc | more
查询结果翻页:空格
表示向下翻一页回车
表示向下滚动一行/字符串
表示查询字符串q
离开more界面
9.3.5 通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或人一多个任意字符,也就是可以匹配任何内容 |
[] | 匹配括号中任意一个字符。例如:[abc] 代表一定匹配a,b,c中的一个字符 |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z] 代表匹配一个小写字母。 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9] 代表匹配一个不是数字的字符 |
- Bash中其他特殊符号
符号 | 作用 |
---|---|
” | 单引号。在单引号中所有的特殊符号,如“$”和 “`”(反引号)没有特殊含义 |
“” | 双引号。在双引号中特殊符号都没有特殊含义,但是 “$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义 |
` | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。 |
$() | 和反引号作用一样,用来引用系统命令。 |
# | 在Shell脚本中,#开头的行代表注释 |
$ | 用户调用变量的值,如果需要调用变量name的值时,需要用$named 的方式得到变量的值。 |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。 |
花了三天时间,终于把Linux达人养成计划I学习完了!!还有II的学习笔记会在之后尽快更新。
更多内容请查看: