zoukankan      html  css  js  c++  java
  • shell脚本0——”一切皆文件“, 认识Shell

    一、”一切皆文件“与“管道”

    1)管道:grep foo /path/to/file | grep -n -k 3 | more

    实际过程与我们直观认为的相反,最好通过实际过程理解。首先运行的是more,它的输入被连接至一个管道。然后是sort,并且其输出被连接至之前的那个管道。接着创建第二个管道,并且将sort的stdin连接至该管道。最后执行grep,将其stdout连接至与sort进程相连的那个管道。

    当grep开始运行并输出数据时,数据顺着管道流向sort,sort处理后顺着管道输出到more,由more对管道输出的全部内容进行分页输出。在由错误的情况下,这样的过程会有不同的行为,more有错误,不会有任何事情发生,若grep键入错误,则more和sort会执行到错误被检测出来。

    2)管道的存在使得系统中的工具在编写时假设它们处理的是文本流。”一切皆文件“的概念与4种可执行的文件操作(opne close read write)意味着Unix实际上使用了一种简洁明了的系统设计方法。shell脚本本身也是文本形式的系统实用程序。

    二、开始一个shell脚本

    1)用户登录的shell程序就是一个设立了程序解释器,解释执行shell脚本;

    通常在shell程序的首行指明shell程序采用哪个解释器来执行它,格式为:#!/bin/bash,若没有指明,用当前登陆shell来解释执行,echo $SHELL可以查看登陆的shell程序

    2)执行:chmod +x 然后./执行    或者bash *.sh

    3)以#开头的行为注释行

    三、认识shell

    LINUX是一个操作系统,它在CPU、磁盘驱动器、内存、监视器、键盘和其他硬件之间起调节作用。(非图形界面时)当你看那UNIX屏幕时,实际上并没有见到UNIX,只是见到由该操作系统运行的一个程序,它对键盘进行监控并作出相应,这个程序就被称作注册Shell(Login Shell)。

    bash  启动新的shell命令

    exit    退出

    echo $SHLVL

    注1:

    开头的空格被忽略,缩进只是为了好看

    字符让shell忽略换行符, 用于换行接续命令

    # 注释,可用在行首、行尾

    #!/bin/bash   脚本开头

    Shell程序设计:

    差不多总是用来使任务自动化。Shell与用户交互的工具非常少,至多可以问用户一个问题和接收一个文本答复,需要用户交互时应使用性能更全面的语言

    Shell特性:

    别名alias;

    命令替换:倒引号(`)把一个命令的输出合并到另一个命令中;

    后台处理:(不需要提供输入) find / -name “hello” -print > find.log & ;

    变量;

    管道(pipe):把一个命令的输出连接到另一个命令的输入。

    重定向(redirection):可以改变程序的输入来源和程序的输出地点 

    模式匹配: ls *.py

    特殊字符:

    “ 使shell无法认出大多数特殊字符(除去$ `)

    ‘ 使shell无法认出所有特殊字符

    `命令替换

    跟在反斜杠之后的字符就失去其特殊含义

    ;使一行上放多个命令

    &后台

    ()创建组命令

    {}用来创建Shell过程的命令块

    |管道

    <>&重定向

    *?[]!用于文件名模式匹配

    $引用变量名开头

    #注释

    空格 制表符 换行符   通称空白符用于分隔Shell命令中的词

  • 相关阅读:
    腾讯会议API接入
    解决远程调用三方接口:javax.net.ssl.SSLHandshakeException报错
    iOS自动创建本地化文件
    数组转换
    2021MongoDB技术实践与应用案例征集活动获奖通知
    MongoDB按需物化视图介绍
    参会指南 | 2021MongoDB南京技术沙龙
    叮咚买菜自建MongoDB上云实践
    MongoDB技术实践与应用案例征集中
    使用WT工具恢复MongoDB数据
  • 原文地址:https://www.cnblogs.com/daduryi/p/6691658.html
Copyright © 2011-2022 走看看