linux系统的命令组与函数
一、命令组
许多时候,我们在shell操作上,需要在一定条件下一次执行多个命令,也就是说,要么不执行,要么就全执行,而不是每次依序的判断是否要执行下一个命令。或是,需要从一些命令执行优先次顺中得到豁免,如算术的 2*(3+4) 那样...这时候,我们就可引入"命令组"(command group)的概念:将多个命令集中处理。
在命令行中,有两个meta可以将多个命令集中处理,它们是()和{},但是在技术细节上却有很大差别:
():将命令组置于子shell去执行,也称 nested sub-shell,相当于用fork方式去执行命令组;
{}:在同一个shell内执行,也称为non-named command group,相当于用source方式去执行命令组。
二、函数
(1) 所谓的函数,就是用一个名字去命名一个命令组,然后再调用这个名字去执行命令组,其实就是相当于给non-named command group加上了一个可以调用的名字。
(2) 在bash中,函数的定义方式有两种:
方式一:
function function_name {
command1
command2
command3
....
}
方式二:
fuction_name () {
command1
command2
command3
....
}
三、取消函数
unset function_name
四、脚本中的脚本
若我们在shell 操作中,需要不断的重复质行某些命令,我们首先想到的,或许是将命令写成脚本。不过,我们也可以写成函数,然后在命令行中打上function_name就可当一般的脚本来使用了。只是若你在shell中定义的函数 ,除了可用 unset function_name 取消外,一旦退出shell,函数也跟着取消。
然而,在 script 中使用 function 却有许多好处,除了可以提高整体 script 的执行效能外(因为已被加载),还可以节省许多重复的代码。
简单而言,若你会将多个命令写成脚本以供调用的话,那你可以将函数看成是脚本中的脚本。
一般来说,我们可以自行定义许许多多好用的脚本,再集中写在特定文件中,然后,在其它的脚本中用source将它们加载并反复执行。
RedHat Linux 中的/etc/rc.d/init.d/functions 文件就是这样的作用。
五、参考
1. 《shell十三问》
(完)
linux系统的命令组与函数的更多相关文章
- LINUX系统VMSTAT命令详解
linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1 1表示每秒采集一次vms ...
- Linux系统——awk命令
awk命令不仅仅是Linux系统的命令,也是一种编程语言,用来处理数据和生成报告(Exel),处理的数据可以是一个或多个文件(标准输入和管道获取标准输入).可在命令行上编辑操作,也可以写成awk程序运 ...
- 查看linux系统版本命令 (转)
查看linux系统版本命令 分类: Linux 知识小结2011-10-10 15:26 240162人阅读 评论(9) 收藏 举报 linuxredhatdebianx86susesun 一.查看内 ...
- Linux系统ifconfig命令找不到,centos ifconfig Command not found
centos ifconfig Command not found,Linux系统ifconfig命令找不到 >>>>>>>>>>>& ...
- Linux系统基础命令
这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ...
- Linux系统-解压缩命令集合
Linux系统-解压缩命令集合 linux zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. ...
- 【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙
Linux系统下命令行连接蓝牙设备 2018年11月26日 10:47:27 Zz笑对一切 阅读数:741 1.打开系统蓝牙 sudo service bluetooth start 1 进入bl ...
- 给大家介绍一下linux系统高级命令
输出重定向(mip.0834jl.com) ;覆盖文件内容 回声' 123 ' 测试;覆盖原始内容 回声' 123 ' 测试;原始存在(共存) echo 'ken2 '(www.jl0834.com) ...
- spark实验(一)--linux系统常见命令及其文件互传(2)
2.使用 Linux 系统的常用命令 启动 Linux 虚拟机,进入 Linux 系统,通过查阅相关 Linux 书籍和网络资料,或者参考 本教程官网的“实验指南”的“Linux 系统常用命令”,完成 ...
随机推荐
- SysTick_Config
SystemCoreClockUpdate();SysTick_Config(SystemCoreClock/2000); //500us
- mysql执行导入导出数据源
mysql执行导入导出数据源 一.导出数据表结构 导出数据库建表的结构,不带数据,windows环境下,在cmd下,执行: mysqldump –no-data –u username –p* dat ...
- python从网络时间服务器获取并打印当前时间以及pip安装ntplib的一次体验
首先需要安装ntplib,科一通过pip安装. ubuntu下科一通过如下指令安装pip: $ sudo apt-get install python-pip 使用如下指令安装ntplib: $ su ...
- 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 九 assign和subscribe
1 subscribe: 自动安排分区, 通过group自动重新的负载均衡: 关于Group的实验: 如果auto commit = true, 重新启动进程,如果是同样的groupID,从上次co ...
- 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案
我在使用SpringMVC的@RequestBody和@ResponseBody注解处理JSON数据的时候,总是出现415的错误,说是不支持所提交数据格式,我在页面中使用了JQuery的AJAX来发出 ...
- css:层叠样式表-网页布局基础
css:层叠样式表:一.写法分类: 1.内联(行内,写在标签里面,以属性的形式表现,属性名是style) 例:<table style="background-color: aqua& ...
- Memory leak by misusing Autofac
Recently I’ve found out that we can easily cause a memory leaks in our .net application by improper ...
- 线程queue、线程进程池、异步回调机制
1. 线程 queue queue is especially useful in threaded programming when information must be exchanged sa ...
- ISIS与OSPF的区别与联系
共同之处: 1 都是链路状态路由协议,都要求区域内的路由器交换链路状态信息,链路状态信息被收集到链路状态数据库中 2 都是用了一种实现路由选择信息交换相似机制 3 都在广播网络中选择指定路由器来控制扩 ...