Shell脚本和编程 | 青训营笔记

90 阅读4分钟

课程内容

shell基础概念;命令和语法;执行过程和原理;调试和前端集成

学习shell的价值:
  1. Linux服务器的基本操作和管理
  2. 前端Node.js服务的进程管理、问题排查、资源监控等运维操作
  3. 使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署
shell的基本概念
  • Shell(也称为命令行界面或终端)是一种通过文本输入和输出进行交互的计算机用户界面。它允许用户通过输入命令来执行操作、运行程序和管理系统
  1. 命令(Command):Shell通过输入命令来执行不同的操作或任务,例如创建文件、复制文件、移动文件、运行程序等。命令通常由命令名和参数组成,命令名指定要执行的操作,参数用于指定命令的具体操作方式或作用对象。
  2. 提示符(Prompt):Shell在等待用户输入命令时会显示一个提示符,通常是一个特殊的字符或字符串,表示Shell已经准备好接受命令输入。
  3. 文件系统(File System):Shell可以用于管理计算机上的文件和目录,包括创建、复制、移动、删除、重命名、查看等操作。Shell使用文件系统的路径来定位文件和目录,例如绝对路径(从根目录开始的完整路径)和相对路径(从当前目录开始的相对路径)。
  4. 管道(Pipeline):Shell允许将多个命令通过管道连接起来,其中一个命令的输出作为另一个命令的输入。这样可以实现多个命令的组合和协作,从而更加灵活地完成复杂的任务。
  5. 环境变量(Environment Variable):Shell使用环境变量来存储系统级别的配置信息、用户配置和运行时参数。环境变量可以在命令中使用,并且可以通过设置和修改来影响Shell的行为和操作。
  6. 脚本(Script):Shell允许用户编写一系列命令的脚本文件,以便将一组命令作为一个单独的程序运行。脚本可以包含条件语句、循环、函数等控制结构,从而实现更加复杂的自动化任务。
  7. 快捷键(Shortcut):Shell提供了许多快捷键和命令行编辑功能,用于提高命令行操作的效率和便捷性。例如,可以使用上下箭头键来浏览历史命令,使用Tab键进行命令和文件名的自动补全,使用Ctrl+C来中断正在执行的命令等。
shell构成

image.png

shell常用命令

1、ls命令 功能:显示文件和目录的信息 ls 以默认方式显示当前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ls -lh 显示文件的大小,以容易理解的格式印出文件大小 (例如 1K 234M2G) ls -lt 显示文件,按照修改时间排序

2、cd命令 功能:改名目录 cd dir 切换到当前目录下的dir目录 cd / 切换到根目录 cd … 切换到到上一级目录 cd …/… 切换到上二级目录 cd ~ 切换到用户目录,比如是root用户,则切换到/root下

3、cp命令 功能:copy文件 cp source target 将文件source复制为target cp /root /source. 将/root下的文件source复制到当前目录 cp –av soure_dir target_dir 将整个目录复制,两目录完全一样

4、rm命令 功能:删除文件或目录 rm file 删除某一个文件 rm -f file 删除时候不进行提示。可以于r参数配合使用 rm -rf dir 删除当前目录下叫dir的整个目录

shell执行过程
  • 字符解析

    • 识别换行符、分号(;)做行的分割
    • 识别命令连接符(||&&管道)做命令的分割
    • 识别空格、tab符,做命令和参数的分割
  • shell展开,例如{1...3}解析为1 2 3

  • 重定向,将stdin、stdout、stderr的文件描述符进行指向变更

  • 执行命令

    • builtin直接执行
    • 非builtin使用$PATH查找,然后启动子进程执行
  • 收集状态并返回给脚本

前端集成
  1. node中通过exec、spawn调用shell命令

  2. shell脚本中调用node命令

  3. 借助zx等库进行javascript、shell script的融合

    • 借助shell完成系统操作,文件io、内存、磁盘系统状态查看
    • 借助nodejs完成应用层能力,网络io、计算等
总结

image.png