一个简单的shell脚本
一个简单的shell脚本
一个简单的shell脚本
编写
假设我想知道目前系统上有多少人登录,使用who命令可以告诉你现在系统有谁登录:
1.[KANO@kelvin ~]$ who
2.KANO tty1 2016-02-15 01:47 (:0)
3.KANO pts/0 2016-02-15 01:48 (kelvin)
当然在个人电脑上,所列出来的列表可能只有上面这么短。但是在一些大型、多用户的系统上,所列出的列表就可能很长。这个时候我们可以使用自动计算用户总数。wc是一个字数计算程序,它可以计算出行数(line)、字数(word)和字符数(character)。
我们用wc -l用以算出行数,表示已登录的用户数
1.[KANO@kelvin ~]$ who|wc -l
2.2
next,我们将此管道转变成一个独立的命令。
1.[KANO@kelvin ~]$ cat>nusers #建立文件,使用cat复制终端的输入
2.who|wc -l #程序内容
3.^D #ctrl+D表示end-of-file
4.[KANO@kelvin ~]$ chmod +x nusers #让文件拥有执行的权限
5.[KANO@kelvin ~]$ ./nusers #执行测试
6.2 #输出结果
一个小型化shell脚本的典型代表开发周期:
- 直接在命令行(command line)上测试
- 找到能够完成工作的适当语法,再将它们放进一个独立的脚本里,并设置执行权限
- 直接使用该脚本
完善
我们的nusers shell脚本并非是编译型程序,因此当shell要求内核执行它时,内核将会报错”executable format file”(不是可执行的格式文件)。shell收到此报错信息时,才会启动一个新的/bin/bash副本来执行该程序。系统只有一个shell时,退回机制是非常方便的。但一般来说我们的系统都会有好几个shell,因此需要通过脚本文件中第一行设置#!来告知内核应该以哪个shell来执行所指定的shell脚本。
1.[KANO@kelvin ~]$ cat nusers
2.#! /bin/bash -
3.
4.who|wc -l
其中选项——表示没有shell选项,这是基于安全上的考虑,可避免某种程度的欺骗式攻击(spoofing attack)。
一个简单的shell脚本的更多相关文章
- 如何在linux下编写一个简单的Shell脚本程序
在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...
- 一个简单的Shell脚本(解决windows上文本在macos上乱码问题)
之所以有这一篇文章,是因为之前我写过的一篇文章:“解决Mac上打开txt文件乱码问题”:传送门: https://www.cnblogs.com/chester-cs/p/11784079.html ...
- 自动化运维:(3)写一个简单的Shell脚本(案例)
一.需求 1.test.sh 脚本执行时候需要添加参数才能执行 参数和功能详情如下: 参数 执行效果 start 启动中... stop 关闭中... restart 重启中... * 脚本帮助信息. ...
- Linux系统学习笔记之 1 一个简单的shell程序
不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...
- 一个简单的ETL脚本的内容
一个简单的ETL脚本应该包含如下内容 1.注释 2.设置字符集 3.基础路径参数 脚本路径 票据路径 日志路径 当前SHELL的脚本别名:declare SHELL_NAME=“${basename ...
- 如何写一个简单的shell
如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: ...
- 一个简单的appium脚本
这是一个简单的appium脚本,测试amazon购物过程的,过程包括搜索商品,然后从结果列表中选取中意的商品,然后加入购物车,等等. 它是一个最原始的脚本,对测试元素.数据.报告等未作任何的封装,后面 ...
- python定义的一个简单的shell函数的代码
把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...
- 手动编写一个简单的loadrunner脚本
loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...
随机推荐
- js取整数、取余数的方法
1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.f ...
- SERVERPROPERTY方法说明
SERVERPROPERTY 返回有关服务器实例的属性信息. 语法 SERVERPROPERTY ( propertyname ) 参数 propertyname 是包含要返回的服务器属性信息的表达式 ...
- 增加配置Apache2 管理 SVN 访问权限
继续之前的 文章里的配置 配置Apache2 管理 SVN 一.修改配置/etc/httpd/conf.d/ subversion.conf <Location /svn/> DAV sv ...
- Struts2中使用Session的两种方法
在Struts2里,如果需要在Action中使用到session,可以使用下面两种方式: 通过ActionContext 类中的方法getSession得到 Action实现org.apache.st ...
- 重读LPTHW-Lesson25
1.ex25接触了字符串函数split().列表函数sorted().pop()函数,整理一下其用法以及其他常见的字符串.列表操作函数如下. (1)split()函数 split()是拆分字符串函数, ...
- Python2.7 转义和正则匹配中文
今天爬虫(新浪微博 个人信息页面)的时候遇到了转义和正则匹配中文出乱码的问题. 先给出要匹配的部分网页源代码如下: <span class=\"pt_title S_txt2\&quo ...
- Zigbee2007协议中文介绍
Zigbee2007中文介绍ZigBee2007规范定义了ZigBee和ZigBee Pro两个特性集,全新的ZigBee 2007规范建立在ZigBee2006之上,不但提供了增强型的功能而且在某些 ...
- Wikioi 1294 全排列
先给出链接地址:Wikioi 1294 虽然题目很短,论难度也就是个深搜,算法方面我就不多说了,而且我知道c++有个函数叫next_permutation,谁用谁知道. 代码如下: #include& ...
- python list求交集
方法一: a=[1,2,3] b=[1,3,4] c=list(set(a).intersection(set(b))) print c #[1,3] 这种方法是先把list转换为set,再用set求 ...
- Oracle数据 行转列
记录一段行转列SQL代码: select cs.standard_id,cs.area_code,cs.exu_dept, regexp_substr(exu_dept, , level) as de ...