PART3 Linux Shell 基础总结
1 Shell是什么
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
2 Shell分类
Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
3 Shell脚本
打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。
输入一些代码,第一行一般是这样:
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本。
4 运行Shell脚本
5 echo命令
用于字符串的输出。
(1)显示普通字符串
(2)显示转义字符
(3)显示变量
(4)显示换行
(5) 显示不换行
(6)显示结果定向至文件
(7)原样输出字符串,不进行转义或取变量(用单引号)
(8)显示命令执行结果
6 命令别名与快捷键
当你输入alias时,会显示所有的别名:
别名书写格式(alias 别名='原命令'):
如果别名不写入环境变量配置文件,那么每次启动时就会别名就会消失:
vi ~/.bashrc (写到这个文件里面就可以了,不用每次开机都需要修改);
常用快捷键:
ctrl + C #强制终止当前命令
ctrl + Z #把命令放入后台,无终止功能,仍会占用系统资源
ctrl + L #清屏,等价于clear
ctrl + R #在历史命令中搜索
ctrl + A #光标移动到命令行首
ctrl + E #光标移动到命令行尾
ctrl + U #从光标所在位置删除到行首
7 历史命令与命令补全
(1)history命令
history [选项] [历史命令保存文件] |
选项: |
-c:清空历史命令(不建议清空) -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history |
PS:单独输入命令history 会显示缓存中的历史命令,其比~/.bash_history中的命令多一些,因为~/.bash_history中仅保存上次登录正确注销后的命令,而history中显示的命令还包括重新登陆后新输入的命令。
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改。
历史命令的调用:
(2)命令与文件补全
在Linux命令行下,输入字符后,按两次Tab键,shell就会列出以这些字符打头的所有可用命令。如果只有一个命令匹配到,按一次Tab键就自动将这个命令补全。比如,想更改密码,但只记得这个命令前几个字母是pass。这时候,按Tab键,shell就自动输出 passwd 命令,非常方便。
当然,除了命令补全,还有路径、文件名补全。这个在我们 cd 到特定目录时特别好用。
命令补全实际上仍然是在PATH中查找。文件目前是在你输入的路径中查找。
8 输入输出重定向
重定向指将输出至屏幕的内容改为输出至指定的文件中。
(1)标准输出重定向
只能输出正确信息,错误信息不会输至文件中。
(2)标准错误输出重定向(仅输出错误信息)
(3)正确输出和错误输出同时保存
PS:常用:命令名 &> /dev/null #将命令执行后的输出丢到黑洞中(相当于垃圾站),既不会显示至屏幕也不保存至文件。
(4) 输入重定向(使用较少)
以wc命令为例来说明输入重定向:
9 管道符
1. 多命令顺序执行
&& 和 || 组合可以判断命令是否正确,例如:ls && echo yes || echo no #若ls命令正确,打印yes;否则打印no
2. 管道符
10 通配符
1. 通配符(主要用来匹配文件名和目录名)
2. Bash中其他特殊符号
(1)单引号和双引号
(2)反引号
(3)$()
(4)转义符