shell基础

1.shell概述

shell是什么

  1. shell是一个命令行解析器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序。
  2. shell还是一个功能相当强大的变成语言,易编写,易调试,灵活性强。shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令。

查看当前使用的shell类型

1
$ echo $SHELL

Linux支持的shell

1
$ cat /etc/shells

2.脚本执行方式

echo输出命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ echo [选项] [输出内容]

选项:
-e: 支持反斜线控制的字符转换

控制字符:
\a 输出警告音
\b 退格键 就是左删除
\n 换行
\r 回车
\t 制表符 也就是tab
\v 垂直制表符
\0 八进制
\x 16进制

echo颜色输出

1
2
3
4
5
6
7
8
9
10
11
$ echo -e "\e[1;31mhello world\e[0m"

颜色:
30m 黑色
31m 红色
32m 绿色
33m 黄色
34m 蓝色
35m 杨红
36m 青色
37m 白色

\e 代表调用颜色
[1; 开启颜色
\e[0m 关闭颜色

脚本执行

赋予执行权限,直接运行

1
2
$ chmod 755 hello.sh
$ ./hello.sh

3.Bash的基本功能

命令别名与快捷键

查看系统中所有的命令别名

1
$ alias

设定命令别名

1
$ 设定命令别名

写入环境变量配置文件别名永久生效

1
$ vi ~/.bashrc

删除别名

1
$ unalias别名

命令生效顺序:

  1. 第一顺位执行用绝对路径或相对路径执行的命令
  2. 第二顺位执行别名
  3. 第三顺位执行Bash的内部命令
  4. 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

常用快捷键:

Ctrl+c 强制终止当前命令
Ctrl+l 清屏
Ctrl+a 光标移动到命令行首
Ctrl+e光标移动到命令行尾
Ctrl+u 从光标所在位置删除到行首
Ctrl+z 把命令放入后台
Ctrl+r 在历史命令中搜索

历史命令

1
2
3
4
5
$ history [选项] [历史命令保存文件]

选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件~/.bash_history

历史命令的调用:

  • 使用上、下箭头调用以前的历史命令
  • 使用”!n”重复执行第n条历史命令
  • 使用”!!”重复执行上一条命令
  • 使用”!字符串”重复执行最后一条以该字符串开头的命令

输出重定向

1.标准输出重定向:

以覆盖的方式,把命令的正确输出输出到指定文件或设备中

1
$ [命令] > [文件]

以追加的方式,把命令的正确输出输出到指定的文件或设备当中

1
$ [命令] >> [文件]

2.标准错误输出重定向:

以覆盖的方式,把命令的错误输出输出到指定文件和设备中

1
$ [错误命令] 2> [文件]

以追加的方式,把命令的错误输出输出到指定的文件或设备当中

1
$ [错误命令] 2>> [文件]

3.正确输出和错误输出同时保存

以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中

1
$ [命令] > [文件] 2>&1

以追加的方式,把正确输出和错误输出都保存到同一个文件当中

1
$ [命令] >> [文件] 2>&1

以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中

1
$ [命令] &> [文件]

以追加方式,把正确输出和错误输出都保存到同一个文件当中

1
$ [命令] &>> [文件]

把正确的输出追加到文件1中,把错误的输出追加到文件2中

1
$ [命令] >> [文件1] 2 >> [文件2]

多命令顺序执行

多个命令顺序执行,命令之间没有任何逻辑

1
$ [命令1] : [命令2]

逻辑与,当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行

1
$ [命令1] && [命令2]

逻辑或,当命令1执行不正确,则命令2才会执行,当命令1正确执行,则命令2不会执行

1
$ [命令1] || [命令2]

管道符:
命令1的正确输出作为命令2的操作对象

1
$ [命令1] | [命令2]