基本概念

  • awk和Bourne Shell,是POSIX Shell的基础
  • 除了POSIX标准,还有欧洲的X/Open标准
  • 正则表达式的两种类型
    • BRE Basic Regular Expressions 基本型 grep使用
    • ERE Extended Regular Expressions 扩展性 egrep使用
  • 小型Shell脚本的开发,首先,直接在命令行测试,然后将一系列命令放到脚本中,并设置可执行权限,最后使用脚本
$ cat > users       #建立文件,使用cat复制终端的输入who | wc -l     #程序的内容^D              #Ctrl + D表示end-of-line
$ chmod +x nusers   #让文件拥有可执行权限
$ ./nusers          #执行6
$ cat nusers        #文件内容who | wc -l
  • Shell脚本第一行的”#!”
#! /bin/sh     #告诉系统用哪种Shell解释
#! /bin/sh -f  #-f表示执行脚本的参数,后面不能有空格,空格会跟着选项一起传给程序/bin/sh -f /bin/ls -la#! /bin/awk -f #声明一个awk脚本,参数为-f
#! /bin/sh -   #表示没有选项。这是基于安全的考虑,可避免欺诈攻击
  • Shell命令行参数

    • 不需要参数的选项,可以合并
    • 用分号分隔同一行里的多条命令
    • Shell基本命令
      • 内建命令
      • Shell函数
      • 外部命令——Shell会启动一个新进程执行外部命令,执行完后,回到Shell的进程继续执行
    • $加数字,表示脚本的参数
    • 如果参数超过9,则用大括号括起来 ${10}
ls -la
cd /usr/bin; ls -la
  • 变量

    • 已字母或下划线开头
    • 变量可以是空值,空值就是null
    • 变量赋值时,等号左右不能有空格
    • 获取变量的值,前面加$;如果值中含空格,需要用引号括起来
#! /bin/sh -
var1=1          #=>1
var2=aaa        #=>aaa
var3="bbb"      #=>bbb
var4="aaa bbb"  #=>aaa bbb
var5 =1         #=>错误
var6= 2         #=>错误
  • 输出

    • echo

      • 简单的输出,以换行符结束
      • -n选项,省略最后的换行符
      • echo命令标准不统一,所以可移植性有问题,只用此命令做最简单的输出,不要用复杂的参数
    • printf
      • 必须显示地指定换行符
#! /bin/sh -
echo "Hello World!"                 #=>Hello World!
printf "Hello World! i = [%d]\n" 3  #=>Hello World! i = [3]
  • IO重定向

    • > 重定向标准输出
    • < 重定向标准输入
    • >> 追加到文件
    • | 管道
    • /dev/null 读取/dev/null,会立即返回EOF
  • 基本命令查找
    • Shell在环境变量$PATH中查找要执行的命令
    • $PATH中,空项目用::表示,表示当前路径
    • 以:开头,表示先找当前路径
    • 以:结尾,表示最后找当前路径
    • 用.代替空项目,增强可读性
    • 不应该在查找路径中放进当前路径,因为会产生安全问题
  • 执行跟踪
    • 会打印Shell执行的语句
    • set -x 开始跟踪
    • set +x 取消跟踪
#! /bin/sh -
set -x
echo "111"
set +x
echo "222"#输出:
+ echo 111
111
+ set +x
222
  • 国际化与本地化

    • internationalization i18n
    • localization l10n
    • Locale环境变量
      • LANG 未设置任何LC_XXX时的默认值
      • LC_ALL 用来覆盖所有其他的LC_XXX变量的值
      • LC_COLLATE 排序规则
      • LC_CTYPE 字符集
      • LC_MESSAGES 消息与响应(仅POSIX使用)
      • LC_MONETARY 货币
      • LC_NUMERIC 数字
      • LC_TIME 时间与日期
    • 应该避免为任何的LC_XXX变量赋值
    • locale -a
      • 列出所有locale名称
    • LC_ALL=da locale -ck LC_TIME
      • 查询丹麦文的时间日期格式

Shell脚本学习指南(一)——基本概念相关推荐

  1. Shell脚本学习指南(三)——文本处理工具

    文章目录 排序文本 行的排序 以字段的排序 文本块排序 sort的效率 sort的稳定性 sort小结 删除重复 重新格式化段落 计算行数.字数以及字符数 打印 打印技术的演化 其他打印软件 提取开头 ...

  2. Shell脚本学习指南(六)——输入/输出、文件与命令执行

    文章目录 前言 标准输入.标准输出与标准错误输出 使用read读取行 关于重定向 额外的重定向运算符 文件描述符处理 printf的完整介绍 波浪号展开与通配符 波浪号展开 使用通配符 命令替换 为h ...

  3. Shell脚本学习指南(五)——变量、判断、重复动作

    文章目录 前言 变量与算术 变量赋值与环境 参数展开 展开运算符 位置参数 特殊变量 算术展开 退出状态 退出状态值 if-else-else-fi语句 逻辑的NOT.AND与OR test命令 ca ...

  4. 《Shell脚本学习指南》读书笔记

    P30-31 软件工具的原则 1.一次做好一件事 2.处理文本行,不要处理二进制数据 3.使用正则表达式 4.默认使用标准输入/输出 5.避免喋喋不休 6.输出格式必须与可接受的输入格式一致 7.让工 ...

  5. Shell脚本学习指南(七)——产生脚本

    文章目录 前言 路径查找 软件构建自动化 前言 本篇,我们将进一步处理更复杂的工作.我们认为这里举出的例子都是一般用得到的工具,它们每一个都截然不同,且在大多数UNIX工具集里也没有. 在篇中的程序, ...

  6. linux shell脚本学习指南,shell脚本学习指南[二](Arnold Robbins Nelson H.F. Beebe著)

    该进入第四章了,刚才看到一个帖子标题:我空有一身泡妞的好本领,但可惜自己是个妞.汗-这个...音乐无国界嘛,这个不应该也没性别界么? 第四章文本处理工具 书中先说明了以下排序的规则,数值的就不用说了, ...

  7. Shell脚本学习指南 - 第二章入门篇

    shell脚本的第一行#! #! /bin/awk -f 内核会扫描文件开头的#!后面内容,跳过所有空白符号,寻求可以用来执行程序的解释器的full path和option(option后面的空格会识 ...

  8. Shell脚本学习指南-查找与替换篇

    一.查找与替换 编写 Shell脚本时经常用到的两个基本操作: 1.文本查找 (searching) - 寻找含有特定文本的行 2.文本替换(substitution)- 更换找到的文本 可以使用固定 ...

  9. Shell脚本学习指南(二)——查找与替换

    文章目录 前言 查找文本 简单的grep 正则表达式 什么是正则表达式 POSIX方括号表达式 基本正则表达式 匹配单个字符 后向引用 单个表达式匹配多字符 文本匹配锚点 BRE运算符优先级 匹配单个 ...

  10. 《Shell脚本学习指南》第一章 背景知识

    1.1 Unix简史 Unix第一版诞生于1970年,也就是贝尔实验室退出Multics项目不久. 在Unix广受欢迎的功能中,有许多是来自Multics操作系统. 其中最著名的有:将设备视为文件,以 ...

最新文章

  1. 点云深度学习的Pytorch框架
  2. SQl inner LOOP | HASH | MERGE join--指定Join的方法
  3. 盘点那些让程序员目瞪口呆的奇葩Bug,最后一个什么梗
  4. 计算机三维实体建模与应用教学要求,三维建模教学大纲.doc
  5. 2021儋州市民族中学高考成绩查询,海南2021高考成绩排名查询,海南高考个人成绩排名如何查询...
  6. 免费直播:1 小时带你体验 Python 车牌识别实战
  7. 网络管理:超级详细Tcpdump 的用法
  8. Python文件与函数练习题
  9. STM32——WAVWM8978简介
  10. html背景图片固定代码
  11. react:customize-cra修改webpack配置
  12. 亚马逊查询订单listorders方法
  13. php jpeg windows,jpg和jpeg有什么区别
  14. 依据前端传递的数字等生成二维码图片
  15. stc12c5a60s2c语言程序,STC12C5A60S2单片机 花样流水灯(小鸟归巢)C程序
  16. 2019,焉知非福,决胜新城
  17. MySQL教程——2 中级篇(索引、视图、存储过程)
  18. 【weblogic】WTC配置(Weblogic Tuxedo Connector)
  19. 7、全国天气查询API接口,免费好用
  20. Vue 微信微博分享

热门文章

  1. 一道简单的CTF社工题思路
  2. TOGAF9企业架构规划与设计学习考试经验简记
  3. 计算机丢失d3d10,“怎样解决d3dx10_42.dll丢失造成的游戏打不开”的解决方案
  4. 谷歌浏览器批量图片下载插件-合成pdf
  5. 【安装sql 2008步骤】
  6. SQL删除重复数据,保留ID最大的一条
  7. php和mysql做甘特图_Twproject Gantt开源甘特图功能扩展
  8. 孙鑫老师的j2ee教程—j2ee视频教程
  9. xshell7官方个人免费版下载
  10. 文件转Base64格式