Linux复习笔记(2)
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工具
查看命令如何使用
- 为对应的命令行添加
-h
或--help
- 使用
man
命令
查找文件
所有的类Unix系统都包含一个名为find
的工具。find
命令会递归地搜索符合条件地文件
shell最好的特性就是您只是在调用程序,因此您只要找到合适的替代程序即可
查找代码
一种场景:希望查找具有某种模式的全部文件,并找它们的位置
为了实现这一点,很多类Unix的系统都提供了grep
命令,它是用于对输入文本进行匹配的通用工具。
查找shell命令
首先,按向上的方向键会显示你使用过的上一条命令,继续按上键则会遍历整个历史记录。history
命令允许以程序员的方式来访问shell中输入的历史命令。
如果要搜索历史记录,则可以利用管道将输出结果传递给grep
进行模式搜索。
文件夹导航
使用fasd
可以查找最常用和/或最近使用的文件和目录
Linux复习笔记(2)相关推荐
- Scua 23年Linux复习笔记
Linux 第一讲 Linux的起源.历史.特点.定义 Linux是一个类Unix内核的可以自由发布的实现版本,是一个操作系统的底层核心(内核) Linux => 内核 Linux系统 => ...
- Linux期末复习笔记(太原理工大学)
Linux学习笔记 励志 第一章 linux操作系统 一.简介 二.安装vmware 三.安装linux CentOS 7 : 四.安装finalshell 五.linux目录结构 1.基本介绍: 2 ...
- linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库
Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...
- 2018.8.5 复习笔记
2018.8.5 复习笔记 1,"a" + "b" + 3 strcat double d = 3 object obj = d int i = (int)ob ...
- Linux学习笔记——1、Basic knowledge
参考鸟哥的Linux私房菜地址:http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php 参考网中人地址:http://www.study-are ...
- 考研《软件工程--面向对象和传统的方法》复习笔记
<软件工程--面向对象和传统的方法>复习笔记 第一章 软件工程的范畴 引言 可以结合 软件工程导论第六版 --张海藩 1.软件工程概念: 软件工程是一门学科,目的是生产出没有错误的软件,按 ...
- 复习笔记之——ROS(robot operating system)
很久之前就学过ROS了,一直有相关的项目开发,但是后面没用一段时间后,对于ROS细节的东西几乎都忘了.故此写下这篇学习笔记(应该说复习笔记),作为以后复习用. 本博文虽然以ROS命名,但更多的算是直接 ...
- 【蒟蒻の笔记】CSP初赛复习笔记
CSP初赛复习笔记 初赛什么都能考?就nm离谱/doge 计算机科学发展史 起源 图灵和图灵机以及其他成就 Alan Mathison Turing--艾伦·麦席森·图灵,于1936年发表了图灵机这一 ...
- Spring复习笔记:4
在复习笔记三中我们进行的案例的编写,我们可以发现,就算使用了注解的方式,xml配置文件文件还是不能够删除,现在我们来将一些新的注解可以让我们去掉xml配置文件. @Configuration 作用:指 ...
最新文章
- 如何在ppt下面加入讲解内容_学术展示系列:学术PPT教程(下)内容 讲解
- 矩阵分解(rank decomposition)文章代码汇总
- 亏损63亿,美图真能“美”到上市?
- ubuntu16.04设置静态IP
- poj/OpenJ_Bailian - 2528 离散化+线段树
- Qt Creator选择模式
- python云计算面试题_云计算工程师面试问题及答案解析
- 翁恺c语言第6周编程答案,程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)(示例代码)...
- add_axes()——python绘图
- mysql 关闭autocommit_mysql禁用autocommit,以及遇到的问题
- JavaScript的预编译过程分析
- 本特利探头177230-01-02-CN
- 怎么查看电脑开关机时间记录
- Windows程序设计-剪贴板
- 百度地图、高德地图、腾讯地图比较
- 抖音怎么开直播?抖音开播流程介绍
- 删除win10系统默认微软输入法
- 接口测试Jmeter
- 《西西弗神话》读后感
- 学校计算机使用维护管理制度,计算机教室使用管理制度
热门文章
- python自动化广告收益_薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!...
- 程序员炒股,如何计算股票投资组合的风险和收益
- c语言露点温度,露点温度 - 含义及计算方法
- Gflags简单使用
- 【设计模式之美 设计原则与思想:设计原则】23 | 实战一(上):针对业务系统的开发,如何做需求分析和设计?
- YOLOv5face
- 力扣刷题 - LCP 30. 魔塔游戏
- 012SpringBoot-Shiro(安全框架)
- vbs画动态爱心代码_用vb算法画出爱心
- 中国传媒大学计算机与网络空间安全学院,网络空间安全学院