一个简单的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脚本的典型代表开发周期:

  1. 直接在命令行(command line)上测试
  2. 找到能够完成工作的适当语法,再将它们放进一个独立的脚本里,并设置执行权限
  3. 直接使用该脚本

完善

我们的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脚本的更多相关文章

  1. 如何在linux下编写一个简单的Shell脚本程序

    在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...

  2. 一个简单的Shell脚本(解决windows上文本在macos上乱码问题)

    之所以有这一篇文章,是因为之前我写过的一篇文章:“解决Mac上打开txt文件乱码问题”:传送门: https://www.cnblogs.com/chester-cs/p/11784079.html ...

  3. 自动化运维:(3)写一个简单的Shell脚本(案例)

    一.需求 1.test.sh 脚本执行时候需要添加参数才能执行 参数和功能详情如下: 参数 执行效果 start 启动中... stop 关闭中... restart 重启中... * 脚本帮助信息. ...

  4. Linux系统学习笔记之 1 一个简单的shell程序

    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

  5. 一个简单的ETL脚本的内容

    一个简单的ETL脚本应该包含如下内容 1.注释 2.设置字符集 3.基础路径参数 脚本路径 票据路径 日志路径 当前SHELL的脚本别名:declare SHELL_NAME=“${basename ...

  6. 如何写一个简单的shell

    如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: ...

  7. 一个简单的appium脚本

    这是一个简单的appium脚本,测试amazon购物过程的,过程包括搜索商品,然后从结果列表中选取中意的商品,然后加入购物车,等等. 它是一个最原始的脚本,对测试元素.数据.报告等未作任何的封装,后面 ...

  8. python定义的一个简单的shell函数的代码

    把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...

  9. 手动编写一个简单的loadrunner脚本

    loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...

随机推荐

  1. oc特有语法

    分类 问题 1.什么是分类? 就是把一个类的功能,分出一部分来放在一个独立的文件中 2.分类的语法是什么样的? @interface Person(SuperMan) 3.分类与类是什么关系? 分类依 ...

  2. V - stl 的 优先队列 Ⅱ

    Description Because of the wrong status of the bicycle, Sempr begin to walk east to west every morni ...

  3. 深入理解JavaWeb技术内幕(一)

    最近在看许令波的<深入理解JavaWeb技术内幕>.整理了一些笔记.想做一个系列,这篇是系列的第一篇,讲Web请求. B/S架构 最常见的架构方式. 优点: 1.客户端使用统一(此处的统一 ...

  4. MySql5压缩包安装

    一. 解压所有文件到一个目录:例如D:\Program Files\mysql-5.6.22-winx64 二. 配置系统的环境变量:在Path路径后追加:;D:\Program Files\mysq ...

  5. PHP截取汉字乱码问题解决方法mb_substr函数的应用

    首先 1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面. 2.在wind ...

  6. XAMPP下重置mysql密码

    安装XAMPP后,mysql默认是没有密码的,安全起见一般我们都会修改密码. 密码太多,经常会忘记密码,那么,我们可以通过通过以下步骤可以重置mysql密码. 步骤如下: 1. 停止mysql 2.  ...

  7. 用 for/in 在 Java 5.0 中增强循环

    这个方便的构造提供了什么?什么时候适用于代码? Brett McLaughlin (brett@newInstance.com), 作者/编辑, O'Reilly Media, Inc. 简介: fo ...

  8. MEMS开关

    MEMS器件在射频比如无线通信上有很好的应用.RF MEMS谐振器和诱导器品质因子在微波上有大幅度提高.MEMS开关极大地改进了高频性能和降低了能耗.本篇概要介绍MEMS开关. 自从1979年彼特森( ...

  9. 闲来瞎扯 -- 在vs2008下编写linux程序

    虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大.如何使用visual assist来实现代码的提示功能呢? 首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是 ...

  10. 一张图片入门Python

    一张图片入门Python 之前已有别人整理了,一张图入门Python,快速了解各种基本的语法. 英文版: 图 5.1. Quick Python Script Explanation 中文版: 图 5 ...