Shell脚本学习指南读书笔记(一)
第1章 背景知识略
第2章 入门
编译型语言
优点:高效
缺点:多半运作于底层,处理字节、整数或其他机器层级的对象(C++中就很难将一个目录所有文件复制到另一个目录中)
脚本编程语言
通常是解释型的,这类程序是解释器读入程序代码,转换成内部形式再执行(解释器本身是一般的编译型程序)
为啥使用Shell脚本?
好处:运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象
缺点:效率不如编译型语言
命令
who
用途:现在系统中有谁在登录
[liujing@localhost ~]$ who
liujing :0 2018-10-18 11:17 (:0)
liujing pts/0 2018-10-18 11:17 (:0)
wc
用途:数字计算,算出 行数line、字数word、字符数character
| (一个竖线,管道符号)
用途:在两个程序之间建立管道pipeline
[liujing@localhost ~]$ who | wc -l
2
who的输出,成了wc的输入,wc所列出的结果就是已登录用户的个数
将命令转在一个独立的命令
[liujing@localhost ~]$ cat > nusers
who | wc -l
CTRL+D 表示 end-of-file
[liujing@localhost ~]$ chmod +x nusers
[liujing@localhost ~]$ ./nusers
2
小型Shell脚本开发周期:
- 直接单独测试每个命令行
- 将它们一起放在一个独立的脚本里
- 将这个独立的脚本设置执行权限
- 在使用时可直接执行该独立脚本
Shell执行一个程序时:
- 要求Unix内核启动一个新的进程以便在该进程里执行指定的程序,内核知道如何为编译型程序做这件事
- Shell脚本不是编译型程序,当Shell要求内核执行它时则无法做到(错误信息:not executable format file 不是可执行的格式文件)
- Shell收到错误信息会启动一个新的/bin/sh(标准Shell)副本来执行该程序
#!
告知UNIX内核应该以哪个Shell来执行所指定的Shell脚本
#! /bin/sh
该行长度最好不要超过64个字符
#! /bin/sh -
- 表示没有Shell选项,这是基于安全考虑,可避免某种程度的欺骗式攻击 spoofing attack
重定向
<
>
- - 表示选项结尾(PS:这不是很理解)
; 分隔同一行多条命令
& 在后台执行命令,意味着不用等命令完成,就可以执行下条命令
三种基本命令
- 内建命令
- Shell函数
- 外部命令
Shell 变量名称 开头是一个字母或下划线
变量赋值,中间没有任何空格
要赋值的值包含空格,要加引号
取出变量值用$
name1=liujing
name2=$name1
name3=" $name1 $name2"
输出
echo 会自动加换行符
printf 不会自动加换行符
重定向
< 改变标准输入
> 改变标准输出
>> 以附加的形式加到文件结尾
| 将左边的标准输出变为右边的标准输入
tr
/dev/null 传送到此文件的数据都会被系统丢掉
/dev/tty 自动重定向到一个终端
stty -echo 关闭自动打印输入字符的功能
stty echo 打开自动打印输入字符的功能
stty(set tty)
$PATH
: 分隔
echo $PATH
.profile
::
参数
$1 ~ $9
超过9则使用{ }包起来,如 ${10}
[liujing@localhost ~]$ who
liujing :0 2018-10-18 11:17 (:0)
liujing pts/0 2018-10-18 11:17 (:0)
[liujing@localhost ~]$ who | grep liujing
liujing :0 2018-10-18 11:17 (:0)
liujing pts/0 2018-10-18 11:17 (:0)
[liujing@localhost ~]$ who | grep pts
liujing pts/0 2018-10-18 11:17 (:0)
# 为注释
#! 也同样扮演注释的角色
打开及关闭命令追踪
set -x
set +x
Shell脚本学习指南读书笔记(一)相关推荐
- Linux Shell脚本攻略 读书笔记
内容目录: 嗨,Echo一下 给终端来点颜色 shell的控制结构 算术比较 目录操作 网站下载 tar 归档工具 rsync 备份系统快照 ftp自动传输 磁盘管理 故障排查 使用syslog记录日 ...
- 《Shell脚本学习指南》读书笔记
P30-31 软件工具的原则 1.一次做好一件事 2.处理文本行,不要处理二进制数据 3.使用正则表达式 4.默认使用标准输入/输出 5.避免喋喋不休 6.输出格式必须与可接受的输入格式一致 7.让工 ...
- Shell脚本学习指南(三)——文本处理工具
文章目录 排序文本 行的排序 以字段的排序 文本块排序 sort的效率 sort的稳定性 sort小结 删除重复 重新格式化段落 计算行数.字数以及字符数 打印 打印技术的演化 其他打印软件 提取开头 ...
- Linux命令行与Shell脚本编程大全读书笔记
Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab 管理系统开机时会自动启动的进程 2./etc/init. ...
- 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脚本学习指南(六)——输入/输出、文件与命令执行
文章目录 前言 标准输入.标准输出与标准错误输出 使用read读取行 关于重定向 额外的重定向运算符 文件描述符处理 printf的完整介绍 波浪号展开与通配符 波浪号展开 使用通配符 命令替换 为h ...
- Shell脚本学习指南(二)——查找与替换
文章目录 前言 查找文本 简单的grep 正则表达式 什么是正则表达式 POSIX方括号表达式 基本正则表达式 匹配单个字符 后向引用 单个表达式匹配多字符 文本匹配锚点 BRE运算符优先级 匹配单个 ...
最新文章
- poj3692(二分匹配)
- Java多线程相关知识
- 安装zabbix4.0+grafana
- 【Python】快速认识Pandas的10大索引
- 算法竞赛入门经典(第二版) | 例题5-3 安迪的第一个字典 (紫书牛啤!)(UVa10815,Andy's First Dictionary)
- Linux下双线双ip访问内网服务器之另类解决办法
- matlab multithreading spyder,spyder和python的关系是什么
- birt java api_「Birt」birt api生成报表 | 学步园
- mysql 百度地图 省市_批量获取百度地图的行政区划电子围栏
- layui里面layer弹窗渲染layerdate,时间控件不出现,闪现问题,F12才出来
- 单闭环直流调速系统仿真实验
- 【行空板教程】手写输入法
- 直通车点击软件测试自学,如何用直通车测出高点击好图
- 计算机显示器屏幕什么也不显示,电脑显示器黑屏(显示屏不显示)四种解决方法...
- 编程疑难杂症の无法剔除的神秘重复记录
- 短信发送中文数据到手机显示乱码
- 设备巡检的执行的痛点及解决方案
- 计算机映像缺失磁盘如何修复,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
- 正则表达式包含某字符串且不包含某些字符串
- ResNet 残差网络、残差块