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/shsudo 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:导入模块->模块调用系统命令->执行