1、Shell简介

  作为Linux灵感来源的Unix系统最初是没有图形化界面的,所有的任务都是通过命令行来实现的。因此,Unix的命令行系统得到了很大的发展,逐步成为一个功能强大的系统。

  Shell是一个应用程序,它是用户与Linux系统的接口,允许用户向操作系统输入需要执行的命令,有点类似于Windows的命令提示符,但功能更加强大。

  Shell对Linux系统的重要性不言而喻,它适合于比较简单的小任务,更加关注的是易于配置和维护,因此执行效率往往不是很高。Shell可以用来执行命令,调用Linux工具,还可以执行程序。Shell可以执行Shell程序,通常称为Shell脚本,在运行时解释执行,这就是Shell和Shell脚本的关系。

  Linux系统中有各种不同的Shell,但是默认情况下,我们默认总是作为/bin/sh安装的标准shell是GNU工具中的bash,bash开源并且可移植,被广泛使用。

2、管道和重定向

(1)重定向输出

$ ls -l > output.txt  # 将ls的输出直接保存到文件中  >
$ ps >> output.txt # 输出内容追加到文件末尾 >>

(2)重定向输入

$ more < input.txt # 重定向标准输入
$ more input.txt # more本身也接收文件参数

(3)管道

  管道可以用来连接多个进程(数量没有限制),其操作符是 | ,通过管道连接的进程可以同时运行,并且数据流可以在他们之间自动协调的进行传递。

  注意一点:当使用管道执行一系列的命令时,如果使用重定向输出,相应的输出文件是在这一组命令被创建的同时立即被创建或者写入的,所以绝对不要在命令流中使用相同的文件名,否则会得到一个空文件。

$ ps | sort > output.txt # 对当前进程排序输出
$ ps | sort | more # ps的输出排序,然后一次显示一屏
$ ps -xo comm | sort | uniq | grep -v sh | more # 按字母顺序排序ps的输出,然后uniq取出名字相同的进程,然后用grep -v sh删除名为sh的进程,最终将结果分页显示在屏幕上
$ cat data.txt | sort | uniq > data.txt # 错误,会得到一个空文件

3、作为程序设计语言的Shell

(1)交互式程序

  在命令行上直接输入shell程序是一种简单方式,可以用来测试短小的代码段,方便快捷,更重要的是方便进行测试,这称为交互式脚本。但是每次要执行命令时,都要进行命令的输入,很繁琐,所以除了简单的测试一般情况下不会使用这种方法。

(2)创建脚本

  创建一个非交互式脚本是我们一贯的做法,这就是Shell编程。shell脚本有其独特的优势和用武之地,概括为以下几点:(1)无需编译,解释执行;(2)以文本文件的形式存在;(3)有强大的正则表达式操作;(4)速度相对较慢,数据类型少;(5)主要用于系统管理和文件操作。

  创建并运行一个shell脚本过程如下:

  • 文件编辑。用文本编辑器创建文件,进行编辑,Linux并不以扩展名区分文件类型,但是一般为了直观,可以命令为以.sh为后缀的格式。

    #!/bin/sh
    for file in *
    do
    if grep -l POSIX $file # 匹配文件名包含POSIX的文件
    then
    echo $file
    fi
    done
    exit 0
  • 把脚本设置为可执行。文件创建完成后,简单方法是直接调用,比如$ /bin/sh first.sh,这可以运行,但是更常用的方法是改变文件权限为可执行,然后直接运行。

    $ chmod +x first.sh # 改变权限为可运行
    $ first.sh # 直接运行

【Shell编程】Shell程序设计的更多相关文章

  1. [ SHELL编程 ] shell编程中数值计算方法实例

    SHELL编程中经常会涉及到数值计算,有时候对于这些计算命令使用场景容易忘记或者混淆,这里针对常用的命令做个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表 ...

  2. Linux编程 20 shell编程(shell脚本创建,echo显示信息)

    一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell ...

  3. (三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)

    3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" ...

  4. Shell编程——shell常用命令

    浏览器标签页的切换:Ctrl+Tab [终端]打开终端快捷建:Ctrl+Alt+t关闭终端快捷键:Ctrl+Shift+q打开新的终端标签页快捷键:Ctrl+Shift+t 关闭终端标签页快捷键:Ct ...

  5. shell编程 Shell script 的默认变量($0, $1...)

    Shell script 的默认变量($0, $1...) 我们知道指令可以带有选项与参数,例如 ls -la 可以察看包含隐藏文件的所有属性与权限.那么 shell script 能不能在脚本文件名 ...

  6. Shell编程——Shell中的数学运算

    在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...

  7. Shell编程笔记

    Shell编程笔记与Windows下熟悉的批处理类似,也可以将一些重复性的命令操作写成一个脚本方便处理.   修改别人的脚本,运行后遇到个问题 setenv: command not found 查证 ...

  8. 10、shell编程+流程控制+分支嵌套

    SHELL 编程     shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell)     shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...

  9. shell编程--基本格式,基本语法,运算符,expr,(()),$[]

    02/shell编程 Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell Shell也是一门编程语言."."号执行脚本时,会让脚本在调用者 ...

  10. shell编程企业级实战

    如何才能学好Shell编程 为什么要学习shell编程 Shell是Linux底层核心 Linux运维工作常用工具 自动化运维必备基础课程 学好shell编程所需Linux基础 熟练使用vim编辑器 ...

随机推荐

  1. python 类中的方法

    首先,方法是类内部定义的函数,所以方法是类的属性而不是实例的属性. 其次,方法只能在所属的类拥有实例的时候才能被调用.当存在一个实例的时候,我们可以说方法被绑定到实例.如果没有实例,那么我们就说方法是 ...

  2. 容器+AOP实现动态部署(三)

    上节咱们谈到容器的基本特性,这次继续说容器怎样与AOP进行结合.增强咱们的对象.为对象加入额外的方法. 咱们下面方图为说明 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...

  3. 《Android源代码设计模式解析与实战》读书笔记(十八)

    第十八章.代理模式 代理模式也称托付模式,是结构型设计模式之中的一个.是应用广泛的模式之中的一个. 1.定义 为其它对象提供一种代理以控制对这个对象的訪问. 2.使用场景 当无法或不想直接訪问某个对象 ...

  4. @PropertySource&@ImportResource&@Bean

    @**PropertySource**:加载指定的配置文件: ```java /** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉 ...

  5. ubuntu系统启动qtceator时提示:Qt5.5.1/Tools/QtCreator/lib/qtcreator/plugins/libHelp.so: 无法加载库

    在ubuntu系统下安装好qt5.5后启动qtceator时提示:Qt5.5.1/Tools/QtCreator/lib/qtcreator/plugins/libHelp.so: 无法加载库Qt5. ...

  6. jabberNet 修改花名册条目的昵称

    修改昵称,这么简单的功能,在jabberNet里怎么实现? 翻遍了jabberNet里的代码,jabber.client.RosterManager也,JabberClient也,似乎都没有现成的方法 ...

  7. HDU 5536/ 2015长春区域 J.Chip Factory Trie

    Chip Factory Problem Description John is a manager of a CPU chip factory, the factory produces lots ...

  8. Android+Jquery Mobile学习系列(3)-创建Android项目

    前两章分别对开发环境和Jquery Mobile基础知识进行了介绍,本章介绍创建一个Android项目,并使用WebView控件显示HTML数据. 首先创建一个Android Application项 ...

  9. P1228 地毯填补问题(分治)

    P1228 地毯填补问题(分治) 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿.宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将 ...

  10. CodeForces - 789D Weird journey

    D. Weird journey time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...