02-Shell 入门
什么是Shell¶
- Shell是一个命令解释器,是用户访问Linux操作系统内核服务的桥梁。
- 分类
- 窗口shell -> gnome, kde, explorer.exe
- 命令行shell -> bash, cmd.exe, powershell.exe
-
shell历史
- sh -> ksh -> csh -> bash
-
Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。
- Bourne Again shell,它是Linux操作系统默认的shell,是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。
- Dash,GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接,但鉴于bash过于复杂,有人把bash从NetBSD移植到Linux并更名为dash (Debian Almquist Shell),并建议将/bin/sh指向它,以获得更快的脚本执行速度。Dash Shell 比Bash Shell小的多,符合POSIX标准。
dash 比 bash 更轻,更快。但 bash 却更常用。如果一些命令、脚本等总不能正常执行,有可能是 dash 的原因。
可以直接修改 /bin/sh 链接文件,将其指定到 /bin/bash:
sudo ln -fs /bin/bash /bin/sh
或sudo dpkg-reconfigure dash
Shell-初体验¶
- 编辑文件
#!/bin/sh echo "Hello world!" echo "666"
- 修改权限
chmod +x test.sh
- 执行Shell脚本
./test.sh or sh ./test.sh
Shell脚本(Shell Script)¶
- Shell脚本是为Shell编写的脚本程序
- Shell命令执行特点: 逐行输入命令,逐行确认
开发规范¶
1. 命名:要有意义,eg. `xxx.sh`
2. 首行:必须是命令解释器 eg. `#!/bin/bash`
3. 注释:简单描述脚本信息 eg. `# 测试命令输入`
4. 执行:`sh 脚本文件.py` or `bash 脚本文件.py` or `./xxx.py`
5. 规范:成对符号成对写 `() [] {} "" `
source¶
使用source执行加载shell脚本,可以保证环境一致性,将shell脚本中定义的环境变量在当前环境也生效。
source xxx.sh
Why Shell¶
- Shell脚本直接调用系统命令执行,效率高
- Python:导入模块->模块调用系统命令->执行