Skip to content

Commit e0bf845

Browse files
committed
docs: edit intro
1 parent f501e8a commit e0bf845

File tree

2 files changed

+106
-106
lines changed

2 files changed

+106
-106
lines changed

docs/grammar.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,44 @@ World
7373

7474
上面代码中,`-e`参数使得`\n`解释为换行符,导致输出内容里面出现换行。
7575

76+
## 命令格式
77+
78+
命令行环境中,主要通过使用 Shell 命令,进行各种操作。Shell 命令基本都是下面的格式。
79+
80+
```bash
81+
$ command [ arg1 ... [ argN ]
82+
```
83+
84+
上面代码中,`command`是具体的命令或者一个可执行文件,`arg1 ... argN`是传递给命令的参数,它们是可选的。
85+
86+
```bash
87+
$ ls -l
88+
```
89+
90+
上面这个命令中,`ls`是命令,`-l`是参数。
91+
92+
有些参数是命令的配置项,这些配置项一般都以一个连词线开头,比如上面的`-l`。同一个配置项往往有长和短两种形式,比如`-l`是短形式,`--list`是长形式,它们的作用完全相同。短形式便于手动输入,长形式一般用在脚本之中,可读性更好,利于解释自身的含义。
93+
94+
```bash
95+
# 短形式
96+
$ ls -r
97+
98+
# 长形式
99+
$ ls --reverse
100+
```
101+
102+
上面命令中,`-r`是短形式,`--reverse`是长形式,作用完全一样。前者便于输入,后者便于理解。
103+
104+
Bash 单个命令一般都是一行,用户按下回车键,就开始执行。有些命令比较长,写成多行会有利于阅读和编辑,这时可以在每一行的结尾加上反斜杠,Bash 就会将下一行跟当前行放在一起解释。
105+
106+
```bash
107+
$ echo foo bar
108+
109+
# 等同于
110+
$ echo foo \
111+
bar
112+
```
113+
76114
## 空格
77115
78116
Bash 使用空格(或 Tab 键)区分不同的参数。
@@ -140,3 +178,64 @@ $ mkdir foo || mkdir bar
140178
141179
上面例子中,只有`mkdir foo`命令执行失败(比如`foo`目录已经存在),才会继续执行`mkdir bar`命令。如果`mkdir foo`命令执行成功,就不会创建`bar`目录了。
142180
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+
## 快捷键
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+

docs/intro.md

Lines changed: 7 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Bash 是 Unix 系统和 Linux 系统的一种 Shell(命令行环境),是
44

55
## Shell 的含义
66

7-
学习 Bash,首先需要理解 Shell 是什么。Shell 这个单词的原意是“外壳”,跟 kernel (内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。
7+
学习 Bash,首先需要理解 Shell 是什么。Shell 这个单词的原意是“外壳”,跟 kernel(内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。
88

99
具体来说,Shell 这个词有多种含义。
1010

@@ -43,7 +43,7 @@ $ echo $SHELL
4343
$ cat /etc/shells
4444
```
4545

46-
上面两个命令中,`$`是命令行环境的提示符,用户只需要输入提示符后面的内容。
46+
上面两个命令中,`$`是命令行环境的提示符,用户只需要输入提示符后面的内容,详见下文
4747

4848
Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都是 Bash,或者与 Bash 兼容。
4949

@@ -53,11 +53,11 @@ Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都
5353

5454
如果是不带有图形环境的 Linux 系统(比如专用于服务器的系统),启动后就直接是命令行环境。
5555

56-
不过,现在大部分的 Linux 发行版,尤其是针对普通用户的发行版,都带有图形环境。这时,用户登录系统后,自动进入图形环境,需要自己启动终端模拟器,才能进入命令行环境。
56+
不过,现在大部分的 Linux 发行版,尤其是针对普通用户的发行版,都是图形环境。用户登录系统后,自动进入图形环境,需要自己启动终端模拟器,才能进入命令行环境。
5757

5858
所谓“终端模拟器”(terminal emulator)就是一个模拟命令行窗口的程序,让用户在一个窗口中使用命令行环境,并且提供各种附加功能,比如调整颜色、字体大小、行距等等。
5959

60-
不同 Linux 发行版(准确地说,应该是不同的桌面环境)带有的终端程序是不一样的,比如 KDE 桌面环境的终端程序是 konsole,Gnome 桌面环境的终端程序是 gnome-terminal,用户也可以安装第三方的终端程序。所有终端程序,尽管名字不同,基本功能都是一样的,就是让用户可以进入命令行环境,使用 Shell。
60+
不同 Linux 发行版(准确地说是不同的桌面环境)带有的终端程序是不一样的,比如 KDE 桌面环境的终端程序是 konsole,Gnome 桌面环境的终端程序是 gnome-terminal,用户也可以安装第三方的终端程序。所有终端程序,尽管名字不同,基本功能都是一样的,就是让用户可以进入命令行环境,使用 Shell。
6161

6262
### 命令行提示符
6363

@@ -69,7 +69,7 @@ Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都
6969

7070
上面例子中,完整的提示符是`[user@hostname] $`,其中前缀是用户名(`user`)加上`@`,再加主机名(`hostname`)。比如,用户名是`bill`,主机名是`home-machine`,前缀就是`bill@home-machine`
7171

72-
注意,根用户(root)的提示符,不以美元符号(`$`)结尾,而以井号(`#`)结尾,用来提醒用户,现在具有根权限,可以执行各种操作,务必小心,不要出现误操作。
72+
注意,根用户(root)的提示符,不以美元符号(`$`)结尾,而以井号(`#`)结尾,用来提醒用户,现在具有根权限,可以执行各种操作,务必小心,不要出现误操作。这个符号是可以自己定义的,详见《命令提示符》一章。
7373

7474
为了简洁,后文的命令行提示符都只使用`$`表示。
7575

@@ -81,13 +81,13 @@ Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都
8181
$ bash
8282
```
8383

84-
退出 Bash 环境,可以使用`exit`命令,也可以同时`Ctrl + d`
84+
退出 Bash 环境,可以使用`exit`命令,也可以同时按下`Ctrl + d`
8585

8686
```bash
8787
$ exit
8888
```
8989

90-
Bash 的用法就是在命令行输入各种命令。作为练习,可以试着输入`pwd`命令。按下回车键,就会显示当前所在的目录。
90+
Bash 的基本用法就是在命令行输入各种命令,非常直观。作为练习,可以试着输入`pwd`命令。按下回车键,就会显示当前所在的目录。
9191

9292
```bash
9393
$ pwd
@@ -140,102 +140,3 @@ $ echo $BASH_VERSION
140140
5.0.3(1)-release
141141
```
142142

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

Comments
 (0)