Shell脚本学习指南(一)——基本概念
基本概念
- 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
- 必须显示地指定换行符
- echo
#! /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脚本学习指南(一)——基本概念相关推荐
- Shell脚本学习指南(三)——文本处理工具
文章目录 排序文本 行的排序 以字段的排序 文本块排序 sort的效率 sort的稳定性 sort小结 删除重复 重新格式化段落 计算行数.字数以及字符数 打印 打印技术的演化 其他打印软件 提取开头 ...
- Shell脚本学习指南(六)——输入/输出、文件与命令执行
文章目录 前言 标准输入.标准输出与标准错误输出 使用read读取行 关于重定向 额外的重定向运算符 文件描述符处理 printf的完整介绍 波浪号展开与通配符 波浪号展开 使用通配符 命令替换 为h ...
- Shell脚本学习指南(五)——变量、判断、重复动作
文章目录 前言 变量与算术 变量赋值与环境 参数展开 展开运算符 位置参数 特殊变量 算术展开 退出状态 退出状态值 if-else-else-fi语句 逻辑的NOT.AND与OR test命令 ca ...
- 《Shell脚本学习指南》读书笔记
P30-31 软件工具的原则 1.一次做好一件事 2.处理文本行,不要处理二进制数据 3.使用正则表达式 4.默认使用标准输入/输出 5.避免喋喋不休 6.输出格式必须与可接受的输入格式一致 7.让工 ...
- Shell脚本学习指南(七)——产生脚本
文章目录 前言 路径查找 软件构建自动化 前言 本篇,我们将进一步处理更复杂的工作.我们认为这里举出的例子都是一般用得到的工具,它们每一个都截然不同,且在大多数UNIX工具集里也没有. 在篇中的程序, ...
- linux shell脚本学习指南,shell脚本学习指南[二](Arnold Robbins Nelson H.F. Beebe著)
该进入第四章了,刚才看到一个帖子标题:我空有一身泡妞的好本领,但可惜自己是个妞.汗-这个...音乐无国界嘛,这个不应该也没性别界么? 第四章文本处理工具 书中先说明了以下排序的规则,数值的就不用说了, ...
- Shell脚本学习指南 - 第二章入门篇
shell脚本的第一行#! #! /bin/awk -f 内核会扫描文件开头的#!后面内容,跳过所有空白符号,寻求可以用来执行程序的解释器的full path和option(option后面的空格会识 ...
- Shell脚本学习指南-查找与替换篇
一.查找与替换 编写 Shell脚本时经常用到的两个基本操作: 1.文本查找 (searching) - 寻找含有特定文本的行 2.文本替换(substitution)- 更换找到的文本 可以使用固定 ...
- Shell脚本学习指南(二)——查找与替换
文章目录 前言 查找文本 简单的grep 正则表达式 什么是正则表达式 POSIX方括号表达式 基本正则表达式 匹配单个字符 后向引用 单个表达式匹配多字符 文本匹配锚点 BRE运算符优先级 匹配单个 ...
- 《Shell脚本学习指南》第一章 背景知识
1.1 Unix简史 Unix第一版诞生于1970年,也就是贝尔实验室退出Multics项目不久. 在Unix广受欢迎的功能中,有许多是来自Multics操作系统. 其中最著名的有:将设备视为文件,以 ...
最新文章
- 点云深度学习的Pytorch框架
- SQl inner LOOP | HASH | MERGE join--指定Join的方法
- 盘点那些让程序员目瞪口呆的奇葩Bug,最后一个什么梗
- 计算机三维实体建模与应用教学要求,三维建模教学大纲.doc
- 2021儋州市民族中学高考成绩查询,海南2021高考成绩排名查询,海南高考个人成绩排名如何查询...
- 免费直播:1 小时带你体验 Python 车牌识别实战
- 网络管理:超级详细Tcpdump 的用法
- Python文件与函数练习题
- STM32——WAVWM8978简介
- html背景图片固定代码
- react:customize-cra修改webpack配置
- 亚马逊查询订单listorders方法
- php jpeg windows,jpg和jpeg有什么区别
- 依据前端传递的数字等生成二维码图片
- stc12c5a60s2c语言程序,STC12C5A60S2单片机 花样流水灯(小鸟归巢)C程序
- 2019,焉知非福,决胜新城
- MySQL教程——2 中级篇(索引、视图、存储过程)
- 【weblogic】WTC配置(Weblogic Tuxedo Connector)
- 7、全国天气查询API接口,免费好用
- Vue 微信微博分享