1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
'$foo' "$foo"
echo ${foo}bar
history # 看历史输入的命令
gcc -E a.c > a.i # 预处理
cat a.txt - b.txt # -表示从标准输入拿数据
python a.py | tee train.log # tee是输出到文件的同时输出到屏幕
ls | wc # world count
ls | head # tail 头几条、后几条
./gen_rnd.sh | sort -n | uniq
cat data.txt | paste -sd+ | bc | factor # bc
cat data.txt | python -c "import sys; print(eval('+'.join(sys.stdin.read().split())))"
find # 找目录下的各种文件
xargs
# awk sed grep 三剑客
xxd # 十六进制显示文件内容,也可以反操作


任务管理
# Ctrol+Z
./abc & # 后台运行
fg # 返回后台运行的
fg %2 # 返回第二个后台运行的
bg # 把暂停的后台运行
jobs # 显示当前后台的进程
wait # 等待前面的命令全部完成
kill # 杀掉进程
suspend # 挂起进程

# .sh相关
# $0 filename of the script
# $1~$9 Arguments to the script. $1 is the }rst argument and so on.
# $# the number of the arguments
# $? Return error code of the previous command
# $@ all command line arguments
# $$ Process identification number (PID) for the current script
if []; then
#xxx
elif []; then
#xxx
else
#xxx
fi

for i in 1 2 3 4 5; do
#xxx
done

man test # -f -d -r -w -x -z
shellcheck a.sh # 指出shell里面不太规范的、可能出问题的地方

. a.sh
source a.sh
./a.sh # chmod
bash a.sh
which # 找到某个命令执行的是谁

# 最小权限原则
sudo bash -c 'echo hello > /etc/a.txt'

sudo !! # 获取上一条指令 在some_package包里 如果写在.sh里面要转义

# 环境变量
env # 命令


/dev/null 垃圾箱
/dev/random /dev/urandom 随机数生成

grep "regex pattern" dir

与上课无关的部分

1
2
3
4
df -hl # 列出磁盘使用情况和挂载位置
fdisk -l # 列出每块磁盘分区情况

chown username filename # 改变suo'y