Skip to content

Commit 6e70d9e

Browse files
committed
docs: edit readline
1 parent 0ad2781 commit 6e70d9e

6 files changed

Lines changed: 186 additions & 132 deletions

File tree

docs/archives/readline.md

Lines changed: 0 additions & 102 deletions
This file was deleted.

docs/expansion.md

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ $ echo ~+
5151

5252
## `?` 字符扩展
5353

54-
`?`字符代表任意的单个字符,不包括空字符。比如,`Data???`匹配所有`Data`开头后面跟着三个字符的文件名。
54+
`?`字符代表文件路径里面的任意单个字符,不包括空字符。比如,`Data???`匹配所有`Data`开头后面跟着三个字符的文件名。
5555

5656
```bash
5757
# 存在文件 a.txt 和 b.txt
@@ -87,7 +87,7 @@ $ echo ?.txt
8787

8888
## `*` 字符扩展
8989

90-
`*`字符代表任意数量的字符,包括零个字符。
90+
`*`字符代表文件路径里面的任意数量字符,包括零个字符。
9191

9292
```bash
9393
# 存在文件 a.txt、b.txt 和 ab.txt
@@ -121,15 +121,23 @@ $ echo .[!.]*
121121

122122
## 方括号模式
123123

124-
方括号模式是`[...]`,可以匹配方括号之中的任意一个字符,比如`[aeiou]`可以匹配五个元音字母中的任意一个。
124+
方括号模式是`[...]`,可以匹配方括号之中的任意一个字符,比如`[aeiou]`可以匹配五个元音字母中的任意一个。该模式属于文件名匹配,即匹配后的结果必须符合现有的文件路径,如果不存在匹配,就会保持原样,不进行扩展。
125125

126126
```bash
127127
# 存在文件 a.txt 和 b.txt
128128
$ ls [ab].txt
129129
a.txt b.txt
130+
131+
# 只存在文件 a.txt
132+
$ ls [ab].txt
133+
a.txt
134+
135+
# 不存在文件 a.txt 和 b.txt
136+
$ ls [ab].txt
137+
ls: 无法访问'[ab].txt': 没有那个文件或目录
130138
```
131139

132-
上面命令中,`[ab]`表示可以扩展成`a``b`
140+
上面命令中,`[ab]`表示可以扩展成`a``b`具体的执行结果,取决于当前目录是否包含指定的文件。
133141

134142
方括号模式还有两种变体:`[^...]``[!...]`。它们表示匹配不在方括号里面的字符,这两种写法是等价的。比如,`[^abc]``[!abc]`表示匹配除了`a``b``c`以外的字符。
135143

@@ -233,7 +241,7 @@ $ echo {cat,dog}
233241
cat dog
234242
```
235243

236-
大括号模式`{...}`与方括号模式`[...]`有一个很重要的区别。如果匹配的文件不存在,`[...]`会失去模式的功能,变成一个单纯的字符串,而`{...}`依然可以展开。
244+
大括号模式`{...}`与方括号模式`[...]`有一个很重要的区别。如果匹配的文件不存在,`[...]`会失去模式的功能,变成一个单纯的字符串,而`{...}`依然可以展开,因为大括号不是文件名扩展
237245

238246
```bash
239247
# 不存在 a.txt 和 b.txt
@@ -246,6 +254,8 @@ a.txt b.txt
246254

247255
上面代码中,如果不存在`a.txt``b.txt`,那么`[ab].txt`就会变成一个普通的文件名,而`{a,b}.txt`可以照样展开。
248256

257+
## {start..end} 扩展
258+
249259
大括号里面两个点的`{start..end}`模式,表示扩展成一个连续序列,然后分别输出。比如`{a..z}`可以扩展成26个小写英文字母,然后输出。
250260

251261
```bash
@@ -265,6 +275,16 @@ $ echo Number_{1..5}
265275
Number_1 Number_2 Number_3 Number_4 Number_5
266276
```
267277

278+
大括号的双点号支持逆序。
279+
280+
```bash
281+
$ echo {5..1}
282+
5 4 3 2 1
283+
284+
$ echo {E..A}
285+
E D C B A
286+
```
287+
268288
如果遇到无法解释的扩展,模式会原样输出。
269289

270290
```bash
@@ -279,6 +299,14 @@ $ echo .{mp{3..4},m4{a,b,p,v}}
279299
.mp3 .mp4 .m4a .m4b .m4p .m4v
280300
```
281301

302+
大括号扩展的常见用途为新建一系列目录。
303+
304+
```bash
305+
$ mkdir {2007..2009}-{01..12}
306+
```
307+
308+
上面命令会新建36个子目录,每个子目录的名字都是”年份-月份“。
309+
282310
整数前面可以使用前导`0`,然后输出的每一项都有前导`0`
283311

284312
```bash
@@ -298,24 +326,11 @@ $ echo {0..8..2}
298326

299327
上面代码将`0`扩展到`8`,每次递增的长度为`2`,所以一共输出5个数字。
300328

301-
大括号的双点号还支持逆序。
302-
303-
```bash
304-
$ echo {5..1}
305-
5 4 3 2 1
306-
307-
$ echo {E..A}
308-
E D C B A
309-
```
310-
311329
多个大括号连用,会有循环处理的效果。
312330

313331
```bash
314332
$ echo {a..c}{1..3}
315333
a1 a2 a3 b1 b2 b3 c1 c2 c3
316-
317-
$ echo a{A{1,2},B{3,4}}b
318-
aA1b aA2b aB3b aB4b
319334
```
320335

321336
这个写法可以直接用于`for`循环。
@@ -327,14 +342,6 @@ do
327342
done
328343
```
329344

330-
大括号扩展的常见用途为新建一系列目录。
331-
332-
```bash
333-
$ mkdir {2007..2009}-{01..12}
334-
```
335-
336-
上面命令会新建36个子目录,每个子目录的名字都是”年份-月份“。
337-
338345
## 变量扩展
339346

340347
Bash 将美元符号`$`开头的词元视为变量,将其扩展成变量值。
Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
# 历史
1+
# Bash 操作历史
22

3-
Bash 会保留用户的操作历史,保存在`~/.bash_history`这个文件里面。
3+
Bash 会保留用户的操作历史,即用户输入的每一条命令。退出当前 Shell 的时候,Bash 会将用户刚才的操作历史写入`~/.bash_history`文件。
4+
5+
环境变量`$HISTFILE`总是指向这个文件。
6+
7+
```bash
8+
$ echo $HISTFILE
9+
/home/me/.bash_history
10+
```
411

512
## history 命令
613

7-
`history`命令能显示操作历史。最近的例子在最后面,所有的例子带有行号
14+
`history`命令能显示操作历史。最近的操作在最后面,所有的操作都带有行号
815

916
```bash
1017
$ history
1118
```
1219

13-
通过定制操作历史的模块,可以显示每个操作的时间
20+
通过定制环境变量`$HISTTIMEFORMAT`,可以保留每个操作的时间
1421

1522
```bash
1623
$ export HISTTIMEFORMAT='%F %T '

docs/quotation.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ $ echo 'it\'s'
8383
$ echo $'it\'s'
8484
```
8585
86+
还有一种办法,就是在插入单引号的位置,将原字符串分成两个,并且插入的单引号转义。
87+
88+
```bash
89+
$ echo 'it'\''s'
90+
it's
91+
```
92+
8693
## 双引号
8794
8895
双引号可以保留大部分特殊字符的本来含义(比如`*`),但是美元符号`$`、反引号和反斜杠(`\`)除外。

0 commit comments

Comments
 (0)