RHCE033学习笔记 

第一章Linux 总览
1.1 GNU:自由操作系统计划
FSF:自由软件基金会
GPL:GNU公共通用许可证
Ctrl+Alt+F1Ctrl+Alt+F6六个组合键可以在六个虚拟控制台之间切换。
Ctrl+Alt+F7可以切换到默认的X服务器。
1.2    内核、程序和进程
内核是一个操作系统,为进程提供运行环境;
程序是文件系统内的可执行文件,通常是二进制文件;
进程是程序运行的实例。
Linux中的Shell是一个交互式的进程,指定要运行的其他进程,默认为bash
1.3    查看文件系统
ls 列出目录内容 cat查看文件内容
可以使用绝对路径和相对路径   /”为根目录(root directory)。
1.4    运行命令
命令格式:命令+选项+参数,选项以“-“或“- -”开头,选项也可以有参数。
1.5    管理终端
reset 可将终端恢复为正常状态,tab可补全命令。
Linux终端控制组合键

组合键
符号名称
约定使用
Ctrl+C
SIGINT
非常规中断——终止前台进程
Ctrl+D
EOT
输入完成的正常信号
Ctrl+G
BEL
终端声效
Ctrl+H
BS
后退一格——删除前一个字符
Ctrl+J
LF
换行——与Enter键功能相同
Ctrl+L
FF
换页——使bash清屏
Ctrl+Q
 
解锁终端显示
Ctrl+S
 
锁住终端显示
Ctrl+U
NAK
删除当前的行
Ctrl+Z
SIGSTOP
挂起进程

设备节点/dev/zero是伪设备,读取时会返回无数个二进制零,/dev/null设备节点也是伪设备,会丢弃任何写入其中的信息。
终端设备名称:ttyn(虚拟控制台),ttySn(串口端口设备),pts/n(伪终端),
:0X服务器)。
1.6    寻求帮助的方法
-h--help-
man page 例如:man lsman –k lsman 5 intro
info page 
目录/usr/share/doc
红帽文档指南、www.redhat.com
第二章文件系统基础
2.1 文件系统可以看成一棵倒置的树
pwd显示当前工作目录的绝对路径
特殊目录名

符号
意义
.
当前工作目录,相对引用中可使用
..
父目录
~
用户主目录
-
上个工作目录

默认情况下,cd命令等同于cd ~
默认的bash 提示只显示cwd的最后一个目录名
...都表示相对引用
2.2 标准目录结构
      - /bin   存放引导系统所需的可执行程序和最常用的linux命令
      - /boot 存放系统启动时必要的文件,包括系统内核
      - /dev   包括linux支持的硬件设备对应的连接文件
-/etc    保存系统配置文件,可以控制系统的任何方面
-/home 存放除超级用户外的各个用户的主目录
-/lib     存放各种库文件,包括共享库和函数库
-/root   根用户的主目录
-/sbin   存放相对不常用的命令,多数用于系统管理
-/proc   虚拟文件系统,用于从内存读取进程信息
/ ()     -/opt    默认为空
-/media 默认为空
-/mnt   用来作为光盘、软盘、U盘的挂载点
-/misc   默认为空,供管理员堆放公共杂物
       -/bin
       -/etc
-/usr - -/sbin
       -/lib
       -/tmp
        …
      -/var   存放系统工作的一些记录、假脱机目录和其他变量数据
-/tmp   存放应用程序产生的临时文件
-/srv    默认为空
-/sys    存放一些系统信息
-/lost+found 存放系统崩溃时产生的文件,可用于修复系统
-/selinux 存放与安全相关的文件
-/net    默认为
root 是根用户,/rootroot的主目录,/是根目录。
2.3 文件管理
cp 复制文件 cp [OPTIONS] {SOURCE} {TARGET}
mv 移动或重命名文件 mv [OPTION…] {SOURCE} {TARGET}
rm 删除文件 rm [OPTIONS] {FILE..}
重定向、移动、复制可能“损坏”文件
Shell会在执行其他命令(lscat等)前解读“>”符号,例如,ls > file,假如file不存在,该命令会先创建file文件,再执行ls命令。
2.4 目录管理
ls -R 可以递归的查看目录
cd –r 递归复制目录
rm -r 递归删除目录
mkdir 建立空目录
rmdir 删除空目录
2.5 文件名和文件名匹配
文件名可以是“/”除外的任何字符,但不代表应该这么做,以“.”开头的文件为隐藏文件。不包括目录,文件名最长可达255个字符,包括目录最长可达4096个字符。
文件名匹配通配符

字符
   
*
匹配0个或多个字符(开头的“.”除外)
匹配一个字符(开头的“.”除外)
[…]
匹配在给出的列表或范围内的任何一个字符
[^…]
匹配在给出的列表或范围外的任何一个字符

2.6 检查文件和文本编辑
常用命令:filecatmorelessheadtail
常用文本编辑器:vinanogedit(图形文本编辑器)
文本编辑器和文字处理器的区别,文本编辑器主要用来编辑系统配置文件,不会产生任何二进制码,文字处理器除了处理文本外,还用来编辑字体、格式等
,会设置二进制码。
第三章、用户和组
3.1 用户和/etc/passwd文件
  用户名、uid32位整数)、gid32位整数,主要组)都是唯一的。
  在配置文件/etc/passwd中保存有一个数据库,数据库里存放着用户名和uid的对应关系,用户账户把uid映射到用户名、密码、gid、主目录和登录shell上。
系统上的大多数用户有权限读取这个文件,但没有权限修改。
用户密码保存在/etc/shadow(影子文件),一般用户没有查看权限。
忘记密码,可以让有根用户权限的人给你重新分配密码。
三种类型的用户:普通用户、根用户、系统用户。其中系统用户不代表人,而代表系统的组成部分,例如,处理电子邮件的进程通常以用户名mail来运行。红帽企业版Linux用户ID

用户ID范围
用户类型
0
根用户
1-499
系统用户
500+
普通用户

3.2 组和/etc/group文件
   每个用户都属于一个主要组次要组可有可无。
   配置文件/etc/group把组名与组ID关联在一起。
   文件系统上的每个文件都有一个用户所有者和一个组所有者。新创建文件的默认组,称作用户的主要组,组名和用户相同。
   根用户可以使用usermodgroupmod命令更改组成员身份。
3.3 检查用户信息
检查用户信息的命令

命令
功能
id
显示用户信息和组信息
whoami
获取当前用户名
userswhow
获取正在会话中的用户
finger
输出用户最后登陆系统时间及其它信息

3.4 改变身份
su 命令让用户切换用户ID
su USER 登陆后shell 为非登陆shell
su – USER 登陆后shell为登陆shell,即完全登陆。
su 切换到根用户。
newgrpsg让用户切换主要组,语法:newgrp 组名
第四章文件所有者及权限
4.1常规文件所有者及权限
   文件有一个用户所有者,一个组所有者和一组权限。
   文件有三种权限类型:rwx,三种访问级别:ugo
   修改文件所有者:chmod
   普通用户不能改变文件的用户所有者,却可以改变组所有者。
4.2 改变文件权限
   chmod [ugoa]+/-/=[rwx] filename
4.3 chgrp命令和chown命令改变文件所有者
   chgrp改变文件的组所有者
   chown 改变文件的用户所有者
   文件新建立时,它的组所有者是建立人的主要组,在红帽企业版linux中,这是建立者的私有组。
谁可以修改文件的所有者和权限

操作
可以执行的用户
chmod
根用户和文件的所有者
chgrp
根用户和文件所有者(必须是新组成员)
chown
只有根用户

4.4 目录所有者和权限
常规文件和目录的权限

 
r()
w()
       x(执行)
常规文件
浏览文件
修改文件
将文件作为命令执行
目录
列出目录内容
添加或删除文件
在目录中搜索已知文件

  在红帽企业版中,用户主目录是受“保护”的,默认权限为drwx------
4.5  chmod命令:八进制计数法,控制默认权限:umask
   每种权限以一个值表示,可读是4,写入是2,执行是1,文件和目录做相同处理,使用chmod –R递归命令时容易产生错误,可使用find命令进行更合理的递归。
   在内核级别,linux分别使用默认模式666rw-rw-rw)、777rwxrwxrwx)建立文件和目录,每个进程使用一个“umask”参数来遮盖某些特定的默认权限。
红帽企业版中,标准用户的默认umask值为022
   umask命令可查看和修改bash shellumask值。
第五章 Linux文件系统
5.1 文件详述
   文件包括:常规文件、目录、符号链接、设备节点及其它。
   所有文件有如下属性:用户所有者、组所有者、权限和时间信息。这种信息保存在名为inodei-节点)的结构中。
   文件名保存在名为dentry(目录项)的数据结构中。
   Linux内核中,文件一般通过i-节点编号加以识别。
   i-节点信息可以通过ls-l命令和stat命令查询。
   每个文件都有三层结构:dentryinodedatadentry含有文件名并关联inodeinode含有文件元数据并指向数据区data
   传统UnixLinux)系统不记录文件创建时间。
   文件长度和大小
   i-节点用两种度量记录文件大小:文件长度(文件数据的实际字节数)和大小(所占用的磁盘空间量)。由于文件在磁盘的上的底层信息不同,两种信息度量有所不同。一般来说,文件以字节块(通常是4千字节)为单位增加。而文件数据以单个字节为单位增加。ls –l命令在第五列显示文件长度(以B为单位),ls – s 可以显示文件的大小(以KB为单位),stat命令把文件的长度叫大小(size)。
   ls – F 命令列出的文件中,目录以“/”结尾,符号链接以“@”结尾,附有可执行权限的各种常规文件以“*”结尾。
  ls – l命令输出的各列意义
   其中第一行的total表示该目录下所有文件使用的空间总块数(不包括子目录)
第一列:文件类型和文件的权限
第二列:文件的链接总数,目录总是大于等于2
第三列:文件的所有者
第四列:文件组所有者
第五列:以字节计算的文件长度,目录长度以块数为单位增加
第六列:文件的最后一次修改时间
5.2 硬链接(hard links)和软链接(soft links
ln [option] TARGET [LINK]
对文件TARGET 创建链接 LINK
    硬链接举例:ln file hard_link
硬链接共享i-节点和数据,删除文件,链接仍然可使用。
rm命令在底层不直接删除文件,而是“unlink”(脱链)文件。
软链接举例:ln file soft_link
软链接使用各字的dentryi-节点,但data为目标文件的文件名,它们的i-节点不同,删除目标文件后,该链接变成空链接。
软链接和硬链接的比较

硬链接
软链接
目录之间不能用硬链接
软链接可以关联的目录
硬链接没有原始文件和复制文件的概念,硬链接一旦创建,它链接的两端文件得到同等待遇
软链接有引用和被引用的概念,删除被引用的文件就会导致空链接的产生
硬链接必须关联同一个文件系统下的文件
软链接也可关联不同文件系统中的文件
Chroot的目录间可共享硬链接
软链接不能引用chroot目录外的文件

5.3目录与设备节点
   目录就是包含一些目录项,目录项建立文件名与i-节点的映射。每个目录都包含至少两个引用,”.”指向自身和父目录的目录项引用。另外的引用由目录下子目录”..”构成,因此目录的链接数大于等于2
   字符设备:按字节流依次读写的设备,如:鼠标、键盘、声卡和打印机。
   块设备:一次读写一大块设备,允许随机访问,如:硬盘、软驱、光驱。
   字符设备节点(c),块设备节点(b
   除了终端用户和控制台用户外,设备节点的权限并不允许用户直接访问。
   控制台就是虚拟终端,也叫虚拟控制台,它充当了“哑终端”。
5.4 磁盘、文件系统与挂载
Linux允许通过/dev目录下的设备节点对磁盘进行访问。
通常,磁盘被分区格式化为文件系统,挂载到目录下使用。
文件系统用mkfs命令创建。
红帽企业版linux默认文件系统是ext3
mount将磁盘分区挂载到已存在的目录,该目录叫做挂载点。
umount将已挂载目录脱卸。
df命令给出磁盘使用信息和已挂载的设备。
1、磁盘设备
Linux磁盘设备节点

设备节点
磁盘
/dev/fd0
软盘
/dev/hda
IDE1通道上的主盘
/dev/hdb
IDE1通道上的从盘
/dev/hdc
IDE2通道上的主盘
/dev/hdd
IDE2通道上的从盘
/dev/sda
SCSI的第一个硬盘
/dev/sdb
SCSI的第二个硬盘
/dev/cdrom
CD/ROM的符号链接

注:/dev/hda1IDE1通道上的主盘的第一个分区。其它的依次类推。
2、对磁盘的低级访问
对磁盘的低级访问就是直接将数据仅依字节流的形式存放于磁盘,或从磁盘读取,人们希望给文件给个文件名,然后将信息保存在文件里;将文件放进目录里管理,并控制对其访问的权限。所有这些机构化的信息管理由文件系统完成。
3、文件系统
在磁盘上存储数据前,首先要创建文件系统,在windows中叫做格式化,
linuxmkfs命令族用于创建文件系统。它们位于供管理员用的/sbin目录下。
4、挂载文件系统
在系统启动的时候,一个文件系统被映射为根分区,它的根目录就是系统的根(/)。
如果一个系统有多块磁盘,或者一个磁盘有多个分区、那么为了访问别的磁盘上的分区,就将那个文件系统的根目录映射到文件系统中一个已经存在的目录下;这个过程叫做文件系统的挂载。
对于ls命令来说,文件系统的不同都被隐藏起来了,所有的文件系统都被组织到一个目录树结构下。
mount命令可用来查看挂载点,一些叫做none的设备是虚拟设备,它是在内核中实现的,并不是任何物理设备。
lost+found目录是在创建文件系统时自动创建的,在ext2ext3中文件系统的根下一直存在。在文件系统修复时会用到。
将一个磁盘(已存在文件系统)上的数据一字节一字节的复制到另一个没有挂载的设备上的技巧叫做磁盘镜像,这是对磁盘的低级访问。
5.5 使用locatefind命令查找文件
      locate命令利用数据库根据文件名迅速定位系统上的文件。速度快,但副作用是不能查找最近一天内新增的文件,或者报告因最近删除而失效的文件。
      find命令实时递归查找系统上的文件,几乎所有的文件属性都可作为find命令的搜索条件,但不能直接根据文件内容搜索,可结合grep命令实现。
      Locate命支持元字符:*、?、[],如 locate *.fish.png
      find <起始目录> <搜索条件> <动作>
5.6 文件压缩:gzipbzip2
    最常用的压缩命令是gzip。解压为gunzip
    bzip2命令压缩效果更好,解压用bunzip2
5.7 文件归档:tar命令
    将文件归档可以将整个目录树保存在一个文件中。
    tar命令可以用来创建、列出和释放归档文件。
    归档文件通常也会一并压缩。如:tar cvf net.tar /etc/sysconfig/networking
    file-roller应用程序提供图形化的操作界面。
第六章 Bash Shell
6.1 Bash引言
      红帽企业版linux默认的shellbash shell
      bash shell的两个不同功能:交互式shellshell脚本。
      bash启动时执行 ~/.bashrc文件中的命令,允许用户自定义其shell
      bash shell保存历史命令,可以方便的调用。
      交互式shell不断地重放侦听命令行的循环、解析被请求的命令、执行任何被请求的操作,并且显示结果。
bash历史记录替换

语法
替换
!!
前一个命令
!n
命令号n
!-n
倒数第n个命令
!cmd
最后用来启动cmd的命令

history 命令的技巧:
Esc+.(先按Esc后按点)和Alt+.
恢复之前被键入命令行的最后一个标记。
Ctrl+R
匹配的命令行可以随着文本的键入而立刻被看到。
fc 命令
该命令允许用户通过打开用的vi把之前键入的命令作为文本进行“整理”。退出后立即执行。
6.2 命令列表和脚本
多个命令间可以用;隔开
退出命令时,每个命令向父命令返回一个整数,称作返回值。
Shell变量$?表示先前执行命令的返回值,echo $? 显示最新执行程序的返回值。
&&把两个命令连接在一起,只有当第一个命令成功时(即返回值为0)才运行第二个命令,用户||把两个命令连接在一起,只有当第一个命令“失败”
时(返回值非零),才执行第二个命令。
Linux在执行命令时,通常从一组固定的目录中寻找这个命令,这些目录被看做是你的PATH
6.3 bash变量
Shell变量用name=value语法来赋值。
 $来解析变量,如 echo $ A
 在内存层,有一个由子进程继承的环境变量集合。
 export命令将shell变量转化为环境变量。
 setenv命令分别用于列出shell变量和环境变量。
 uset A 复位变量,即删除变量。
 变量有字母数字字符和下划线组成,不能以数字开头,区分大小写。通常用大写。
如果你想把变量设置给含有空格的值,必须把这个值括在引号里。
解析变量时,如果需要的话,可以用大括号{}标出变量名。
bash预赋值的变量

变量
含义
BASH_VERSION
但前bash 的版本
HOSTNAME
当前机器的DNS主机名
OLDPWD
上次工作目录
PWD
当前工作目录
RADOM
介于032767之间的任意整数
SECONDS
shell启动以来的秒数

以上变量被bash shell初始化,但是不能被重新赋值。
bash的只读变量

变量
含义
最新执行的命令的退出状态,即查看返回值
-
当前启用中的shell选项标记
$
当前shell的进程ID
_
前一个命令的最后标记
!
最新后台命令的进程ID
PPID
Shell父进程的ID
SHELLOPTS
被冒号隔开的当前启用中的shell选项列表,和set – o结果一样
UID
当前用户的UID

常用的环境变量

变量
功能
TERM
指定了用户终端的底层配置,该变量在使用串行线控制台时更由用
PATH
指定了可执行文件的搜索目录
DISPLAY
指定了图像环境中客户程序应该使用的X服务器
LANG
指定了国家化程序的首选语言
EDITOR
指定了默认的编辑器
PRINTER
指定了默认的打印机

PATH 环境变量附加目录:PATH=$PATH:/usr/sbin
6.4 命令行替换
bash shell在解释命令前替换某些命令行元字符。
bash中的命令行替换

替换
语法
含义
历史(history
前一个命令行
大括号
{}
指定的文本
代字号
~~username
用户的主目录
变量
$${…}
变量Shell和环境变量
算术
$((…))
整数算术运算(+-*/
命令
`…`$(…)
运行在子shell中命令的输出
路径名
*、?、[…][^…]
文件系统中匹配的文件

引用和转义字符
bash shell的引用和转义

语法
作用
\
避免一个字符被shell解释
避免双引号内除了$、!和`…`(反引号)字符以外的其他字符被shell解释
避免引号内的字符被shell解释

如果要把一个特殊字符加到命令中,你应该用引号(或反斜杠转义)来保护这个字符,因为shell替换在命令运行之前发生。
6.5 自定义shell
bash shell 本身即实现某些与shell行为密切相关的命令,被称为内置命令。
Shell别名可创建扩展为任意文本的命令。
alias建立和检查别名。unalias删除别名
PS1变量自定义bash shell提示符。
Shell 标记可以用set – f命令设定,用set + f 命令删除。
Shell选项可用shopt命令检查和复位。
常见的shell内置命令:cdpwdecho
alias使用下列语法:alias NAME=VALUE,等号两边没有空格。
别名替换:如果别名替换为一个与别名有着相同名称的命令,则shell仅仅执行替换,然后继续前进。否则,展开别名,例见P237 ll命令。
Bash提示符中常用的转义序列

序列
替换
\a
终端响铃
\d
以“星期月份日期”格式显示日期
\h
直到第一个“.”的主机名
\T
12小时格式HH:MM:SS显示当前时间
\u
当前用户的用户名
\W
当前工作目录的basename(即最后一个目录)
\!
命令的历史记录号码
\$
如果用户的ID0,则提示符为#,否则提示符为$
\n
原样输出后面的字符
\nnn
与八进制数字nnn对应的字符

set 内置命令常用的shell标记

标记
作用
-f
使路径名替换无效
-n
读取命令、但不执行(用来对脚本进行语法检查)
-o optionname
设置指定的选项,一些常用选项如下:
emacs 使用emacs风格的命令行快捷键
ignoreeof   EOFctrl+D)被读取时,不退出shell
vi   使用vi风格的命令行快捷键
-v
在命令被读取时,打印命令(调试脚本时有用)
-x
在替换被应用之后打印命令(调试脚本和检查shell替换时有用)
-C
不允许shell在重定向中损坏文件

Bash shell 选项

选项
作用
cdspell
使用cd内置命令时,试图改正目录名的拼写错误
expand_alias
启动shell别名
extglob
启动替换的模式匹配语法
nocaseglob
应用文件名替换时不区分大小写

6.6 获得shell脚本和shell初始化
    Shell脚本用source . 命令获得
    Shell脚本应在执行获得脚本的同一个shell中执行
    Shell有登录shell、非登录shell、交互式shell、非交互式shell之分
    bash shell 允许用户把多个命令集中到一个文件中,然后执行这些命令,仿佛它们在提示符下直接键入的一样,这被称为获得文件。
    当获得shell脚本时,脚本的内容在当前shell中执行。
 
不同类型的bash shell

上下文
登录shell
交互式shell
从虚拟控制台登录shell
通过网络shell到一台远程机器上时登录shell
X初始化shell
X终端shell
手动运行bash启动的子shell
用在命令替换中的子shell
被圆括号分组的命令使用的子shell
执行脚本时使用的子shell

 
Bash的启动配置文件
          
 
 
Bash shell的启动配置文件功能

文件
Shell类型
预期功能
/etc/profile
登录shell
通用的有效环境变量
/etc/profile.d/*.sh
登录shell
软件包特有的环境变量
~/bash_profile
登录shell
用户特有的环境变量
~/.bashrc
所有交互式shell
用户特有的别名、shell功能和shell选项
/etc/bashrc
所有交互式shell
通用别名、shell功能和shell选项

第七章标准输入/输出和管道
7.1 标准输入和输出
基于终端的程序往往从一个源读取信息,向一个目的地写入信息。
三种类型的程序:
图形程序(Firfox网络浏览器等)、屏幕程序(vinano文本编辑器等)、终端程序(即命令,如:lscd等)。
Linux进程通过给每个当前被它们打开的文件赋整数值来追踪这些文件,这个整数值被称作文件描述符。
用命令 ls –l /proc/PID/fd,查看文件描述符。P252
标准输入、标准输出和标准错误的文件描述符

描述符
缩写
标准输入
0
stdin
标准输出
1
stdout
标准错误
2
stderr

7.2 标准错误
可以用2>把标准错误流重定向到文件中。可以用2>>追加标准错误。
可以用2>&1>&(新派做法)把标准错误流与标准输出流结合在一起。
7.3 管道
UNIX所谓的管道可以吧一个进程的标准输出流和另一个进程的标准输入流连接起来。
Unix中的许多命令被设计为过滤器,从标准输入中读取输入,将输出传送到标准输出。
用“|”在两个命令之间创建管道。连接在管道中的所有进程被称作进程组。
作为过滤器的命令:grepheadtailsortsedawk
UNIX哲学:联合使用简单的工具更有效。
第八章、字符处理工具
8.1 文本编码及字数统计
当保存文本文件时,计算机会将字符转换成数字形式表示。这个过程就是文本的编码。
为了适应不同的语言要求,开发了不同的编码技术,这些技术以不同的字符集来代表。
wc命令统计出文件中字符、文字和行的数量。
ASC II编码是目前最古老的但最常使用的编码技术之一。
UTF-8 标准几乎是一种可接受的标准,因此在最新的红帽企业版linux中成为默认的编码形式。
cat命令可以显示非打印字符。
8.2 搜索文本:grep
grep 命令可以用来打印那些符合指定字符串或模式的行。
grep 代表general regular expression parser(通用正则表达式分析程序)
  fgrep
   grep   [-i] [-n] [-v] [-r] [-w] pattern [filename….]
   egrep
其中 fgrep 可快速搜索简单模式,常用于搜索常用单词。
     grep 使用常用正则表达式搜索。
     egrep 使用更强的的扩展正则表达式搜索模板。
8.3 正则表达式介绍
正则表达式是一个指定文本模式的标准UNIX语法。
许多命令都可以接受正则表达式,包括grepsedvi和许多脚本语言。
正则表达式应放在单引号内,避免在用bash解释特殊字符时造成和grep之间的混淆。
字符类采用语言中具体的规则来区分字母的大小写。
正则表达式字符类

表达式
字符类
ASCII中的对应域
[:alnum:]
字母数字混排
A-Za-z0-9
[:alpha:]
字母字符
A-Za-z
[:blank:]
空格符或者制表符
 
[:digit:]
数字
0-9
[:lower:]
小写字母
a-z
[:punct:]
可打印字符,不包括空格和字母数字混排字符
 
[:space:]
空白字符
 
[:upper:]
大写字母
A-Z

Linux正则表达式语法总结

字符
功能
正则表达式语法
解释
.
通配符
基本
代表一个或者任意字符
[abc],[a-z]
包含域
基本
代表域内任意一个字符
[^abc],[^a-z]
排除范围
基本
代表不包含在域内的任意一个字符
修饰符
扩展
代表01个前面的项
*
修饰符
基本
代表0或多个前面的项
+
修饰符
扩展
代表1个或者多个前面的项
{m,n}
修饰符
扩展
代表前面的项出现了mn次之间
{n}
修饰符
扩展
代表前面的项具体的出现次数为n
^
基本
标出一行的开始
$
基本
标出一行的结束
\<
基本
标出一个单词的开始
\>
基本
标出一个单词的开始
(…)
分组
基本
允许修饰符修饰一组字符
(…|…)
分组
扩展
允许指定可选的模式
\
转义
扩展(基本)
取消(或启动)后续字符的特殊含义

正则表达式与文件名匹配对比表

正则表达式
文件名匹配
在执行搜索或者搜索及替换功能时,比如grepvised以及许多脚本语言,如perlpython
bash shell执行,是为了匹配文件名,并减少在一些应用程序或者脚本语言中搜索的范围
使用表达式“.*”代表任意项
使用表达式“*”代表任意项
使用表达式“.”来表达单个字符
使用表达式“?”来表达任何单个字符

8.4 排序命令:sort命令和uinq命令
sort 命令按字母表顺序排列数据
sort –n 按数字顺序排列数据
sort –u 排序并删除重复数据
sort –k –t按指定字段对数据进行排序
uniq 命令是用来识别、统计或者删除排序过数据中的重复记录。一般和sort联合使用,且在sort命令后面。
8.5 提取和组合文本:cut命令和paste命令(P330)
cut命令可根据字节、字符或者指定的列从文本文件中提取文本。
paste 命令将两个文本文件进行逐行合并。
8.6 追踪差异:diff命令(P340)
diff 命令可以比较两个文件之间的差异。
diff命令的输出格式:
标准 diff  上下文 diff –c 一体diff –u 并排diff –y
diff 命令通常跟着两个参数,一个是from-file,另一个是to-file(换句话说就是一个旧文件和一个新文件)。
8.7 文本转换tr命令(P352)
tr命令的功能是将标准输入读取的数据进行转换。
tr 命令的最基本的形式是以字节换字节的方式执行。
8.8 拼写检查:aspell (P362)
aspell –c 命令可以对文件进行交互式拼写检查。
aspell --list 命令可对标准输入进行非交互式拼写检查。
aspell dump 命令可用来浏览系统词典或者用户的个人词典。
8.9 格式化文本(fmt)和文件分割(split(P366)
fmt命令可用不同的宽度重新格式化文件
使用-p命令行选项,fmt命令将仅对以指定前缀开始的行重新格式化,并保留其前缀。
split 命令可以行数或者字节数位单位,将一个文件分割成多个文件。
第九章进程管理
 9.1 进程
进程是正在运行的可执行程序的实例,通过进程ID(pid)识别。
Linux使用虚拟内存,所以每个进程都拥有自己特定的内存地址空间。
进程有一个uid和一组gid
进程有其文件系统环境,包括cwdumask、根目录和一组打开的文件。
进程有调度环境,包括优先级值。
进程有一组环境变量。
ps命令可用来查看所有正在运行的进程。
top命令可用来监控所有正在运行的进程。
9.2 进程状态P390
    进程总是处于5种状态之一:可运行(R)、自愿睡眠(S)、强制睡眠(D)、挂起(T)、僵尸(Z)
    linux系统中,第一个进程/sbin/init由内核在启动时运行。其他所有进程都是父进程自我复制和派生的结果。
    一个进程由另一个进程执行的过程叫做execexecuting的简称)。
    通常,新命令由进程(通常是shell)运行,首先派生,继而执行。这种机制被称为派生和执行机制。
    当进程退出、释放大多数资源和它的父进程收集它的返回值、释放剩余资源这两段时间之间,子进程处于一个特殊状态,被称作僵尸进程。每个进程都会经历一个短暂的僵尸状态,但却不占用内存空间、CPU时间。
9.3 进程调度:优先级(nice)和更改优先级(renice
    Linux内核的基本任务是调度进程。
    每个进程都有一影响其调度的优先级(niceness)值。
    nicerenice命令可以改变进程调度的优先顺序。
9.4 发送信号
    信号是进程间通信的底层形式,由多种来源产生,包括内核、终端和其他进程。
    信号由信号值(或信号号码)区分,信号值具有约定的符号名称和用途。信号值的名称可以用kill -l命令列出。
    kill 命令向其他进程发送信号。
    接收到信号时,进程可以忽视它或用内核指定的默认方式作出反应,也可以调用一个自定义信号处理程序。
    根据约定,信号值15SIGTERM)用来请求终止进程。
    信号值9SIGKILL)可以终止进程,而且该信号不能被忽略。
 9.5 作业控制
    bash shell允许命令作为“作业”在后台运行。
    bash shell 允许前台运行一个作业,后台运行多个作业。
    jobs命令会列出所有的后台作业。
    Ctrl+Z组合键会挂起当前的前台作业,并将其置于后台。
    bg命令可以恢复置于后台作业的运行。
    fg命令可以将后台作业置于前台。
    通过给命令行附加一个“&”字符,任何指定的命令也可以在后台运行。
9.6 调度延迟的名:at
    at命令可以使命令稍后执行。
    batch 命令可以让命令在机器负载较低的情况下运行。
    可以直接输入命令,或者以脚本形式提交命令。
    作业中的标准输出用邮件发送给用户。
    atp命令和atrm命令用来查看和删除当前的计划任务。
    作为守护进程运行的程序通常以字母d结尾。
    守护进程的一个定义特征是,它结束与启动它的终端之间的联系。
 9.7 调度周期任务:cron
    cron 工具用来调度经常重复的任务。
    crontab 命令是编辑crontab文件的一个前端程序。
    contab 文件使用5个字段来规定计时信息。
    cron 作业中的标准输出会作为邮件寄给用户。
第十章 网络应用程序
10.1 TCP/IP互联网简介
      大多数linux联网服务器都是按照客户端-服务器模型来设计的。
      网络服务应用程序通常都会设计成“一直运行”,只有根用户才能管理服务进程。
      网络应用程序客户端通常在使用时才会运行,而且任何用户都可以运行。
      大多数的linux网络服务器和客户端之间使用TCP/IP协议进行通信。
      网络服务器通常使用指定的,众所周知的端口,可以在文件/etc/service中列出。这些端口号小于1024,属于特权端口。
      hostname显示当前机器的ip地址,netstat – tuna命令检查所有开发端口。
10.2 linux打印
      红帽企业版linux使用CUPS打印系统来管理打印机。
      CUPS打印系统围绕着打印机这一概念设计,将假脱机目录、过滤器和打印设备结合在一起。
      system-config-printergnome-dfault-printerlpstat命令能用来浏览可用的打印队列。
      lprlpqlprm分别用来提交打印任务、询问尚未完成的打印任务和取消等待中的打印任务,它们将检查PRINTER环境变量,以获得默认的打印队列。
      lpcancel命令类似于lprlprm命令。
      许多应用程序的打印靠管道传递给lpr命令完成。
10.3 管理打印文件
      Linux系统的主要打印格式是PostScript
      gsevince命令能预览PostScript文件。
      enscript命令将文本文件转换成修饰过的PostScript
      ps2pdfpdf2ps命令将文件转换成PDF文件,或者进行相反得操作。
      mpage命令能重排PostScript文件里的每个页面。
10.4 电子邮件概述
      电子邮件管理涉及MUA(邮件用户代理程序)和MTA(邮件传输代理程序)。
      POPIMAP来接收电子邮件,用SMTP来发送电子邮件。
      经由本地发送但尚未阅读的电子邮件暂存在/var/spool/mail/$USER文件中。最简单的MUA之一是mail命令。
      Evolution图形化电子邮件客户端程序。
10.5 网络诊断程序
      /sbin/ifconfig能显示本地IP配置。
      /sbin/traceroute命令能诊断出路由问题。
      ping命令可确定主机间的底层网络连接性。
      host命令能做出直接的DNS查询。
10.6 基于终端的网络和FTP客户端程序
      Elinks终端HTTP客户端程序可在非图形环境中浏览网页,调用命令是links
      curl应用程序是一个非交互的多协议客户端程序(包括HTTPHTTPSFTP),能以批模式来传送文件。
      Wget应用程序是一个非交互的多协议客户端程序(包括HTTPHTTPSFTP),能递归传送网页,并能在所有网页引用的页面中进行递归搜索。
10.7 远程shell命令
      远程shell应用程序允许用户在远程机器上执行任意命令,而且能让标准输出返回本地。当然,它也可以启动交互式shell
      安全shell应用程序提供了一个远程shell,这样所有的信息都加密了,而且用户能用传统的密码验证或使用公钥验证系统。
      为了使用公钥验证系统,必须用ssh-keygen命令生成一个公有-私有密钥对。
      因为安全shell服务器有自己的公有-私钥对,所有服务器和客户端能相互进行验证。