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. NLS_NCHAR_CHARACTERSET 和 NLS_CHARACTERSET

    SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------------- ...

  2. Linux下安装lvs

    lvs已经编译到linux内核中,仅仅须要安装lvs的管理软件ipvsadm就可以 1. 插入光盘.查找设备 [root@chen ~]# ls -l /dev | grep cdrom lrwxrw ...

  3. 最新版本号cocos2d&#173;2.0&#173;x&#173;2.0.2使用新资源载入策略!不再沿用-hd、-

     前段时间cocos2dx更新了最新版本号cocos2d­2.0­x­2.0.2.也从这个版本号開始对于资源载入与管理都改变了策略. 在之前的载入方式都是通过沿用与cocos2d-iphone一样 ...

  4. qml

    用qt非常久了.可是一直没有注意到一个叫做qml的东西.今天google了一下,总结一下我的理解. 从表面上看qml就是用css javascript那一套来做软件的GUI,和原来的C++的widge ...

  5. centos改动sshport

    vi /etc/ssh/sshd_config 找到#Port 22一段,这里是标识默认使用22port.加入一行例如以下: Port 34981 然后保存退出 然后service sshd rest ...

  6. ip地址转换成16进制long

    <span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param i ...

  7. springboot-quartz普通任务与可传参任务

    两者区别与作用: 普通任务:总调度(SchedulerFactoryBean)--> 定时调度器(CronTriggerFactoryBean) --> 调度明细自定义执行方法bean(M ...

  8. elasticsearch 索引搜索和索引性能优化配置——思路:去掉不必要的数据,减小数据的磁盘空间占用,同时提升性能

    压缩配置: index.codec: best_compression 合并索引: curl –XPOST localhost:9200/hec_test3/_forcemerge’ 配置mappin ...

  9. bzoj2503 相框——思路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2503 思路题: 首先,这种问题应该注意到答案只跟度数有关,跟其他什么连接方法之类的完全无关: ...

  10. WingIDE4.1 破解及支持中文设置

    1.下面提供最新版本的破解方法. 先到http://wingware.com/downloads/wingide下载最新版本的IDE. 安装之前,先修改时间到一个月前. 安装 安装之后然后获取试用版的 ...