一、Shell 介绍
Shell俗称壳,它是Linux操作系统的命令语言,同时又是该命令语言的解释器程序。Shell的位置处在用户与内核之间,作用是“将用户的各种操作转换为内核能看懂的语言”,让用户能够更加高效、安全、低成本地使用Linux内核。

Linux操作系统有多种发行版本,使用具有不同特性的Shell,Bash作为许多Linux发行版的默认Shell,它的特性如下:
- 自动补齐:使用Tab键可以自动补全命令和路径;
- 命令行历史:使用上下键可以翻看最近执行的命令,用Ctrl+R组合键可以搜索历史命令,用history命令可以调出之前执行的历史命令记录;
- 命令别名:用一个短命令去代替执行一段很长的命令;
- 输入输出重定向和管道:改变数据流的输入输出方向;
- 支持使用通配符和特殊符号;
- 支持变量用于条件测试以及迭代的控制结构。
Shell程序一般都是放在 /bin 或者 /usr/bin 目录下,当前的Linux操作系统都支持哪些Shell程序,可以在 /etc/shells 文件中通过 cat 命令查看。
$ cat /etc/shells/bin/bash /bin/csh /bin/dash /bin/ksh /bin/sh /bin/tcsh /bin/zsh
二、命令行快捷键
(1)最常用快捷键
| 快捷键 | 功能说明 |
| Tab | 命令或路径等的补全键 |
(2)移动光标快捷键
| 快捷键 | 功能说明 |
| Ctrl+A | 光标回到命令行首 |
| Ctrl+E | 光标回到命令行尾 |
| Ctrl+F 或 → | 光标向右移动一个字符 |
| Ctrl+B 或 ← | 光标向左移动一个字符 |
| option+F 或 option+→ | 光标向右移动一个单词 |
| option+B 或 option+← |
光标向右移动一个单词 |
(3)复制、剪切、粘贴、删除快捷键
| 快捷键 | 功能说明 |
| Ctrl + Insert 或 Ctrl + Shift + C | 复制命令行选中内容 |
| Shift + Insert 或 Ctrl + Shift + V 或 鼠标中键 | 粘贴复制的内容 |
| Ctrl+K | 剪切(删除)光标处到行尾的字符 |
| Ctrl+U | 剪切(删除)光标处到行首的字符 |
| Ctrl+W | 剪切(删除)光标前的一个单词; |
| Ctrl+Y | 粘贴Ctrl+K/Ctrl+U/Ctrl+W剪切的文本 |
| Ctrl+H 或 Backspace | 删除光标前一个字符 |
| Ctrl+D 或 Delete | 删除光标后一个字符 |
(4)控制快捷键
| 快捷键 | 功能说明 |
| Ctrl+L | 清屏,等同于clear命令 |
| Ctrl+C | 中断命令行或终端正在执行的任务 |
| Ctrl+Z | 暂停终端正在执行的任务 |
| Ctrl+S | 锁定终端,使之无法输入内容 |
| Ctrl+Q | 解锁执行Ctrl+S的锁定状态 |
| Ctrl+D | 退出当前shell窗口 |
(5)历史命令快捷键
| 快捷键 | 功能说明 |
| Ctrl+P 或 ↑ | 查看前一条命令 |
| Ctrl+N 或 ↓ | 查看下一条命令 |
| Ctrl+R | 搜索命令行使用过的历史命令记录 |
| Ctrl+G | 从执行Ctrl+R的搜索历史命令模式中退出; |
(6)!号开头的快捷命令
| 快捷键 | 功能说明 |
| !! | 执行上一条命令; |
| !pw | 执行最近以pw(或其他)开头的命令; |
| !pw:p | 仅打印最近以pw(或其他)开头的命令,但不执行; |
| !num | 执行历史命令列表的第num(数字)条命令; |
| !$ | 上一条命令的最后一个参数; |
(7)ESC相关
| 快捷键 | 功能说明 |
| Esc+. | 获取上一条命令最后的部分(空格分隔); |
| Esc+B | 移动到当前单词的开头; |
| Esc+F | 移动到当前单词的结尾; |
| Esc+T | 颠倒光标所在处及其相邻单词的位置; |
三、命令行提示符
当打开命令行终端时,会看到如下所示的开头,称为命令提示符。命令提示符的出现意味着可以开始输入命令了,它并不是命令的一部分,只是起到了提示作用。

命令提示符各部分含义如下:
- root:当前登录的用户名,root代表超级用户。
- @和[ ]:表示提示符的分隔符号,固定不变,没有特含义。
- nylinux:主机名称。
- ~:当前所在的位置,~表示家目录。
- #:用来标识当前登录的是普通用户还是超级管理员,如果是普通用户就用符号 $ 表示,如果是超级管理员就用符号 # 表示。
家目录又称为主目录,因为Linux操作系统最开始是纯字符界面,用户登录后需要有一个初始登录的位置,这个初始登录位置就称为用户的家,超级管理员用户的家目录是“/root”,而普通用户的家目录是 “/home/用户名”。
四、命令语法格式

命令的语法格式中的[ ]代表可选项,command、选项和参数之间需要用空格进行分隔。其主要由以下几部分组成:
- command:命令,必写部分,代表想要执行的操作。
- 选项:对命令进行微调,决定命令如何执行,同一个命令配合不同的选项可以获得不同的结果。
- 参数:命令的处理对象,可以是文件、文件夹、用户等,可以同时操作多个目标对象,参数可以是0个或多个。
执行命令的快捷操作键:
- 按回车键(Enter)表示输入结束,提交操作系统执行;
- 若命令输入一半发现输错了,可以按删除键(Backspace)删除字符;
- 若命令太长,可以用Tab键进行命令补全;
- 若命令执行的过程中不想让它继续执行了,使用 Ctrl+C 组合键进行中断;
- 若整条命令的长度太长,可以使用反斜杠“\”进行换行。
五、命令帮助
在Linux操作系统中,命令可以分为内置命令和外部命令两种类型。内置命令是操作系统自带的,它们存在于操作系统内部,操作系统安装好后就可以直接使用。外部命令相当于一个软件程序,需要下载安装包,完成安装之后才可以使用。

在命令行中执行help命令可以查看所有的内置命令,包括其使用方式:

要查看内置命令的使用方法,可以使用以下方式:
(1)help帮助命令
用来查看内置命令的帮助文档,执行help命令后,屏幕会显示出关于这条命令的详细信息和使用方式。
语法格式:
命令 --help
示例如下:

(2)man手册
它是以全屏方式显示的在线帮助,按q键可以退出,按上下键进行移动翻阅。
语法格式:
man 命令
示例如下:


(3)info命令
它是另一种形式的在线帮助,和man手册的功能及操作方式类似,但是更加详细,按q键退出。
语法格式:
info 命令
一般获取命令帮助信息的流程为:先用help命令来获取帮助信息,用man手册来进行补充;若还不明白,就去网上找中文资料。info命令较为冷门,用得很少。
(4)tldr命令
通过man命令得到的软件手册内容十分繁多,可以使用tldr命令快速了解软件的常用用法,需提前安装
$ sudo apt install tldr
使用方法:
tldr 命令名
六、命令行常用命令
定义别名 alias
语法格式:
alias 别名='命令'
描述:用于给命令定义别名。若一个命令太长,可以使用 alias 对这段长命令设置别名,直接输入别名就能执行这段长命令。若直接执行 alias 命令,则会显示当前所有的别名。切记:设置的别名不要和当前系统中的命令重名。
示例:
# 给date的长命令定义一个别名 $ alias dt='date +"%Y-%m-%d %H:%M:%S"' $ dt 2022-08-19 18:05:35# 查看所有已设置的别名 $ alias alias cp='cp -i' alias dt='date +"%Y-%m-%d %H:%M:%S"' alias egrep='egrep --color=auto' ---省略部分内容---# 使用unalias命令取消自定义的别名 $ unalias dt $ dt bash: now: 未找到命令...
查找命令路径 which
语法格式:
which [选项] [参数]
描述:查找并显示给定命令的绝对路径,环境变量$PATH中保存了查找命令时需要遍历的目录,which命令会在环境变量$PATH设置的目录里查找符合条件的文件。一般在使用which命令的过程中不会加选项。
which命令的常用选项:

示例:
# 搜索bash命令的位置。 $ which bash /usr/bin/bash# 环境变量$PATH内容 $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin