File tree 6 files changed +158
-24
lines changed
6 files changed +158
-24
lines changed Original file line number Diff line number Diff line change @@ -209,3 +209,4 @@ Sketch 不支持 CMYK,所以不能用于设计印刷品。
209
209
## 参考文章
210
210
211
211
- [ 色彩空间基础] ( https://zhuanlan.zhihu.com/p/24214731 )
212
+ - [ JIMMY CHEUNG - 色彩管理] ( https://www.zhangxiaochun.com/color-space-3/ ) :这篇文章记录了如何选择合适的色彩空间
Original file line number Diff line number Diff line change 1
1
# sed
2
2
3
- BSD sed 和 GNU sed 的异同,参考 https://riptutorial.com/sed/topic/9436/bsd-macos-sed-vs--gnu-sed-vs--the-posix-sed-specification
3
+ BSD sed 和 GNU sed 的异同,参考 [ BSD/macOS Sed vs. GNU Sed vs. the POSIX Sed specification ] ( https://riptutorial.com/sed/topic/9436/bsd-macos-sed-vs--gnu-sed-vs--the-posix-sed-specification ) ( [ 链接备份 ] ( https://web.archive.org/web/20221013094813/https://riptutorial.com/sed/topic/9436/bsd-macos-sed-vs--gnu-sed-vs--the-posix-sed-specification ) )
4
4
5
5
## -i 参数不一致
6
6
69
69
- ` <<<"red green" sed -E 's/(.+) (.+)/\\033[31m\1\\033[32m \2\\033[0m/' `
70
70
- ` <<<"red green" sed -E 's/(.+) (.+)/\e[31m\1\e[32m \2\e[0m/' `
71
71
72
- 颜色字符是通过 [ ASCII Escape 字符 ] ( ../others/ascii.md ) 来控制终端的字符颜色显示的。
72
+ 颜色字符是通过 [ ASCII 转义序列 ] ( ../others/ascii-and-ansi .md ) 来控制终端的字符颜色显示的。
73
73
74
- ` \033 ` 是八进制的,` \e ` 是一个转义序列的前缀,用于表示 ASCII Escape 字符。
75
- 而这些前缀不是所有编程语言和环境中都支持的转义序列,在使用时需要查看相关的文档或资料。
76
-
77
- sed 就不识别 ` \033 ` 和 ` \e ` ,但是 sed 自 [ GNU sed v3.02.80 起] ( https://stackoverflow.com/a/7760752/4622308 ) 就支持十六进制,因此可以用十六进制的 ` \x1b ` 来表示八进制的 ` \033 ` 。
74
+ 转义序列是由 ` ESC ` + ` [ ` + 其他字符组成的序列。其中 ` ESC ` 的表示方法有很多,详见[ 这篇文章] ( ../others/ascii-and-ansi.md#ascii-escape-字符 ) 。
75
+ 进制表示法和转换见[ 这篇文章] ( ../math/positional-notation.md ) 。
78
76
77
+ sed 就不识别 ` \033 ` 和 ` \e ` 。但是 sed 自 [ GNU sed v3.02.80 起] ( https://stackoverflow.com/a/7760752/4622308 ) 就支持十六进制,因此可以用十六进制的 ` \x1b ` 。
79
78
所以有效写法是 ` <<<"red green" sed -E 's/(.+) (.+)/\x1b[31m\1\x1b[32m \2\x1b[0m/' `
80
79
81
80
另外比如 ` \0 ` (expect NUL) 在 sed 里也不支持,需要用十六进制的 ` \x0 ` 或 ` \x00 ` 表示。
Original file line number Diff line number Diff line change
1
+ # 进制表示法
2
+
3
+ | 进制 | 下标表示法 | 前缀表示法 | 后缀表示法 |
4
+ | ------------------------| --------------| ----------------------| --------------------|
5
+ | 二进制 (binary) | (1001)<sub >2 | ` 0b1001 ` 或 ` 0B1001 ` | ` 1001b ` 或 ` 1001B ` |
6
+ | 八进制 (octal) | (17)<sub >8 | ` 017 ` | ` 17o ` 或 ` 17O ` |
7
+ | 十进制 (decimal) | (10)<sub >10 | 无前缀 | ` 10d ` 或 ` 10D ` |
8
+ | 十六进制 (hexadecimal) | (1F)<sub >16 | ` 0x1F ` 或 ` 0X1F ` | ` 1fh ` 或 ` 1FH ` |
9
+
10
+ 八进制的前缀法跟数字 0 过于相似,因此比较少使用。
11
+ 八进制的后缀法跟十进制的过于相似,因此比较少使用。
12
+
13
+ ## 进制转换
14
+
15
+ ### printf 命令转进制。
16
+
17
+ - ` %d ` 或 ` %i ` 转换成有符号的十进制
18
+ - ` %u ` 转换成无符号的十进制
19
+ - ` %o ` 转换成无符号的八进制
20
+ - ` %x ` 转换成无符号的十六进制(小写字母)
21
+ - ` %X ` 转换成无符号的十六进制(大写字母)
22
+
23
+ ### bc 命令转换任意进制。
24
+
25
+ - 转成四进制 ` echo "obase=4; 100" | bc `
26
+ - 转成八进制 ` echo "obase=8; 100" | bc `
27
+ - 转成十二进制 ` echo "obase=12; 100" | bc `
28
+ - 转成十六进制 ` echo "obase=16; 100" | bc `
29
+ - 八进制转十进制 ` echo "ibase=8; 100" | bc `
30
+ - 二进制转十六进制 ` echo "ibase=2; obase=16; 11000000" | bc `
Original file line number Diff line number Diff line change 1
- ## 永久链接
1
+ # 永久链接
2
2
3
- 互联网没有永久存在的资源,终有一天你会发现原来的资源内容改变,甚至消失。
4
- 最可以信赖的只有 archived 服务。这类服务在自身存活的时间内,永久保存网页当时的内容快照。
3
+ 互联网没有永久存在的资源,终有一天你会发现原来的域名过期了,网页内容布局修改了,资源搬迁甚至直接消失。
5
4
6
- ### 使用场景
5
+ 相对可以信赖的只有 archived 服务。这类服务在自身存活的时间内,永久保存网页当时的内容快照。
6
+
7
+ ## 使用场景
7
8
8
9
1 . 当你打开某网络资源,发现它已经失效了。可以到 archived 服务查看是否有备份。
9
10
2 . 当你引用某网络资源,担心有一天它会失效。可以备份到 archived 服务,从而引用备份链接。
10
11
11
- ### 推荐服务
12
+ 网络资源包括网页、图像、声音、电子书等一切数字资源。
13
+
14
+ ## 推荐服务
12
15
13
- #### https://archive.org/
16
+ ## Internet Archive
14
17
15
- 保存的页面来自用户提交的和自动抓取的。
18
+ https://archive.org/
16
19
17
20
优点:
18
21
19
22
1 . 资金稳定,所以该服务的存活时间最稳定
23
+ 2 . 支持自动抓取。
24
+ 3 . 支持保存网页的同时备份页面截图。
20
25
21
26
缺点:
22
27
23
28
1 . 生成的链接长度很长
24
29
2 . 阅读体验不够好
25
30
26
- #### https://archive.today/
31
+ 推荐使用浏览器插件,查询和保存都很方便。
27
32
28
- 曾经的 [ archive.is] ( https://www.wikiwand.com/zh/Archive.is ) ,现在的 Archive.today。
33
+ - [ Chrome] ( https://chrome.google.com/webstore/detail/wayback-machine/fpnmgdkabkmnadcjpehmlllkndpkmiak )
34
+ - [ Firefox] ( https://addons.mozilla.org/en-US/firefox/addon/wayback-machine_new/ )
35
+ - [ Safari] ( https://apps.apple.com/us/app/wayback-machine/id1472432422 )
36
+ - [ Edge] ( https://microsoftedge.microsoft.com/addons/detail/wayback-machine/kjmickeoogghaimmomagaghnogelpcpn )
29
37
30
- 保存的页面只来自用户提交的,不自动抓取。
38
+ ## Archive Today
39
+
40
+ 曾经的 [ archive.is] ( https://www.wikiwand.com/zh/Archive.is ) ,现在的 Archive.today。
31
41
32
42
优点:
33
43
38
48
39
49
缺点:
40
50
41
- 1 . 私人资助,服务器在法国,因此可能不稳定
51
+ 1 . 私人资助,服务器在法国,因此可能不稳定。
52
+ 2 . 域名会动态变。
53
+ 3 . 每次使用都要验证校验码,很麻烦。
54
+ 4 . 保存的页面只来自用户提交的,不自动抓取。
42
55
43
56
它还有其他几个域名,都指向同一个服务。
44
57
45
58
- https://archive.ph/
46
59
- https://archive.is/
47
60
- https://archive.md/
48
61
49
- #### https://perma.cc/
50
-
51
- 一个比较新的 archived 服务。界面很友好。只是不知道稳不稳定
52
-
53
- ### 快捷使用
62
+ ### 浏览器书签
54
63
55
64
不需要安装浏览器插件,只需要创建浏览器书签。
56
65
66
75
67
76
点击书签即可将当前页面保存到 Archive.today。
68
77
69
- ### 参考文章
78
+ ## https://perma.cc/
79
+
80
+ 一个比较新的 archived 服务。界面很友好。只是不知道稳不稳定
81
+
82
+ ## 参考文章
70
83
71
84
- [ 留下证据:如何存档开源材料?] ( https://archive.ph/yuVm7 )
72
- - [ 个人博客存入互联网博物馆Archive .org] ( https://archive.ph/9fgTy )
85
+ - [ 个人博客存入互联网博物馆 Archive .org] ( https://archive.ph/9fgTy )
Original file line number Diff line number Diff line change
1
+ # ASCII 与 ANSI
2
+
3
+ ## ASCII 与 ANSI Code
4
+
5
+ | | ANSI Code | ASCII |
6
+ | ----------| ----------------------| -------------------------------|
7
+ | 管理组织 | 美国国家标准协会 | 美国信息交换标准代码 |
8
+ | 字符集 | 256 | 128 |
9
+ | Bit | 8-bit | 7-bit |
10
+ | 一致性 | 根据系统上下文有区别 | 每个系统都用同一套 ASCII 码点 |
11
+ | 标准化 | No | Yes |
12
+
13
+ - ANSI 编码 (ANSI Code)
14
+ - ANSI 编码是由美国国家标准协会 ((ANSI: American National Standards Institute) 制定的标准化的数字或字母标识符。
15
+ - 美国国家标准协会是负责制定美国国家标准的非营利组织。
16
+ - ANSI 编码是 ASCII 的超集。包含了 ASCII 字符,使用 8 位二进制,扩展到 256 个字符。
17
+ - ANSI 编码在 1991 年被 Unicode 代替了。
18
+ - ASCII
19
+ - 这套编码共有 128 个字符,由 7 位二进制进行编号。
20
+ - 其中 0~ 31 号,加上最后的 127 号 Delete 字符是 33 个不被显示的控制字符。其余 95 个字符正好与标准键盘符合。
21
+
22
+ 参考文章
23
+
24
+ - [ Difference between ANSI and ASCII] ( https://www.tutorialspoint.com/difference-between-ansi-and-ascii ) ([ 链接备份] ( https://web.archive.org/web/20230226201600/https://www.tutorialspoint.com/difference-between-ansi-and-ascii ) )
25
+
26
+ ## ANSI 转义序列
27
+
28
+ 虽然 ANSI 编码已成历史,但是 ANSI 转义序列保留至今。现在绝大多数终端都依然支持转义序列。
29
+
30
+ ANSI 转义序列 (ANSI Escape Sequences) 是一种带内信号 ([ In-band signaling] [ ] ) 的转义序列标准,用于控制视频文本终端上的光标位置、颜色和其他选项。
31
+
32
+ 控制序列 (Control Sequence)
33
+
34
+ - ESC - sequence starting with ESC (\x1B)
35
+ - CSI - Control Sequence Introducer: sequence starting with ESC [ or CSI (\x9B)
36
+ - DCS - Device Control String: sequence starting with ESC P or DCS (\x90)
37
+ - OSC - Operating System Command: sequence starting with ESC ] or OSC (\x9D)
38
+
39
+ - Ctrl-Key 字符 ` ^[ ` 。
40
+
41
+ ## ASCII Escape 字符
42
+
43
+ Escape (ESC) 字符的表示方法有很多:
44
+
45
+ - 十六进制的 ` 0x1b ` 或 ` 0x1B ` 。
46
+ - 八进制的 ` \033 ` 表示。
47
+ - Unicode 字符 ` \u001b ` 。
48
+ - 十进制 ` 27 ` 。
49
+ - 固定字符 ` \e `
50
+
51
+ 注意这些字符表示法并不是所有程序或设备都支持,需要看情况使用。
52
+
53
+
54
+ [ In-band signaling ] : https://www.wikiwand.com/en/In-band_signaling
Original file line number Diff line number Diff line change 5
5
6
6
<!-- MarkdownTOC GFM -->
7
7
8
+ - [ 参考资料] ( #参考资料 )
8
9
- [ 命令回显] ( #命令回显 )
9
10
- [ 变量赋值] ( #变量赋值 )
10
11
- [ target 作用域的变量定义] ( #target-作用域的变量定义 )
16
17
- [ $shell 变量为何是空?] ( #shell-变量为何是空 )
17
18
- [ 在 target 内部使用条件判断] ( #在-target-内部使用条件判断 )
18
19
- [ 在 target 内部赋值变量] ( #在-target-内部赋值变量 )
20
+ - [ 注意 &&] ( #注意- )
19
21
20
22
<!-- /MarkdownTOC -->
21
23
24
+ ## 参考资料
25
+
26
+ - https://www.cnblogs.com/peterYong/p/15030385.html
27
+ - https://makefiletutorial.com/
28
+ - [ 陈皓 - 跟我一起写Makefile] ( https://seisman.github.io/how-to-write-makefile/ )
29
+
22
30
## 命令回显
23
31
24
32
默认情况下会把每个执行命令(包括注释)都回显到终端。可以在开头加一个 ` @ ` 来阻止回显。
@@ -191,3 +199,32 @@ endif
191
199
192
200
** 但这种方法存在问题!** ,不要使用 ` $(eval) ` ** 在 target 内部** 赋值变量!你应该使用 shell 语法来操作变量。
193
201
原因见[ 珍爱生命,远离 ifeq] ( #珍爱生命远离-ifeq ) 。
202
+
203
+
204
+ ## 注意 &&
205
+
206
+ ``` make
207
+ .PHONY : a
208
+ a :
209
+ @[[ -n ' ' ]] && echo 1
210
+ ```
211
+
212
+ `make a` 会报错。因为 `[[ -n '' ]]` 的退出码是非 0 的,于是 `[[ -n '' ]] && echo 1` 整行的退出码也是非 0 的。即报错。
213
+
214
+ 解决方案:
215
+
216
+ 要么这么写
217
+
218
+ ```make
219
+ .PHONY : a
220
+ a :
221
+ @[[ -n ' ' ]] && echo 1 || true
222
+ ```
223
+
224
+ 要么这么写
225
+
226
+ ```make
227
+ .PHONY : a
228
+ a :
229
+ @if [[ -n ' ' ]]; then echo 1; fi
230
+ ```
You can’t perform that action at this time.
0 commit comments