美文网首页Shell我用 Linux
Linux Shell脚本系列之一

Linux Shell脚本系列之一

作者: 鐘濤 | 来源:发表于2017-07-12 23:18 被阅读56次
    • Shell概述


      shell的作用
    • 接收输入的命令,是一个命令行解释器,把接收到的命令转为二进制传给内核,由内核调用硬件处理
    • 解释执行的脚本语言,可以直接调用Linux系统命令,可以编写一些程序,方便运维人员使用
    • Shell的分类
    • Bourne Shell (sh,ksh,Bash,psh,zsh) Bash是Linux标准Shell
    • C Shell (csh,tcsh) 语法与C语言类似
    • 查看当前系统使用的Shell可以使用命令行:echo $SHELL

    • echo 输出命令
      echo [选项] [内容]
      -e:支持反斜线控制的字符转换
      设置输出字体的颜色 31m=红色,32m=绿色,34m=蓝色,0m=重置
      echo -e "\e[1;31m 我是红色的字体 \e[0m"
      设置背景颜色 41m=红色,42m=绿色,43m=黄色,0m=重置
      echo -e "\e[1;42m 我的背景颜色是绿色 \e[0m"
    • 写一个脚本
      vi hello.sh:用vim编辑器写一个hello.sh文件
      #!/bin/bash : 位于首行,声明我这个文件是Linux的标准脚本,即声明使用Bash的命令解释器(不可省略)
      #这是第一个shell脚本:#代表注释
      echo -e "\e[1;31m 我是红色的字体 \e[0m"
      :wq退出vim编辑器并保存
      chmod 755 hello.sh:修改文件权限
      ./hello.sh:执行当前目录下的hello.sh脚本

    • 命令的别名
      alias:查看系统中所有的命令别名
      alias cp='cp -i':此时执行cp时相当于cp -i(临时生效,注销后则失效,永久生效需修改环境变量配置文件)
      unalias:删除别名
    • 命令生效顺序 (先后依次排序如下)
    • 绝对路径或相对路径执行的命令
    • 执行别名
    • 执行Bash内部命令
    • 执行$PATH环境变量下定义的目录里的命令

    • 常用快捷键
    • ctrl+c:强制终止当前命令
    • ctrl+z:把当前执行命令放入后台
    • ctrl+a:光标移动到当前命令行的行首
    • ctrl+e:光标移动到当前命令行的行尾
    • ctrl+u:从当前光标位置删除命令行到行首
    • ctrl+r:在历史命令中搜索
    • ctrl+l:清屏相当于clear

    • history [选项] [历史命令保存文件]
      -c:清空历史命令
      -w:把缓存中的历史命令写入到历史命令保存文件中 默认为~/.bash_history
    • 历史命令的调用
    • 按上下箭头
    • !!:执行上一条命令
    • !字符串:执行匹配最后一条以该字符串开头的命令
    • 使用Tab键 进行命令和文件目录的补全,若当前匹配的有多个则再摁多一次,则会列出所有匹配的文件或目录

    • 输出重定向:把原来应该输出到显示器的内容,输出到其他地方,一般输入到文件

    • 文件描述符
      0:标准输入
      1:标准输出
      2:标准错误输出

    • 标准输出重定向 只能保存正确命令的执行的结果
      命令 > 文件:覆盖的方式输出到文件
      命令 >> 文件:追加的方式输出到文件

    • 标准错误输出重定向 只能保存错误命令的执行的结果
      错误命令 2> 文件:覆盖的方式输出到文件
      错误命令 2>> 文件:追加的方式输出到文件
      注意2>之间没有空格,否则会报错

    • 正确输出和错误输出同时保存
      命令 > 文件 2>&1
      命令 >> 文件 2>&1
      命令 &> 文件
      命令 &>> 文件
      命令 >> 文件1 2>> 文件2

    • &>/dev/null:系统黑洞可以当成垃圾站,就是执行命令不想看到结果

    • 输入重定向:wc [选项] [文件名]
      选项
      -c:统计字节数
      -w:统计单词数
      -l:统计行数

    • 例子:
      执行wc命令
      输入:
      asdf asdfg
      再按ctrl+d结束

      举个栗子1
    • wc < 文件wc 文件:则是统计文件

    • wc << 字符串:当输入相同字符串时结束输入,进行统计

      举个栗子2
    • 管道符
      命令1 | 命令2 : 命令1的正确输出作为命令2的操作对象


      举个栗子3
    • 通配符
      ?:匹配一个任意字符
      *:匹配任何内容,0个或多个任意字符
      []:匹配中括号中的任意一个字符,[ab] 则匹配到的是a或b
      [ - ]:-代表的是一个范围,[0-9]表示的就是匹配一个数字
      [ ^ ]:匹配除了[]范围中的一个字符,[^a-z]表示匹配一个不是小写字母的字符


      举个栗子4
    • 其他特殊符号
      ''在单引号中,会认为是字符串
      ""在双引号中,'$'被认为是调用变量,'`'被认为是引用命令,''被认为是转义符
      $()应用系统命令

      举个栗子5

    相关文章

      网友评论

        本文标题:Linux Shell脚本系列之一

        本文链接:https://www.haomeiwen.com/subject/yarihxtx.html