linux命令(6) shell脚本编程基础

1 shell 基础

1.1 shell 脚本必须的格式如下:

#!/bin/bash  /这一行是必须的
# the first program
echo -e "'\e[1;34m hello world \e[0m"
  • echo [选项] [输出内容]
    • -e 支持反斜杠控制的字符转换
控制字符作用
\a输出警告音
\b退格键 也就是向左删除键
\n换行符
\r回车键
\t制表符, 也就是tab键
\v垂直制表符

示例:
echo -e "\e[1;31m hello worlk \e[0m" 意思即为红色输出结果, 其中: \e[1;31m \e[0m是格式
31m= 红色

1.2 脚本执行:

  • 赋予执行权限, 直接运行
    • chmod 755 hello.sh
    • ./hello.sh
  • 通过bash调用执行脚本
    • bash hello.sh

1.3 bash的基本功能

  • 别名与快捷键
    • alias 查看系统中的别名
    • alias 别名 = '原命令' 设定别名
    • ~/.bashrc 写入环境变量配置文件,使别名永久生效
    • unalias 别名 删除别名
  • 历史命令
    • history [选项] [历史命令保存文件]
      • -c 清空历史命令
      • -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
      • 历史命令默认为会保存1000条, 可以在环境变量配置文件etc/profile中修改
      • !n 重复执行第n条历史命令
      • !! 重复执行上一条命令
      • !字符串 重复执行最后一条以该字串开头的命令

1.4 输入输出重定向

  • 标准输入输出
设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stdierr2标准错误输出
  • 输出重定向
类型符号用途
标准输出重定向命令 > 文件(大于号后面有空格)以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
标准输出重定向命令 >> 文件(大于号后面有空格)以追加的方式, 把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向错误命令 2>文件(大于号后面没有空格)以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
标准错误输出重定向错误命令 2>>文件(大于号后面没有空格)以追加的方式, 把命令的错误输出输出到指定的文件或设备当中
正确输出和错误输出同时保存命令 > 文件 2>&1覆盖方式, 正确和错误都保存到同一个文件当中
命令 >> 文件 2>&1追加方式,正确和错误都保存到同一个文件当中
命令 &>文件(推荐)覆盖方式,正确和错误都保存到同一个文件当中
命令 &>>文件 (推荐)追加方式,正确和错误都保存到同一个文件当中
命令 >> 文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中
  • 示例: 命令 &>/dev/null 不显示命令的输出结果,不论正确还是错误的

  • 输入重定向 wc [选项] [文件名] 不常用

    • -c 统计字节数
    • -w 统计单词数
    • -l 统计行数

1.4.1 多命令顺序执行

多命令执行符格式用途
;命令1; 命令2多个命令顺序执行, 命令之间没有任何逻辑联系
&&命令1&&命令2逻辑与, 当命令1正确执行, 命令2才会执行, 当命令1执行不正确, 则命令2不会执行
||命令1||命令2逻辑或, 当命令1执行不正确, 则命令2才会执行, 当命令1正确执行, 则命令2不会执行.
|命令1|命令2管道符, 命令1的正确输出作为命令2的操作对象, 所以命令2要保证可以处理命令1的结果才能正确执行

命令示例
命令 && echo yes || echo no 来判断命令是否正确执行

1.4.2 管道符示例

- `ls -h | more` 分屏展示
- `netstat -an | grep ESTABLISHED` 查找`ESTABLISHED`关键字的网络状态
- `netstat -an | grep ESTABLISHED | wc -l` 查找`ESTABLISHED`关键字的网络状态的行数

1.4.3 特殊符号

符号作用
‘’单引号, 在单引号中所有的特殊符号, 如"$“和”`"(反引号)都没有特殊含义
“”双引号, 在双引号中特殊符号都没有特殊含义, 但是"$", "`“和”“是例外, 拥有"调用变量的值”, "引用命令"和"转义符"的特殊含义
``反引号.反引号括起来的内容是系统命令, 在bash中会先执行它.和 ( ) 作 用 一 样 , 不 过 推 荐 使 用 ()作用一样, 不过推荐使用 (),使(), 因为反引号非常容易看错.
$()和反引号作用一样, 用来引用系统命令
#表示注释
$用于调用变量的值, 如需要调用path的值时, 使用$path的方式得到变量的值
\转义符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值