• 鸟哥私房菜 第三部分 学习shell与shell script 学习笔记


    鸟哥私房菜 第三部分 学习shell与shell script 学习笔记

    书本目录:

    第三部分 学习shell与shell script
    第10章 vim程序编辑器
    第11章 认识与学习bash
    第12章 正则表达式与文件格式化处理
    第13章 学习shell script
    
    • 1
    • 2
    • 3
    • 4
    • 5

    shell定义

    shell壳程序:操作系统的内核管理系统的硬件,内核需要进行一定的保护,防止被用户错误导致系统崩溃。可程序是一个在用户和内核之间的桥梁,shell壳程序包含着很多命令,用户通过壳程序和内核进行交互,从而控制硬件。

    Unix shell的类型

    各主要操作系统下缺省的shell:

    AIX下是Korn Shell。
    Solaris缺省的是Bourne shell。
    FreeBSD缺省的是C shell。
    HP-UX缺省的是POSIX shell。
    Linux是Bourne Again shell。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Bourne Shell(sh)

    首个重要的标准Unix Shell是1979年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和 H O M E / . p r o f i l e 文 件 。 / e t c / p r o f i l e 文 件 为 所 有 的 用 户 定 制 环 境 , HOME/.profile文件。/etc/profile文件为所有的用户定制环境, HOME/.profile/etc/profileHOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。

    C shell(csh)

    Bill Joy于20世纪80年代早期,在加利福尼亚大学伯克利分校开发了csh。它主要是为了让用户更容易地使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。

    Korn Shell(ksh)

    有很长一段时间,只有两类shell供人们选择——Bourne shell用来编程,csh用来交互。为了改变这种状况,AT&T贝尔实验室的David Korn开发了ksh。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,ksh广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。ksh是一个交互式的命令解释器和命令编程语言。它符合POSIX——一个操作系统的国际标准。POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
    Bourne Again Shell(bash)
    bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux。大多数的Linux(Red Hat、Slackware、Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。

    POSIX Shell(sh)

    POSIX shell是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh。

    命令

    命令的查找顺序

    根据相对路径或者绝对路径查找
    alias命令别名
    bash当中查找
    PATH路径中查找
    
    • 1
    • 2
    • 3
    • 4

    命令通配符

    *,?,[]
    
    • 1

    特殊指令

    特殊指令含义
    #注释
    |管道操作pipe
    ;连续命令分隔符
    !逻辑非操作
    &后台执行命令
    ( )子shall
    { }命令区块
    " "具有变量替换的功能
    ’ ’不具有变量替换的功能
    || && ;

    ; 表示顺序执行,无相关性
    || 两个命令中只执行一个
    && 前一个命令执行了才执行下一个,否则都不执行

    管道操作pipe

    管道外只处理标准标准输出信息

    重定向

    stdin :标准化输入
    stdout :标准化输出
    stderr : 标准错误输出
    /dev/null : 输出到null(不输出)
    &1 : 标准化输出
    &2 : 标准错误输出

    > 清空输出
    >> 追加输出

    2>&1 将stderr整合到stdout输出
    1>&2 把stdout整合到stderr
    >/dev/null 把stdout整合到/dev/null
    1>/dev/null 把stdout整合到/dev/null

    常用组合

    # 命令后台执行不输出
    命令 >/dev/null 2>&1 &
    # 命令后台执行不输出,忽略SIGHUP信号
    nohup 命令 >/dev/null 2>&1 &
    # 命令后台执行,日志输出到文件/tmp/com.log
    命令 >/tmp/com.log 2>&1 &
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    变量

    $ 当前shell使用的PID(进程ID)
    ? 上个命令的返回值,成功执行返回的是0

  • 相关阅读:
    WINDOWS+PHP+Mysql+Apache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境
    对称(镜像)二叉树
    爬虫源码---爬取小猫猫交易网站
    macOS Big Sur(macos11版本)
    【Raspberry Pi】搭建NAS流媒体播放器 + ARIA2 + YAAW + 迅雷下载系统
    已解决org.springframework.web.client.ResourceAccessException资源访问异常的正确解决方法,亲测有效!!!
    c++day4
    RocketMQ(18)——高可用配置
    Springboot整合Websocket(推送消息通知)
    形态学操作—膨胀
  • 原文地址:https://blog.csdn.net/yjkhtddx/article/details/128146111