Shell1|青训营笔记

95 阅读2分钟

作为前端人为什么需要去学习shell呢

因为shell是Linux服务器的基本操作和管理的手段、是Node.js服务进程管理、问题排查、资源监控等运维的操作

使用shell来编写TCE、SCM、Docker脚本,完成服务编译和部署的工作

shell是内核与设备之间的交互,现如今还集成了开发通用的设计模式(管道和过滤器),具备控制流程,循环,变量,命令查找的机制

它既是命令解释器,也是一门编程语言。

自定义变量、环境变量、系统环境变量作用域、声明方式shell都不一致,自定义变量有规范

如果取得bash需要完整的登录流程,我们称之为login shell,不需要登录的bash,称之为non-login bash

如果修改了配置文件,不会立即生效,需要我们重启终端或者执行source命令

$、反引号、转义符是会解析成特殊的意义

单引号:完全引用,只能原样输出

反引号:执行命令

管道与管道符|,作用是将前一个命令的结果传递给后面的命令 语法:cmd1|cmd2 要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理 注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出

每个shell命令在执行时都会打开三个文件描述符,文件描述符0、1、2,分别对应stdin、stdout、stderr,这三个文件描述符默认只想终端输入、终端输出、那么当命令需要获取输入的时候,它会去读取fd0,当要输出的时候它会像fd1、fd2写入,改变这些描述符指向的行为叫做重定向。

test、【、【【这三种判断符号 test condition 【 condition 】 【【 condition 】】 注意:中括号前后要有空格符 【和test是命令,只能使用自己支持的标志位,<,>,=只能用来比较字符串 中括号内的便利那个,最好是用引号括起来 【【更丰富,在整型比较中支持<,>,=,在字符串中比较支持=~正则

while循环:while condition ; do 程序段 ; done until循环:until condition ; do 程序段 ; done for循环: for var in 【words...】; do 程序段; done