Shell工具和脚本

Shell脚本

大多数shell都有自己的脚本语言,包括变量、控制流和自己的语法。与其他脚本语言不同的是,shell脚本针对shell所从事的相关工作进行来优化
变量赋值语法:

foo=bar

赋值语句不能使用空格隔开,因为shell脚本中使用空格会起到分割参数的作用
访问变量中存储的数值:$foo
Bash中的字符串通过'"分隔符来定义。定义的字符串为原义字符串,其中的变量不会被转义,而"定义的字符串会将变量值进行替换

命令通常使用STDOUT来返回输出值,使用STDERR来返回错误及错误码,便于脚本以更加友好的方式报告错误。返回码或退出状态是脚本/命令之间交流执行状态的方式。返回值0表示正常执行,其他所有非0的返回值都表示有错误发生。
另一个常见的模式是以变量的形式获取一个命令的输出,这可以通过命令替换实现:当通过$(CMD)这样的方式来执行CMD这个命令时,然后它的输出结果会替换掉$(CMD)
还有一个冷门的类似特性:进程替换<(CMD)会执行CMD并将结果输出到一个临时文件夹中,并将<(CMD)替换成临时文件名。
例如:

diff <(ls foo) <(ls bar)

会显示文件夹foo和bar中文件的区别

脚本例子:
会遍历我们提供的参数,使用grep 搜索字符串 foobar,如果没有找到,则将其作为注释追加到文件中。

echo "Starting program at $(date)"
echo "Running program $0 with $# arguments with pid $$"
for file in $@; dogrep foobar $file > /dev/null 2> /dev/nullif [[ $? -ne 0 ]]; thenecho "File $file does not have any foobar,adding one"echo "# foobar" >> "$file"fi
done

当执行脚本时,我们经常需要提供形式类似的参数。bash可以基于文件扩展名展开表达式。这一技术被称为shell的通配

  • 通配符:?*来匹配一个或任意个字符
  • 花括号{}:当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便

脚本并不一定只有用bash写才能在终端里调用

shell函数和脚本的不同点:

  • 函数只能用与shell使用相同的语言,脚本可以使用任意语言。因此在脚本中包含shebang是很重要的。
  • 函数仅在定义时被加载,脚本会在每次被执行时加载。这让函数的加载比脚本略快一些,但每次修改函数定义,都要重新加载一次。
  • 函数会在当前的shell环境中执行,脚本会在单独的进程中执行。因此,函数可以对环境变量进行更改,脚本则不行。脚本需要使用 export 将环境变量导出,并将值传递给环境变量。
  • 与其他程序语言一样,函数可以提高代码模块性、代码复用性并创建清晰性的结构。shell脚本中往往也会包含它们自己的函数定义。

Shell工具

查看命令如何使用

  1. 为对应的命令行添加-h--help
  2. 使用man命令

查找文件

所有的类Unix系统都包含一个名为find的工具。find命令会递归地搜索符合条件地文件

shell最好的特性就是您只是在调用程序,因此您只要找到合适的替代程序即可

查找代码

一种场景:希望查找具有某种模式的全部文件,并找它们的位置
为了实现这一点,很多类Unix的系统都提供了grep命令,它是用于对输入文本进行匹配的通用工具。

查找shell命令

首先,按向上的方向键会显示你使用过的上一条命令,继续按上键则会遍历整个历史记录。history命令允许以程序员的方式来访问shell中输入的历史命令。
如果要搜索历史记录,则可以利用管道将输出结果传递给grep进行模式搜索。

文件夹导航

使用fasd可以查找最常用和/或最近使用的文件和目录

Linux复习笔记(2)相关推荐

  1. Scua 23年Linux复习笔记

    Linux 第一讲 Linux的起源.历史.特点.定义 Linux是一个类Unix内核的可以自由发布的实现版本,是一个操作系统的底层核心(内核) Linux => 内核 Linux系统 => ...

  2. Linux期末复习笔记(太原理工大学)

    Linux学习笔记 励志 第一章 linux操作系统 一.简介 二.安装vmware 三.安装linux CentOS 7 : 四.安装finalshell 五.linux目录结构 1.基本介绍: 2 ...

  3. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  4. 2018.8.5 复习笔记

    2018.8.5 复习笔记 1,"a" + "b" + 3 strcat double d = 3 object obj = d int i = (int)ob ...

  5. Linux学习笔记——1、Basic knowledge

    参考鸟哥的Linux私房菜地址:http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php 参考网中人地址:http://www.study-are ...

  6. 考研《软件工程--面向对象和传统的方法》复习笔记

    <软件工程--面向对象和传统的方法>复习笔记 第一章 软件工程的范畴 引言 可以结合 软件工程导论第六版 --张海藩 1.软件工程概念: 软件工程是一门学科,目的是生产出没有错误的软件,按 ...

  7. 复习笔记之——ROS(robot operating system)

    很久之前就学过ROS了,一直有相关的项目开发,但是后面没用一段时间后,对于ROS细节的东西几乎都忘了.故此写下这篇学习笔记(应该说复习笔记),作为以后复习用. 本博文虽然以ROS命名,但更多的算是直接 ...

  8. 【蒟蒻の笔记】CSP初赛复习笔记

    CSP初赛复习笔记 初赛什么都能考?就nm离谱/doge 计算机科学发展史 起源 图灵和图灵机以及其他成就 Alan Mathison Turing--艾伦·麦席森·图灵,于1936年发表了图灵机这一 ...

  9. Spring复习笔记:4

    在复习笔记三中我们进行的案例的编写,我们可以发现,就算使用了注解的方式,xml配置文件文件还是不能够删除,现在我们来将一些新的注解可以让我们去掉xml配置文件. @Configuration 作用:指 ...

最新文章

  1. 如何在ppt下面加入讲解内容_学术展示系列:学术PPT教程(下)内容 讲解
  2. 矩阵分解(rank decomposition)文章代码汇总
  3. 亏损63亿,美图真能“美”到上市?
  4. ubuntu16.04设置静态IP
  5. poj/OpenJ_Bailian - 2528 离散化+线段树
  6. Qt Creator选择模式
  7. python云计算面试题_云计算工程师面试问题及答案解析
  8. 翁恺c语言第6周编程答案,程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)(示例代码)...
  9. add_axes()——python绘图
  10. mysql 关闭autocommit_mysql禁用autocommit,以及遇到的问题
  11. JavaScript的预编译过程分析
  12. 本特利探头177230-01-02-CN
  13. 怎么查看电脑开关机时间记录
  14. Windows程序设计-剪贴板
  15. 百度地图、高德地图、腾讯地图比较
  16. 抖音怎么开直播?抖音开播流程介绍
  17. 删除win10系统默认微软输入法
  18. 接口测试Jmeter
  19. 《西西弗神话》读后感
  20. 学校计算机使用维护管理制度,计算机教室使用管理制度

热门文章

  1. python自动化广告收益_薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!...
  2. 程序员炒股,如何计算股票投资组合的风险和收益
  3. c语言露点温度,露点温度 - 含义及计算方法
  4. Gflags简单使用
  5. 【设计模式之美 设计原则与思想:设计原则】23 | 实战一(上):针对业务系统的开发,如何做需求分析和设计?
  6. YOLOv5face
  7. 力扣刷题 - LCP 30. 魔塔游戏
  8. 012SpringBoot-Shiro(安全框架)
  9. vbs画动态爱心代码_用vb算法画出爱心
  10. 中国传媒大学计算机与网络空间安全学院,网络空间安全学院