第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脚本开发周期:

  1. 直接单独测试每个命令行
  2. 将它们一起放在一个独立的脚本里
  3. 将这个独立的脚本设置执行权限
  4. 在使用时可直接执行该独立脚本

Shell执行一个程序时:

  1. 要求Unix内核启动一个新的进程以便在该进程里执行指定的程序,内核知道如何为编译型程序做这件事
  2. Shell脚本不是编译型程序,当Shell要求内核执行它时则无法做到(错误信息:not executable format file 不是可执行的格式文件)
  3. Shell收到错误信息会启动一个新的/bin/sh(标准Shell)副本来执行该程序

#!
告知UNIX内核应该以哪个Shell来执行所指定的Shell脚本

#! /bin/sh

该行长度最好不要超过64个字符

#! /bin/sh -

- 表示没有Shell选项,这是基于安全考虑,可避免某种程度的欺骗式攻击 spoofing attack

重定向
<
>

- - 表示选项结尾(PS:这不是很理解)
; 分隔同一行多条命令
& 在后台执行命令,意味着不用等命令完成,就可以执行下条命令

三种基本命令

  1. 内建命令
  2. Shell函数
  3. 外部命令

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脚本学习指南读书笔记(一)相关推荐

  1. Linux Shell脚本攻略 读书笔记

    内容目录: 嗨,Echo一下 给终端来点颜色 shell的控制结构 算术比较 目录操作 网站下载 tar 归档工具 rsync 备份系统快照 ftp自动传输 磁盘管理 故障排查 使用syslog记录日 ...

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

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

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

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

  4. Linux命令行与Shell脚本编程大全读书笔记

    Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab   管理系统开机时会自动启动的进程 2./etc/init. ...

  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脚本学习指南(六)——输入/输出、文件与命令执行

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

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

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

最新文章

  1. poj3692(二分匹配)
  2. Java多线程相关知识
  3. 安装zabbix4.0+grafana
  4. 【Python】快速认识Pandas的10大索引
  5. 算法竞赛入门经典(第二版) | 例题5-3 安迪的第一个字典 (紫书牛啤!)(UVa10815,Andy's First Dictionary)
  6. Linux下双线双ip访问内网服务器之另类解决办法
  7. matlab multithreading spyder,spyder和python的关系是什么
  8. birt java api_「Birt」birt api生成报表 | 学步园
  9. mysql 百度地图 省市_批量获取百度地图的行政区划电子围栏
  10. layui里面layer弹窗渲染layerdate,时间控件不出现,闪现问题,F12才出来
  11. 单闭环直流调速系统仿真实验
  12. 【行空板教程】手写输入法
  13. 直通车点击软件测试自学,如何用直通车测出高点击好图
  14. 计算机显示器屏幕什么也不显示,电脑显示器黑屏(显示屏不显示)四种解决方法...
  15. 编程疑难杂症の无法剔除的神秘重复记录
  16. 短信发送中文数据到手机显示乱码
  17. 设备巡检的执行的痛点及解决方案
  18. 计算机映像缺失磁盘如何修复,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
  19. 正则表达式包含某字符串且不包含某些字符串
  20. ResNet 残差网络、残差块

热门文章

  1. Neat Download Manager-ndm下载器:短小精悍的mac下载工具
  2. 苹果Mac网络视频下载工具推荐:Downie 4
  3. PDF与Base64的相互转换以及操作
  4. Vector CANape的使用记录
  5. RedHat 7 更换 yum 源为 CentOS 或网易镜像源
  6. ORACLE P6 21.12 系统虚拟机(VM)分享
  7. w3cschool离线手册
  8. 推荐一款非常好用的文本替换工具“Replace Pioneer”
  9. ActivityMQ入门案例
  10. iOS中的预编译指令的初步探究