一个简单的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服务: ...
随机推荐
- android spinner 每行字体颜色都变化
final static int[] COLOR_LIST={Color.WHITE,Color.WHITE,Color.GRAY,Color.YELLOW,Color.RED}; spinner=( ...
- Oracle闪回详解
1.问题定义 闪回是dba做的工作.现在也可授权给某个用户. 闪回的定义:就是将用户错误的操作回恢到以前的状态.即使你的事务提交的commit. 如果你删除了一个表.Drop table(DDL) ...
- ThreadPoolExecutor(转)
让ThreadPoolExecutor的workQueue占满时自动阻塞submit()方法 By learnhard | 2015 年 09 月 04 日 0 Comment 转载请注明出处:htt ...
- 使用NODEJS+REDIS开发一个消息队列以及定时任务处理
作者:RobanLee 原创文章,转载请注明: 萝卜李 http://www.robanlee.com 源码在这里: https://github.com/robanlee123/RobCron 时间 ...
- jquery easyui form load
加载数据后如果有其他操作可以这样写: $(function () { //如果加载远程json数据后还需要有其他操作, 可以这样写 $.getJSON('GetHandler.ashx?xmbh=&l ...
- HttpClient---------demo
public class aa { public static void main(String[] args) { // 创建HttpClient实例 HttpClient httpclient = ...
- twisted 使用
工欲善其事,必先利其器,我们先来进行 twisted 框架的安装,由于平时使用的都是 Windows 系统,那么下面我们就讲解下 Windows 下 twisted 框架的安装(1)下载 twiste ...
- 喷水装置(一)--nyoj题目6
喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中 ...
- C++ 前置声明 和 包含头文件 如何选择
假设有一个Date类 Date.h class Date { private: int year, month, day; }; 如果有个Task类的定义要用到Date类,有两种写法 其一 Task1 ...
- Nginx 配置指令的执行顺序(一)
大多数 Nginx 新手都会频繁遇到这样一个困惑,那就是当同一个 location 配置块使用了多个 Nginx 模块的配置指令时,这些指令的执行顺序很可能会跟它们的书写顺序大相径庭.于是许多人选择了 ...