MIT计算机教育缺失一课之shell使用
课程链接
MIT 计算机教育中缺失的一课 (中英双字幕)、时间顶级名校最详细计算机知识讲解…_哔哩哔哩_bilibili
shell、工具、脚本
Bash 中的字符串通过 ' 和 " 分隔符来定义,但是它们的含义并不相同。以 ' 定义的字符串为原义字符串,其中的变量不会被转义,而 " 定义的字符串会将变量值进行替换。
eg:
1 | foo = bar #打印barecho '$foo' |
shell的通配(globbing)
通配符
可以使用?或者*来匹配字符
1
例如,对于文件 foo, foo1, foo2, foo10 和 bar, rm foo? 这条命令会删除 foo1 和 foo2 ,而 rm foo* 则会删除除了 bar 之外的所有文件。
花括号
当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23convert image.{png,jpg}
# 会展开为
convert image.png image.jpg
cp /path/to/project/{foo,bar,baz}.sh /newpath
# 会展开为
cp /path/to/project/foo.sh /path/to/project/bar.sh /path/to/project/baz.sh /newpath
# 也可以结合通配使用
mv *{.py,.sh} folder
# 会移动所有 *.py 和 *.sh 文件
mkdir foo bar
# 下面命令会创建 foo/a, foo/b, ... foo/h, bar/a, bar/b, ... bar/h 这些文件
touch {foo,bar}/{a..h}
touch foo/x bar/y
# 比较文件夹 foo 和 bar 中包含文件的不同
diff <(ls foo) <(ls bar)
# 输出
# < x
# ---
# > yshellcheck工具可以帮助查找sh/bash脚本中的错误
shell的解释行(shebang)
Linux - 认识shell的解释行(Shebang)-CSDN博客
为脚本指定运行环境,无需在调用时由用户指定解释器,从而对用户和其它程序隐藏其实现细节
1
2
3
4
5
6
7
8
9
10
11
12
13
# 第一行就是把该脚本的运行环境指定到python上去
import sys
for arg in reversed(sys.argv[1:]):
print(arg)
# 如下列出了一些典型的shebang解释器指令:
#!/bin/sh—使用sh,即Bourne shell或其它兼容shell执行脚本
#!/bin/csh—使用csh,即C shell执行
#!/usr/bin/perl -w—使用带警告的Perl执行
#!/usr/bin/python -O—使用具有代码优化的Python执行
#!/usr/bin/php—使用PHP的命令行解释器执行tldr网站与GUI工具
too long ,don’t read!
man命令的简易替代版本(man命令显示的过于长和多了)
1
sudo apt install tldr #直接sudo apt安装就可以用的
- 标题: MIT计算机教育缺失一课之shell使用
- 作者: Porcovsky
- 创建于 : 2025-02-07 09:34:08
- 更新于 : 2025-02-07 09:38:11
- 链接: https://pocro.github.io/2025/02/07/MIT计算机教育缺失一课之shell使用/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论