Linux Shell脚本系列之一

Linux 2017-07-12

  • 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

本文由 阿涛 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论