1. 管道和重定向

(i) 要让第二条命令只有在第一条命令成功完成之后才执行,可以用一个 && 符号把两条命令隔开。例如:

$ ls /usr/local/dir-name  2> /dev/null &&  cd /usr/local/dir-name

该命令表示先 ls /usr/local/ 目录下的 dir-name 文件夹,如果存在这个文件夹,就执行 cd /usr/local/dir-name 命令进入这个文件夹;如果不存在这个目录,则不执行 cd 命令。 ' 2 > /dev/null ' 命令表示将错误信息重定向到 /dev/null ,即不显示错误信息。

2. 变量和引用

  对于用单引号和双引号括起来的字符串而言,shell以相似的方式处理它们,例外指出在于双引号括起来的变量可以进行替换(用*和?这样的文件名匹配元字符做扩展)和变量扩展。左引号也叫左撇号,对它的处理和双引号类似,但是它们还有其他作用,即能够把字符串的内容按一条shell 命令来执行,并且用该命令的输出来替换这个字符串。例如:

root@javis:~$ echo "$APACHE_HOME"
/usr/local/apache2
root@javis:~$ echo '$APACHE_HOME'
$APACHE_HOME

#将 $APACHE_HOME 当做命令来处理,因此出错
root@javis:~$ echo `$APACHE_HOME`
bash: /usr/local/apache2: Is a directory

3.常见的过滤命令

(i) cut : 把行分成域

  cut 命令从它的输入行中选出若干部分,再打印出来。该命令最常见的用法是提取被限定的若干域。默认的限定符是<Tab>,但是可以用 -d 选项改变这个限定符。 -f 选项指定输出里包含哪些域。

  参考下面介绍的 uniq 命令一节的内容,了解 cut 用法的例子。

(ii) sort : 将行排序

  sort 命令对输入行进行排序。----到底按照每行的哪些部分(即“关键字”)进行排序,以及进行排序的顺序,都可以做精细的调整。下表给出一些比较常见的选项:

选项 含义
-b 忽略开头的空白
-f 排序不区分大小写
-k 指定构成排序关键字的列
-n 按整数值比较域
-r 颠倒排序的顺序[即逆序排序]
-t 设定域分隔符(默认的分隔符是空白)
-u 只输出唯一记录[重复的记录只输出一次]

  下面的命令展示出了数值排序和字典排序的不同之处,默认按字典排序。这两条命令都用了 -t: 和 -k3,3 两个选项,对 /etc/group 文件的内容按照由冒号分隔的第三个域(即组ID)进行排序。第一条命令按照数值排序,而第二条命令按照字母排序:

root@javis:~$ sort -t: -k3,3 -n /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:.............

root@javis:~$ sort -t: -k3,3 /etc/group
root:x:0:
bin:x:1:
wheel:x:10:
users:x:100:
boss:x:1000:boss
mysql:x:1001:.................

(iii) uniq: 重复行只打印一次

  uniq 命令在思想上和 sort -u 类似,但它有一些 sort 不能模拟的选项: -c 累计每行出现的次数, -d 只显示重复行,而 -u 只显示不重复的行。 uniq 命令的输入必须先排好序,因此通常把它放在 sort 命令之后运行。

  例如,下面的命令显示出:有 3 个用户把 /bin/bash 作为自己的登录 shell,1 个用户把 /bin/sync 作为登录的 shell ,等等:

root@javis:~$ cut -d: -f7 /etc/passwd | sort | uniq -c3 /bin/bash1 /bin/sync1 /sbin/halt39 /sbin/nologin1 /sbin/shutdown

(iv) wc: 统计行数、字数、字符数

  统计一个文件里的行数、字数、字符数是另一项常用的操作,wc(表示 word count , 即字数统计)命令时完成这项操作的一条方面途径。如果不带任何参数运行wc ,它会显示全部 3 种统计结果:

root@javis:~$ wc /etc/passwd45   91 2352 /etc/passwd

而参数 -l 、-w 、 -c 分别使 wc 输出文件内容的 行数 、字数 、字符数:

root@javis:~$ wc /etc/passwd -l
45 /etc/passwd
root@javis:~$ wc /etc/passwd -w
91 /etc/passwd
root@javis:~$ wc /etc/passwd -c
2352 /etc/passwd

(v) tee:把输入复制到两个地方

  命令的管道一般都是线性的,但是从中间插入管道里的数据流,然后把一份副本发送到一个文件里,或者送到终端窗口上,也往往会有帮助。用 tee 命令就能做到这一点,该命令把自己的标准输入既发送到标准输出,又发送到在命令行上指定的一个文件里。可以把它想象成水管上接的一个三通。

例如,下面的命令将 date 的输出值发送到标准输出,并重定向输出到 date.txt 文件:

root@javis:~$ date | tee ./date.txt
2016年 07月 19日 星期二 11:37:58 CST

下面的命令本来应当在标准时输出上有显示,但重定向到 wc 后进行了行数统计,于是在标准输出上没有显示:

root@javis:~$ date | tee date.txt | wc -l
1

转载于:https://www.cnblogs.com/dongling/p/5683902.html

UNIX/Linux系统管理技术手册(1)----脚本和shell相关推荐

  1. 致敬Evi,UNIX/Linux 系统管理技术手册第5版

    每个领域都有一位开疆拓土的"勇士".对于系统管理,这个人就是 Evi Nemeth. 如今你看到的已经是本书的第 5 版了,在过去近 30 年间,Evi 一直是本书的作者之一.尽管 ...

  2. UNIX/Linux 系统管理技术手册阅读(四)

    2016.8.14 21:40-22:10 1.3 FRICTION BETWEEN UNIX AND LINUX 1.3 UNIX和Linux之间的摩擦   Because they are sim ...

  3. UNIX/Linux 系统管理技术手册阅读(二)

    2016.8.10 20:00-21:20 1.1.3 Performing backups 1.1.3 执行备份 Performing backups is perhaps the most imp ...

  4. UNIX/Linux系统管理技术手册(3)----bash 数组和算术运算

    复杂的数据结构和计算不是 bash 的特长.但它的确至少提供了数组和算术运算. 1.算术运算 所有的 bash 变量的值都是字符串,所以 bash 在赋值的时候并不区分数字 1 和 字符串 " ...

  5. Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载

    Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/07/05/1 ...

  6. 开发日记-20190723 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 13

    /etc/passwd文件是系统能够识别的用户的一份清单.在用户登录期间,系统查询这个文件,确定用户的UID并验证用户的口令.这个文件中的每一行都代表一个用户,它包含7个由冒号分割的字段. 登录名. ...

  7. 开发日记-20190704 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 10

    Preface 额-Perl脚本,为什么题目中还包括特定语言的指定命题啊= =,好吧,玩玩Perl吧 Content 进程是Linux用来表示正在运行的程序的一种抽象概念.程序的内存使用,处理器时间和 ...

  8. 开发日记-20190701 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 7

    Preface 今天遇到一个需求,就是在TextView中部分显示其他字体(例如加粗),或者字体颜色(例如红色),没有办法,求助全能的百度吧,感觉像我这种睿智,百度就能解决我绝大多数问题. 实现方式其 ...

  9. 开发日记-20190627 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 4

    Preface 开始玩第二章的相关内容,说起来第一章的习题真的花了不少时间呢= = 还有,我真的不是擅长玩游戏的那种类型,像我们这种凡人,只能通过不懈的努力来得到自己想要的东西.如果那些天才都在以我们 ...

最新文章

  1. exa:一个 ls 命令的现代替代品
  2. 基于SSH实现在线课程学习系统
  3. <X86汇编语言:实模式到保护模式>四十四 协同式任务切换
  4. String 与StringBuilder
  5. 如何在MacOS上创建第一个iOS Flutter应用
  6. NAB 2019见闻:CAE视频编码与QoE
  7. java配置irport,一个production模式下的Ror环境搭建-airport -JavaEye技术社区
  8. 用面向对象的方法写敲门砖
  9. 通用高性能 Windows Socket 组件 HP-Socket v2.2.1(增加 PULL 模型支持)
  10. CSS3 圆角 border-radius属性
  11. 如何迎接新的 .NET 时代
  12. MySQL结果集 数据查询(重点)
  13. linux设备驱动程序注册过程详解
  14. xp系统如可用计算机截图,WinXP系统电脑怎么截图 常见截图方法介绍
  15. 亚马逊AWSome DAY
  16. 昇腾AI室外移动机器人原理与应用(二 初识室外移动机器人)
  17. [渝粤教育] 江西财经大学 中国会计准则(全英文) 参考 资料
  18. 【NAT网络地址转换(私网公网地址、静态NAT、动态NAT、NAPT、Easy IP、NAT Server)】-20211215、20211216
  19. python源码编译为库_【Python笔记】如何源码编译依赖LAPACK和ATLAS库的NumPy包
  20. Python爬虫 - 统计自己读过小说的字数

热门文章

  1. python pipline_python中sklearn的pipeline模块实例详解
  2. java spark dataset_Spark 2.0介绍:Dataset介绍和使用
  3. 路由器有一个android设备连接不上,Android http连接 – 多个设备无法连接同一台服务器...
  4. 在JSP页面中,对同名的CHECKBOX的处理
  5. SpringClound介绍
  6. C案例:创建顺序表并进行增删改查操作
  7. Java Web学习笔记11:JSTL与EL
  8. php 获取图片的宽高,JS怎么获取图片当前宽高
  9. subsonic 3.0 mysql_SubSonic 3.0新特性
  10. 2017.9.20 cheat 失败总结