课程进度 59% · 第6/9章第6/9章 · 标签 1/3
— 1 —
Shell基础
Shell类型:
- Bash:最常用的Shell
- Zsh:功能强大的Shell
- Fish:用户友好的Shell
- Ksh:Korn Shell
Shell特性:
- 命令解释器
- 脚本编程语言
- 环境变量管理
- 命令历史记录
- 命令补全
📖Shell脚本第一行通常是 #!/bin/bash,使用 chmod +x script.sh 添加执行权限,使用 ./script.sh 或 bash script.sh 运行脚本
脚本编程基础
```bash
#!/bin/bash
# 变量定义
name="world"
# 条件判断
if [ "$name" = "world" ]; then
echo "Hello, $name!"
fi
# 循环
for i in {1..5}; do
echo $i
done
# 函数
greet() { echo "Hi, $1!"; }
greet Alice
```
bash
1
2
# 变量定义
3
name="world"
4
5
# 条件判断
6
if [ "$name" = "world" ]; then
7
echo "Hello, $name!"
8
fi
9
10
# 循环
11
for i in {1..5}; do
12
echo $i
13
done
14
15
# 函数
16
greet() { echo "Hi, $1!"; }
17
greet Alice
— 2 —
常用特殊变量
```bash $0 # 脚本名称 $1-$9 # 位置参数 $# # 参数个数 $@ # 所有参数 $? # 上一条命令的返回值 ```
bash
1
$0 # 脚本名称
2
$1-$9 # 位置参数
3
$# # 参数个数
4
$@ # 所有参数
5
$? # 上一条命令的返回值
文本处理命令
```bash
# 文本搜索
grep 'pattern' file.txt
# 流编辑器
sed 's/old/new/g' file.txt
# 文本分析
awk '{print $1}' file.txt
# 字段提取
cut -d: -f1 /etc/passwd
# 排序
sort file.txt
# 去重
uniq file.txt
```
bash
1
# 文本搜索
2
grep 'pattern' file.txt
3
4
# 流编辑器
5
sed 's/old/new/g' file.txt
6
7
# 文本分析
8
awk '{print $1}' file.txt
9
10
# 字段提取
11
cut -d: -f1 /etc/passwd
12
13
# 排序
14
sort file.txt
15
16
# 去重
17
uniq file.txt
文件操作命令
```bash # 查找文件 find /home -name "*.sh" # 参数传递 find . -type f | xargs wc -l # 归档 tar -czvf archive.tar.gz dir/ # 压缩 gzip file.txt # 同步 rsync -av src/ dest/ ```
bash
1
# 查找文件
2
find /home -name "*.sh"
3
4
# 参数传递
5
find . -type f | xargs wc -l
6
7
# 归档
8
tar -czvf archive.tar.gz dir/
9
10
# 压缩
11
gzip file.txt
12
13
# 同步
14
rsync -av src/ dest/
📖管道:command1 | command2,重定向:command > file,后台运行:command &,命令替换:$(command)
BashZshgrepsedawkfind