@@ -4,7 +4,7 @@ Bash 是 Unix 系统和 Linux 系统的一种 Shell(命令行环境),是
4
4
5
5
## Shell 的含义
6
6
7
- 学习 Bash,首先需要理解 Shell 是什么。Shell 这个单词的原意是“外壳”,跟 kernel (内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。
7
+ 学习 Bash,首先需要理解 Shell 是什么。Shell 这个单词的原意是“外壳”,跟 kernel(内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。
8
8
9
9
具体来说,Shell 这个词有多种含义。
10
10
@@ -43,7 +43,7 @@ $ echo $SHELL
43
43
$ cat /etc/shells
44
44
```
45
45
46
- 上面两个命令中,` $ ` 是命令行环境的提示符,用户只需要输入提示符后面的内容。
46
+ 上面两个命令中,` $ ` 是命令行环境的提示符,用户只需要输入提示符后面的内容,详见下文 。
47
47
48
48
Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都是 Bash,或者与 Bash 兼容。
49
49
@@ -53,11 +53,11 @@ Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都
53
53
54
54
如果是不带有图形环境的 Linux 系统(比如专用于服务器的系统),启动后就直接是命令行环境。
55
55
56
- 不过,现在大部分的 Linux 发行版,尤其是针对普通用户的发行版,都带有图形环境。这时, 用户登录系统后,自动进入图形环境,需要自己启动终端模拟器,才能进入命令行环境。
56
+ 不过,现在大部分的 Linux 发行版,尤其是针对普通用户的发行版,都是图形环境。 用户登录系统后,自动进入图形环境,需要自己启动终端模拟器,才能进入命令行环境。
57
57
58
58
所谓“终端模拟器”(terminal emulator)就是一个模拟命令行窗口的程序,让用户在一个窗口中使用命令行环境,并且提供各种附加功能,比如调整颜色、字体大小、行距等等。
59
59
60
- 不同 Linux 发行版(准确地说,应该是不同的桌面环境 )带有的终端程序是不一样的,比如 KDE 桌面环境的终端程序是 konsole,Gnome 桌面环境的终端程序是 gnome-terminal,用户也可以安装第三方的终端程序。所有终端程序,尽管名字不同,基本功能都是一样的,就是让用户可以进入命令行环境,使用 Shell。
60
+ 不同 Linux 发行版(准确地说是不同的桌面环境 )带有的终端程序是不一样的,比如 KDE 桌面环境的终端程序是 konsole,Gnome 桌面环境的终端程序是 gnome-terminal,用户也可以安装第三方的终端程序。所有终端程序,尽管名字不同,基本功能都是一样的,就是让用户可以进入命令行环境,使用 Shell。
61
61
62
62
### 命令行提示符
63
63
@@ -69,7 +69,7 @@ Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都
69
69
70
70
上面例子中,完整的提示符是` [user@hostname] $ ` ,其中前缀是用户名(` user ` )加上` @ ` ,再加主机名(` hostname ` )。比如,用户名是` bill ` ,主机名是` home-machine ` ,前缀就是` bill@home-machine ` 。
71
71
72
- 注意,根用户(root)的提示符,不以美元符号(` $ ` )结尾,而以井号(` # ` )结尾,用来提醒用户,现在具有根权限,可以执行各种操作,务必小心,不要出现误操作。
72
+ 注意,根用户(root)的提示符,不以美元符号(` $ ` )结尾,而以井号(` # ` )结尾,用来提醒用户,现在具有根权限,可以执行各种操作,务必小心,不要出现误操作。这个符号是可以自己定义的,详见《命令提示符》一章。
73
73
74
74
为了简洁,后文的命令行提示符都只使用` $ ` 表示。
75
75
@@ -81,13 +81,13 @@ Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都
81
81
$ bash
82
82
```
83
83
84
- 退出 Bash 环境,可以使用` exit ` 命令,也可以同时 ` Ctrl + d ` 。
84
+ 退出 Bash 环境,可以使用` exit ` 命令,也可以同时按下 ` Ctrl + d ` 。
85
85
86
86
``` bash
87
87
$ exit
88
88
```
89
89
90
- Bash 的用法就是在命令行输入各种命令 。作为练习,可以试着输入` pwd ` 命令。按下回车键,就会显示当前所在的目录。
90
+ Bash 的基本用法就是在命令行输入各种命令,非常直观 。作为练习,可以试着输入` pwd ` 命令。按下回车键,就会显示当前所在的目录。
91
91
92
92
``` bash
93
93
$ pwd
@@ -140,102 +140,3 @@ $ echo $BASH_VERSION
140
140
5.0.3(1)-release
141
141
```
142
142
143
- ## Shell 命令的格式
144
-
145
- 命令行环境中,主要通过使用 Shell 命令,进行各种操作。Shell 命令基本都是下面的格式。
146
-
147
- ``` bash
148
- $ command [ arg1 ... [ argN ]
149
- ` ` `
150
-
151
- 上面代码中,` command` 是具体的命令或者一个可执行文件,` arg1 ... argN` 是传递给命令的参数,它们是可选的。
152
-
153
- ` ` ` bash
154
- $ ls -l
155
- ` ` `
156
-
157
- 上面这个命令中,` ls` 是命令,` -l` 是参数。
158
-
159
- 有些参数是命令的配置项,这些配置项一般都以一个连词线开头,比如上面的` -l` 。同一个配置项往往有长和短两种形式,比如` -l` 是短形式,` --list` 是长形式,它们的作用完全相同。短形式便于手动输入,长形式一般用在脚本之中,可读性更好,利于解释自身的含义。
160
-
161
- ` ` ` bash
162
- # 短形式
163
- $ ls -r
164
-
165
- # 长形式
166
- $ ls --reverse
167
- ` ` `
168
-
169
- 上面命令中,` -r` 是短形式,` --reverse` 是长形式,作用完全一样。前者便于输入,后者便于理解。
170
-
171
- Bash 单个命令一般都是一行,用户按下回车键,就开始执行。有些命令比较长,写成多行会有利于阅读和编辑,这时可以在每一行的结尾加上反斜杠,Bash 就会将下一行跟当前行放在一起解释。
172
-
173
- ` ` ` bash
174
- $ echo foo bar
175
-
176
- # 等同于
177
- $ echo foo \
178
- bar
179
- ` ` `
180
-
181
- # # type 命令
182
-
183
- Bash 本身内置了很多命令,同时也可以执行外部程序。怎么知道一个命令是内置命令,还是外部程序呢?
184
-
185
- ` type` 命令用来判断命令的来源。
186
-
187
- ` ` ` bash
188
- $ type echo
189
- echo is a shell builtin
190
- $ type ls
191
- ls is hashed (/bin/ls)
192
- ` ` `
193
-
194
- 上面代码中,` type` 命令告诉我们,` echo` 是内部命令,` ls` 是外部程序(` /bin/ls` )。
195
-
196
- ` type` 命令本身也是内置命令。
197
-
198
- ` ` ` bash
199
- $ type type
200
- type is a shell builtin
201
- ` ` `
202
-
203
- 如果要查看一个命令的所有定义,可以使用` type` 命令的` -a` 参数。
204
-
205
- ` ` ` bash
206
- $ type -a echo
207
- echo is shell builtin
208
- echo is /usr/bin/echo
209
- echo is /bin/echo
210
- ` ` `
211
-
212
- 上面代码表示,` echo` 命令即是内置命令,也有对应的外部程序。
213
-
214
- ` type` 命令的` -t` 参数,可以返回一个命令的类型:别名(alias),关键词(keyword),函数(function),内置命令(builtin)和文件(file)。
215
-
216
- ` ` ` bash
217
- $ type -t bash
218
- file
219
- $ type -t if
220
- keyword
221
- ` ` `
222
-
223
- 上面例子中,` bash` 是文件,` if` 是关键词。
224
-
225
- # # Bash 的快捷键
226
-
227
- Bash 提供很多快捷键,可以大大方便操作。下面是一些最常用的快捷键,完整的介绍参见《行操作》一章。
228
-
229
- - ` Ctrl + L` :清除屏幕并将当前行移到页面顶部。
230
- - ` Ctrl + C` :中止当前正在执行的命令。
231
- - ` Shift + PageUp` :向上滚动。
232
- - ` Shift + PageDown` :向下滚动。
233
- - ` Ctrl + U` :从光标位置删除到行首。
234
- - ` Ctrl + K` :从光标位置删除到行尾。
235
- - ` Ctrl + D` :关闭 Shell 会话。
236
- - ` ↑` ,` ↓` :浏览已执行命令的历史记录。
237
-
238
- 除了上面的快捷键,Bash 还具有自动补全功能。命令输入到一半的时候,可以按下 Tab 键,Bash 会自动完成剩下的部分。比如,输入` pw` ,然后按一下 Tab 键,Bash 会自动补上` d` 。
239
-
240
- 除了命令的自动补全,Bash 还支持路径的自动补全。有时,需要输入很长的路径,这时只需要输入前面的部分,然后按下 Tab 键,就会自动补全后面的部分。如果有多个可能的选择,按两次 Tab 键,Bash 会显示所有选项,让你选择。
241
-
0 commit comments