Shell脚本和编程

您所在的位置:网站首页 shell脚本while循环执行命令 Shell脚本和编程

Shell脚本和编程

2023-05-20 22:31| 来源: 网络整理| 查看: 265

Shell脚本和编程|青训营笔记 Shell基本概念 概念 Shell(也称为命令行界面或终端)是一种通过文本输入和输出进行交互的计算机用户界面。它允许用户用过输入命令来执行操作、运行程序和管理系统。 复制代码 复制代码 1.命令(Command):Shell通过输入命令来执行不同的操作或任务,例如创建文件、复制文件、移动文件、运行程序等。命令通常由命令名和参数组成,命令名指定要执行的操作,参数用于指定命令的具体操作方式或作用对象。 2. 提示符(Prompt):Shell在等待用户输入命令时会显示一个提示符,通常是一个特殊的字符或字符串,表示Shell已经准备好接受命令输入。 3. 文件系统(File System):Shell可以用于管理计算机上的文件和目录,包括创建、复制、移动、删除、重命名、查看等操作。Shell使用文件系统的路径来定位文件和目录,例如绝对路径(从根目录开始的完整路径)和相对路径(从当前目录开始的相对路径)。 4. 环境变量(Environment Variable):Shell使用环境变量来存储系统级别的配置信息、用户配置和运行时参数。环境变量可以在命令中使用,并且可以通过设置和修改来影响Shell的行为和操作。 5. 脚本(Script):Shell允许用户编写一系列命令的脚本文件,以便将一组命令作为一个单独的程序运行。脚本可以包含条件语句、循环、函数等控制结构,从而实现更加复杂的自动化任务。 6. 快捷键(Shortcut):Shell提供了许多快捷键和命令行编辑功能,用于提高命令行操作的效率和便捷性。例如,可以使用上下箭头 复制代码 Bash的历程 1.Ken Thompson(来自贝尔实验室)在1971年UNIX开发了第一个shell,称为 V6 shell 2.Stephen Bourne在贝尔实验室为 V7 UNIX所开发的Bourne shell,即 sh 3.开源组织 GNU 为了取代 Bourne shell 开发的Bourne-Again shell, 即 Bash 复制代码 复制代码 构成 Unix shell既是一个命令解释器也是一种编程语言。作为命令解释器,shell为丰富的GNU工具集提供了用户接口。 复制代码

image.png

命令和语法 管道 管道与管道符 | ,作用是将前一个命令的结果传递给后面的命令 语法:cmd1 | cmd2 **要求**:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理 **注意**:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出 复制代码 复制代码 重定向 - `>`:将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。 - `>>`:将命令的输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则在文件末尾追加。 - `2>`:将命令的错误输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。 - `&>`:将命令的输出和错误输出重定向到一个文件中,如果文件不存在则创建,如果文件已经存在则覆盖。 - ` 1 3 5 {a..e} => a b c d e

波浪号展开~

#当前用户主目录 ~ => ���� /��=>HOME /fo=>HOME/foo #指定用户的主目录 -fred/foo=>用户fred的SHOEM/foo #当前工作目录  +/foo => PWD/foo #上一个工作目录 ~-/foo => {$OLDPWD-' -')/foo

参数展开 1. 间接参数扩展${!parameter},其中引用的参数并不是parameter而是parameter的实际的值 2. 参数长度${#parameter} 3. 空参数处理 S{parameter:-word}#为空替换 {parameter:=word#为空替换,并将值赋给parameter变量 parameter:?word)#为空报错 {parameter:+word}#不为空替换 4. 参数切片 {parameter:offset) {parameter:offset:length} 5. 参数部分删除 {parameter%word} #最小限度从后面截取word {parameter%%word}#最大限度从后面截取word S{parameter#word}#最小限度从前面截取word ${parameter##word#最大限度从前面截取word 复制代码 复制代码 命令替换

在子进程中执行命令,并用得到的结果替换包裹的内容,形式上有两种:$(...)或...

数学计算

使用$( ( ) ) 包裹数学运算表达式,得到结果并替换

文件名展开

当有单词没有被引号包裹,且其中出现了‘*’,‘?’,and ‘[’ 字符,则shell会去按照正则匹配的方式查找文件名进行替换,如果没找到则保持不变

调试和前端集成 调试的方法 1. 普通log,使用echo、printf 2. 使用set命令 3. vscode debug插件 复制代码 复制代码 Vscode插件配置 1. shellman:代码提示和自动补全 2. shellcheck:代码语法校验 3. shell-format:代码格式化 4. Bash Debug:支持单步调试 - 安装vscode插件 - 编写launch.json文件 - 升级bash到4.x以上版本 复制代码 复制代码 前端集成 1. **node中通过exec、spawn调用shell命令** 2. **shell脚本中调用node命令** 3. **借助zx等库进行javascript、shell script的融合** - 借助shell完成系统操作,文件io、内存、磁盘系统状态查看 - 借助nodejs完成应用层能力,网络io、计算等 复制代码 复制代码 最后的大纲

大纲.webp



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3