13.1 前言: 什么是正规表示法
约略了解了 Linux 的基本命令 (BASH) 并且熟悉了 vim 之后,相信你对於敲击键盘的打字与命令下达比较不陌生了吧? 接下来,底下要开始介绍一个很重要的观念,那就是所谓的『正规表示法 (Regular Expression)』罗!
1、什么是正规表示法
任何一个有经验的系统管理员,都会告诉你:『正规表示法真是挺重要的!』 为什么很重 ...
13.2 基础正规表示法
既然正规表示法是处理字串的一种表示方式,那么对字节排序有影响的语系数据就会对正规表示法的结果有影响! 此外,正规表示法也需要支持工具程序来辅助才行!所以,我们这里就先介绍一个最简单的字串撷取功能的工具程序,那就是 grep 罗! 前一章已经介绍过 grep 的相关选项与参数,本章著重在较进阶的 grep 选项说明罗! ...
13.3 延伸正规表示法
延伸正规表示法
事实上,一般读者只要了解基础型的正规表示法大概就已经相当足够了,不过,某些时刻为了要简化整个命令操作, 了解一下使用范围更广的延伸型正规表示法的表示式会更方便呢!举个简单的例子好了,在上节的例题三的最后一个例子中,我们要去除空白行与行首为 # 的行列,使用的是
[*]grep -v '^$' regular_e ...
13.4 文件的格式化与相关处理
1、格式化列印: printf
在很多时候,我们可能需要将自己的数据给他格式化输出的! 举例来说,考试卷分数的输出,姓名与科目及分数之间,总是可以稍微作个比较漂亮的版面配置吧? 例如我想要输出底下的样式:
[mw_shl_code=applescript,false]Name Chinese English Math Average
DmTsai 80 60 ...
13.5 重点回顾
重点回顾
[*]正规表示法就是处理字串的方法,他是以行为单位来进行字串的处理行为;
[*]正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字串的处理程序;
[*]只要工具程序支持正规表示法,那么该工具程序就可以用来作为正规表示法的字串处理之用;
[*]正规表示法与万用字节是完全不一 ...
14.1 什么是 Shell Script
1、什么是 Shell scripts
什么东西啊?其实, shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。
所以,简单的说, shell script 就像是早期 DOS 年 ...
14.2 简单的 shell script 练习
在第一支 shell script 撰写完毕之后,相信你应该具有基本的撰写功力了。 接下来,在开始更深入的程序概念之前,我们先来玩一些简单的小范例好了。 底下的范例中,达成结果的方式相当的多,建议你先自行撰写看看,写完之后再与鸟哥写的内容比对, 这样才能更加深概念喔!好!不罗唆,我们就一个一个来玩吧!
1、简单范例
...
14.3 善用判断式
在第十一章中,我们提到过 $? 这个变量所代表的意义, 此外,也透过 && 及 || 来作为前一个命令运行回传值对於后一个命令是否要进行的依据。第十一章的讨论中,如果想要判断一个目录是否存在, 当时我们使用的是 ls 这个命令搭配数据流重导向,最后配合 $? 来决定后续的命令进行与否。 但是否有更简单的方式可以来进行『条 ...
14.4 条件判断式
只要讲到『程序』的话,那么条件判断式,亦即是『 if then 』这种判别式肯定一定要学习的! 因为很多时候,我们都必须要依据某些数据来判断程序该如何进行。举例来说,我们在上头的 sh06.sh 范例中不是有练习当使用者输入 Y/N 时,必须要运行不同的信息输出吗?简单的方式可以利用 && 与 || ,但如果我还想要运行一堆命令呢 ...
14.5 回圈 (loop)
除了 if...then...fi 这种条件判断式之外,回圈可能是程序当中最重要的一环了~ 回圈可以不断的运行某个程序段落,直到使用者配置的条件达成为止。 所以,重点是那个『条件的达成』是什么。除了这种依据判断式达成与否的不定回圈之外, 还有另外一种已经固定要跑多少次的回圈形态,可称为固定回圈的形态呢!底下我们就来谈 ...
14.6 shell script 的追踪与 debug
scripts 在运行之前,最怕的就是出现语法错误的问题了!那么我们如何 debug 呢?有没有办法不需要透过直接运行该 scripts 就可以来判断是否有问题呢?呵呵!当然是有的!我们就直接以 bash 的相关参数来进行判断吧!
[mw_shl_code=applescript,false][root@www ~]# sh [-nvx] scripts.sh
选项与参数:
-n :不要运行 scrip ...
14.7 重点回顾
重点回顾
[*]shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的
[*]shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上, ...
15.1 Linux 的账号与群组
管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务器主机的账号啦! 在管理 Linux 主机的账号时,我们必须先来了解一下 Linux 到底是如何辨别每一个使用者的!
1、使用者标识符: UID 与 ...
15.2 账号管理
好啦!既然要管理账号,当然是由新增与移除使用者开始的啰~底下我们就分别来谈一谈如何新增、 移除与更改用户的相关信息吧~
1、新增与移除使用者: useradd, 相关配置文件, passwd, usermod, userdel
要如何在 Linux 的系统新增一个用户啊?呵呵~真是太简单了~我们登陆系统时会输入 (1)账号与 (2)口令, 所以创建一个 ...
15.3 主机的细部权限规划:ACL 的使用
从第六章开始,我们就一直强调 Linux 的权限概念是非常重要的! 但是传统的权限仅有三种身份 (owner, group, others) 搭配三种权限 (r,w,x) 而已,并没有办法单纯的针对某一个使用者或某一个群组来配置特定的权限需求,例如前一小节最后的那个任务! 此时就得要使用 ACL 这个机制啦!这玩意挺有趣的,底下我们就来谈一谈:
...
15.4 使用者身份切换
什么?在 Linux 系统当中还要作身份的变换?这是为啥?可能有底下几个原因啦!
1、使用者身份切换
1.使用一般账号:系统平日操作的好习惯
事实上,为了安全的缘故,一些老人家都会建议你,尽量以一般身份使用者来操作 Linux 的日常作业!等到需要配置系统环境时, 才变换身份成为 root 来进行系统管理,相对比较安全啦!避 ...
15.5 使用者的特殊 shell 与 PAM 模块
另外,在本章之前谈到过 /etc/login.defs 文件中,关于口令长度应该默认是 5 个字符串长度,但是我们上面也谈到,该配置值已经被 PAM 模块所取代了,那么 PAM 是什么?为什么他可以影响我们使用者的登陆呢?这里也要来谈谈的!
1、特殊的 shell, /sbin/nologin
在本章一开头的 passwd 文件结构里面我们就谈过系统账号这玩意 ...
15.6 Linux 主机上的用户信息传递
谈了这么多的账号问题,总是该要谈一谈,那么如何针对系统上面的用户进行查询吧? 想几个状态,如果你在 Linux 上面操作时,刚好有其他的用户也登陆主机,你想要跟他对谈,该如何是好? 你想要知道某个账号的相关信息,该如何查阅?呼呼!底下我们就来聊一聊~
1、查询使用者: w, who, last, lastlog
如何查询一个用户的相 ...
15.7 手动新增使用者
一般来说,我们不很建议大家使用手动的方式来新增使用者,为什么呢? 因为使用者的创建涉及到 GID/UID 等权限的关系,而且,与文件/目录的权限也有关系, 使用 useradd 可以帮我们自动配置好 UID/GID 家目录以及家目录相关的权限配置, 但是,手动来添加的时候,有可能会忘东忘西,结果导致一些困扰的发生。
不过,要了解整 ...
15.8 重点回顾
重点回顾
[*]Linux 操作系统上面,关于账号与群组,其实记录的是 UID/GID 的数字而已;
[*]使用者的账号/群组与 UID/GID 的对应,参考 /etc/passwd 及 /etc/group 两个文件
[*]/etc/passwd 文件结构以冒号隔开,共分为七个字段,分别是『账号名称、口令、UID、GID、全名、家目录、shell』
[*]UID 只有 0 与非为 0 两种,非 ...