Shell脚本(一)---------------Bash简述与基本功能

shell脚本学习系列(一)
下一篇:Bash变量与环境配置文件


1Shell基础

1.1概述

  • 1.1.1Shell是什么?

    Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。

    Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在shell中可以直接调用Linux命令。

  • 1.1.2Shell分类

    Shell的两种主要语法类型有Bourne和C, 这两种语法彼此不兼容。

        Bourne家族主要包括sh、ksh、Bash、psh、zsh;    (主流Linux)
        C家族主要包括:csh、tcsh                        (BSD版Unix)
    

1.2脚本执行方式

  • 1.2.1echo输出命令

  • 1.2.1.1 echo [选项] [输出内容]

    注意: 如果输出内容包含空格,则必须使用双引号或单引号
    选项:
    -e 支持反斜线控制的字符转换

控制字符        作用
    \\          \本\a          输出警告音
    \b          退格键,即向左删除键
    \c          取消输出行末的换行符.和"-n"选项一致
    \e          ESCPE键
    \f          换页符
    \n          换行符
    \r          回车键
    \t          制表符,即tab键
    \v          垂直制表符
    \0nnn       八进制ASCII码输出字符
    \xhh        十六进制ASCII码输出字符

示例:

     1.echo -e 'hello world!'   ======> hello world!
       echo -e "ab\bc"          ======> ac               \b  表示退格删除
     2.echo -e "\e[1;31m abcd \e[0m"  =======> (红色的) abcd
       30m-黑色;  31m-红色; 32m-绿色; 33m-黄色; 34m-蓝色;
       35m-洋红;  36m-青色; 37m-白色;
  • 1.2.1.2脚本开头:
#!/bin/Bash
  • 1.2.1.3脚本执行
赋予权限
    Chmod 755 xxxx.sh
执行
    ./xxxx.sh
或
    bash xxxx.sh

1.3 Bash基本功能

  • 1.3.1历史命令与补全
    1.3.1.1history [选项] [历史命令保存文件]
选项:
    -c      清空历史命令
    -w      把缓存中的历史命令写入历史命令保存文件~/bash_history

注意:历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改(HISTSIZE属性)

历史命令的调用:
 1)使用上、下箭头调用以前的历史命令
 2)使用"!n"重复执行第n条命令
 3)使用"!!"重复执行上一条命令
 4)使用"!字符串"重复执行最后一条以该字符串开头的命令
  • 1.3.1.2使用tab键补全命令或文件名
  • 1.3.2别名与快捷键

1.3.2.1Alias

alias 别名= '原命令'     设定别名
alias               查询命令别名
  示例: alias vi = 'vim'
让别名永久生效:
    vi /root/.bashrc
删除别名:
    unalias 别名
注意:命令执行时的顺序
  1)第一顺位执行用绝对路径或相对路径执行的命令
  2)第二顺位执行别名
  3)第三顺位执行Bash的内部命令
  4)第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
  • 1.3.2.2Bash常用快捷键

Shell脚本(一)---------------Bash简述与基本功能_第1张图片

  • 1.3.3输入输出重定向
  • 1.3.3.1标准输入输出
    Shell脚本(一)---------------Bash简述与基本功能_第2张图片
  • 1.3.3.2输出重定向
类型 符号 作用
标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备中.
命令>>文件 以追加的方式, 把命令的正确输出输出到指定的文件或设备中.
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备中.
错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备中.
正确输出和错误输出同时保存 命令>文件 2>&1 以覆盖的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中.
命令>>文件 2>1 以追加的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中.
命令 &>文件 以覆盖的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中.
命令 &>>文件 以追加的方式,把命令的正确输出和错误输出都保存到指定的同一份文件或设备中.
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

- 1.3.3.3输入重定向

wc [选项] [文件名]
  选项:
   -c    统计字节数
   -w    统计单词数
   -l     统计行数
命令<文件       把文件作为命令的输入
命令<<标识符 
…
标识符         把标识符之间的内容作为命令的输入
  • 1.3.4多命令顺序执行与管道符
  • 1.3.4.1多命令顺序执行
    Shell脚本(一)---------------Bash简述与基本功能_第3张图片
  • 1.3.4.2dd命令

dd命令可用于拷贝任意类型的文件,包括磁盘,分区等,主要用于磁盘拷贝.

dd if=输入文件 of=输出文件 bs=字节数 count=个数

选项:
if=输入文件         指定源文件或源设备
of=输出文件         指定目标文件或目标设备
bs=字节数          指定一次输入/输出的字节,即把字节数看做一个数据块
count=个数            指定输入/输出多少个数据块
例子:
创建一个1000kb的文件:dd if=/dev/zero of=/root/testfile bs=1k count=1000;
拷贝一个sda磁盘:dd if=/dev/sda of=/dev/sda2 bs=1024k count=1000;
  • 1.3.4.3管道符 |
命令1 | 命令2           表示命令1的正确输出,作为命令2的操作对象
示例:
ll –a /etc/ | more
netstat –an | grep “ESTABLISHED”

grep [选项] “搜索内容” 文件名
选项:
    -i              忽略大小写
    -n              输出行号
    -v              取反
    --color=auto        搜索出的关键字用颜色显示
  • 1.3.5通配符和其他特殊符号
  • 1.3.5.1通配符
    Shell脚本(一)---------------Bash简述与基本功能_第4张图片
  • 1.3.5.2其他特殊符号
    Shell脚本(一)---------------Bash简述与基本功能_第5张图片

shell脚本学习系列(一)
下一篇:Bash变量与环境配置文件

你可能感兴趣的:(Linux)