【终端】
概述
终端(terminal),是一个提供了命令的输入输出环境,在 Linux 下使用组合键 Ctrl+Alt+T
打开的就是终端
而 shell 是一个命令行解释器,是 Linux 内核的一个外壳,负责外界与 Linux 内核的交互
shell 接收用户或者其他应用程序的命令,然后将这些命令转化成内核能理解的语言并传给内核,内核执行命令完成后将结果返回给用户或者应用程序
因此,当打开一个 terminal 时,操作系统会将 terminal 和 shell 关联起来,当在 terminal 中输入命令后,shell 就负责解释命令
通用命令格式
在 Linux 中,无论是命令名还是文件名,是区分大小写的,一个命令的各组成部分间用空格分隔,一个命令的输入由回车结束
命令的通用格式为:命令字 [选项] [参数]
选项用于调节命令的具体功能,其书写形式如下:
- 以
-
引导短格式选项,即单个字符 - 以
--
引导长格式选项,即多个字符 - 多个短格式选项可以写在一起,用一个
-
引导
命令字前缀
在终端中:
@
符号前,是当前登录的用户名@
符号后到:
符号前,是计算机的主机名(hostname):
符号后到$
符号前,是当前目录$
符号,是普通用户的命令提示符#
符号,是 root 用户的命令提示符
输入与输出
在 Linux 中,最重要的就是命令,这就包含了两个过程:输入与输出
输入,就是打开终端,然后按键盘输入,最后按回车
输出,如果是查看,会返回你想要的结果,比如返回文件的内容;如果是执行,执行成功会没有输出,执行失败会告诉你哪里错了
下面介绍几条初学者常用的命令:
- 打印命令:
echo [输出内容]
- 创建空文件:
touch [文件名]
- 删除文件:
rm [文件名]
- 进入目录:
cd [目录名]
- 查看当前目录:
pwd
- 查看当前目录下的内容:
ls
常用快捷键
按键 | 作用 |
---|---|
Tab | 可得到提示,用于补全命令、目录、命令参数 |
Ctrl+c | 强行终止当前程序 |
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按任意键继续 |
Ctrl+k | 删除从光标所在位置到行末 |
Ctrl+a | 将光标移至行头 |
Ctrl+e | 将光标移至行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+Pgup | 将终端显示向上移动 |
Shift+Pgdn | 将终端显示向下移动 |
通配符
通配符是一种特殊语句,主要有星号 *
和问号 ?
,用来对字符串进行模糊匹配
例如,在查找文件夹时,不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符
终端里面输入的通配符是由 Shell 处理的,不是由所涉及的命令语句处理的,它只会出现在命令的”参数值”里(它不能出现在命令名称里,命令不记得,那就用 Tab
补全)
当 Shell 在”参数值”中遇到了通配符时,Shell 会将其当作路径或文件名在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展),否则就将该通配符作为一个普通字符传递给”命令”,然后再由命令进行处理
总之,通配符实际上就是一种 Shell 实现的路径扩展功能。在通配符被处理后, Shell 会先完成该命令的重组,然后继续处理重组后的命令,直至执行该命令
Shell 常用通配符
字符 | 含义 |
---|---|
* | 匹配 $0$ 或多个字符 |
? | 匹配任一字符 |
[list] | 匹配 list 中的任意单一字符 |
[!list] | 匹配除 list 中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 |
{string1,string2,…} | 匹配 string1 或 string2 或更多其一字符串 |
{c1..c2} | 匹配 c1-c2 中全部字符 |
例如:使用通配符一次创建多个名为 testX.txt 的文件,其中 X 从 1 到 5
【内建命令与外键命令】
内建命令
内建命令属于 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令(写在 bash 源码里 builtins 的 .def 中),由 shell 程序识别并在 shell 程序内部完成运行
shell 通常在 Linux 系统加载运行时,就被加载并驻留在系统内存中,且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快
常见内建命令有:history
、cd
、exit
等
外部命令
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存
外部命令虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的
外部命令是在 Bash 之外额外安装的,通常放在 /bin
,/usr/bin
,/sbin
,/usr/sbin
等目录中
常见外部命令有:ls
、vi
等
区分方法
使用 type
命令即可来区分内建命令与外部命令
语法:type 要判断的命令名
当显示结果为:xxx is a shell builtin 时,说明 xxx 命令是内建命令
例如:
当显示结果为:xxx is /usr/bin/xxx 时,说明 xxx 命令是外部命令
例如:
当显示结果为:xxx is an alias for xxx —xx 时,说明 xxx 命令为 xxx —xx 命令的别名
例如: