RHCE学习笔记

 RHCE033学习笔记 

第一章 Linux 总览
1.1 GNU: 自由操作系统计划
FSF :自由软件基金会
GPL:GNU 公共通用许可证
Ctrl+Alt+F1 Ctrl+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 (伪终端),
:0 X 服务器)。
1.6    寻求帮助的方法
-h --help -
man page  例如: man ls man –k ls man 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 是根用户, /root root 的主目录, / 是根目录。
2.3 文件管理
cp 复制文件  cp [OPTIONS] {SOURCE} {TARGET}
mv 移动或重命名文件 mv [OPTION…] {SOURCE} {TARGET}
rm 删除文件 rm [OPTIONS] {FILE..}
重定向、移动、复制可能“损坏”文件
Shell 会在执行其他命令( ls cat 等)前解读“ > ”符号,例如, ls > file ,假如 file 不存在,该命令会先创建 file 文件,再执行 ls 命令。
2.4 目录管理
ls -R 可以递归的查看目录
cd –r 递归复制目录
rm -r 递归删除目录
mkdir 建立空目录
rmdir 删除空目录
2.5 文件名和文件名匹配
文件名可以是“ / ”除外的任何字符,但不代表应该这么做,以“ . ”开头的文件为隐藏文件。不包括目录,文件名最长可达 255 个字符,包括目录最长可达 4096 个字符。
文件名匹配通配符

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

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

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

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

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

3.4 改变身份
su 命令让用户切换用户 ID
su USER 登陆后 shell 为非登陆 shell
su – USER 登陆后 shell 为登陆 shell ,即完全登陆。
su 切换到根用户。
newgrp sg 让用户切换主要组 ,语法: newgrp 组名
第四章 文件所有者及权限
4.1 常规文件所有者及权限
   文件有一个用户所有者,一个组所有者和一组权限。
   文件有三种权限类型: r w x ,三种访问级别: u g o
   修改文件所有者: 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 分别使用默认模式 666 rw-rw-rw )、 777 rwxrwxrwx )建立文件和目录,每个进程使用一个“ umask ”参数来遮盖某些特定的默认权限。
红帽企业版中,标准用户的默认 umask 值为 022
   umask 命令可查看和修改 bash shell umask 值。
第五章 Linux 文件系统
5.1 文件详述
   文件包括 : 常规文件、目录、符号链接、设备节点及其它。
   所有文件有如下属性:用户所有者、组所有者、权限和时间信息。这种信息保存在名为 inode i- 节点)的结构中。
   文件名保存在名为 dentry (目录项)的数据结构中。
   Linux 内核中,文件一般通过 i- 节点编号加以识别。
   i- 节点信息可以通过 ls-l 命令和 stat 命令查询。
   每个文件都有三层结构: dentry inode data dentry 含有文件名并关联 inode inode 含有文件元数据并指向数据区 data
   传统 Unix Linux )系统不记录文件创建时间。
   文件长度和大小
   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
软链接使用各字的 dentry i- 节点,但 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/hda1 IDE1 通道上的主盘的第一个分区。其它的依次类推。
2、 对磁盘的低级访问
对磁盘的低级访问就是直接将数据仅依字节流的形式存放于磁盘,或从磁盘读取,人们希望给文件给个文件名,然后将信息保存在文件里;将文件放进目录里管理,并控制对其访问的权限。所有这些机构化的信息管理由文件系统完成。
3、 文件系统
在磁盘上存储数据前,首先要创建文件系统,在 windows 中叫做格式化,
linux mkfs 命令族用于创建文件系统。它们位于供管理员用的 /sbin 目录下。
4、 挂载文件系统
在系统启动的时候,一个文件系统被映射为根分区,它的根目录就是系统的根( / )。
如果一个系统有多块磁盘,或者一个磁盘有多个分区、那么为了访问别的磁盘上的分区,就将那个文件系统的根目录映射到文件系统中一个已经存在的目录下;这个过程叫做文件系统的挂载。
对于 ls 命令来说,文件系统的不同都被隐藏起来了,所有的文件系统都被组织到一个目录树结构下。
mount 命令可用来查看挂载点,一些叫做 none 的设备是虚拟设备,它是在内核中实现的,并不是任何物理设备。
lost+found 目录是在创建文件系统时自动创建的,在 ext2 ext3 中文件系统的根下一直存在。在文件系统修复时会用到。
将一个磁盘(已存在文件系统)上的数据一字节一字节的复制到另一个没有挂载的设备上的技巧叫做磁盘镜像,这是对磁盘的低级访问。
5.5 使用 locate find 命令查找文件
      locate 命令利用数据库根据文件名迅速定位系统上的文件。速度快,但副作用是不能查找最近一天内新增的文件,或者报告因最近删除而失效的文件。
      find 命令实时递归查找系统上的文件,几乎所有的文件属性都可作为 find 命令的搜索条件,但不能直接根据文件内容搜索,可结合 grep 命令实现。
      Locate 命支持元字符: * 、?、 [] ,如 locate *.fish.png
      find < 起始目录 > < 搜索条件 > < 动作 >
5.6 文件压缩: gzip bzip2
    最常用的压缩命令是 gzip 。解压为 gunzip
    bzip2 命令压缩效果更好,解压用 bunzip2
5.7 文件归档: tar 命令
    将文件归档可以将整个目录树保存在一个文件中。
    tar 命令可以用来创建、列出和释放归档文件。
    归档文件通常也会一并压缩。如: tar cvf net.tar /etc/sysconfig/networking
    file-roller 应用程序提供图形化的操作界面。
第六章 Bash Shell
6.1 Bash 引言
       红帽企业版 linux 默认的 shell bash shell
      bash shell 的两个不同功能:交互式 shell shell 脚本。
      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 变量转化为环境变量。
 set env 命令分别用于列出 shell 变量和环境变量。
 uset A 复位变量,即删除变量。
  变量有字母数字字符和下划线组成,不能以数字开头,区分大小写。通常用大写。
如果你想把变量设置给含有空格的值,必须把这个值括在引号里。
解析变量时,如果需要的话,可以用大括号 {} 标出变量名。
bash 预赋值的变量

变量
含义
BASH_VERSION
但前 bash 的版本
HOSTNAME
当前机器的 DNS 主机名
OLDPWD
上次工作目录
PWD
当前工作目录
RADOM
介于 0 32767 之间的任意整数
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 内置命令: cd pwd echo
alias 使用下列语法: alias NAME=VALUE ,等号两边没有空格。
别名替换:如果别名替换为一个与别名有着相同名称的命令,则 shell 仅仅执行替换,然后继续前进。否则,展开别名,例见 P237 ll 命令。
Bash 提示符中常用的转义序列

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

set 内置命令常用的 shell 标记

标记
作用
-f
使路径名替换无效
-n
读取命令、但不执行(用来对脚本进行语法检查)
-o optionname
设置指定的选项,一些常用选项如下:
emacs  使用 emacs 风格的命令行快捷键
ignoreeof   EOF ctrl+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 网络浏览器等)、屏幕程序( vi nano 文本编辑器等)、终端程序(即命令,如: ls cd 等)。
Linux 进程通过给每个当前被它们打开的文件赋整数值来追踪这些文件,这个整数值被称作文件描述符。
用命令 ls –l /proc/PID/fd, 查看文件描述符。 P252
标准输入、标准输出和标准错误的文件描述符

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

7.2 标准错误
可以用 2> 把标准错误流重定向到文件中。可以用 2>> 追加标准错误。
可以用 2>&1 >& (新派做法)把标准错误流与标准输出流结合在一起。
7.3 管道
UNIX 所谓的管道可以吧一个进程的标准输出流和另一个进程的标准输入流连接起来。
Unix 中的许多命令被设计为过滤器,从标准输入中读取输入,将输出传送到标准输出。
用“ | ”在两个命令之间创建管道。连接在管道中的所有进程被称作进程组。
作为过滤器的命令: grep head tail sort sed awk
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 语法。
许多命令都可以接受正则表达式,包括 grep sed vi 和许多脚本语言。
正则表达式应放在单引号内,避免在用 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]
排除范围
基本
代表不包含在域内的任意一个字符
修饰符
扩展
代表 0 1 个前面的项
*
修饰符
基本
代表 0 或多个前面的项
+
修饰符
扩展
代表 1 个或者多个前面的项
{m,n}
修饰符
扩展
代表前面的项出现了 m n 次之间
{n}
修饰符
扩展
代表前面的项具体的出现次数为 n
^
基本
标出一行的开始
$
基本
标出一行的结束
\<
基本
标出一个单词的开始
\>
基本
标出一个单词的开始
(…)
分组
基本
允许修饰符修饰一组字符
(…|…)
分组
扩展
允许指定可选的模式
\
转义
扩展(基本)
取消 ( 或启动 ) 后续字符的特殊含义

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

正则表达式
文件名匹配
在执行搜索或者搜索及替换功能时,比如 grep vi sed 以及许多脚本语言,如 perl python
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
进程有其文件系统环境,包括 cwd umask 、根目录和一组打开的文件。
进程有调度环境,包括优先级值。
进程有一组环境变量。
ps 命令可用来查看所有正在运行的进程。
top 命令可用来监控所有正在运行的进程。
9.2 进程状态 P390
    进程总是处于 5 种状态之一:可运行 (R) 、自愿睡眠 (S) 、强制睡眠 (D) 、挂起 (T) 、僵尸 (Z)
    linux 系统中,第一个进程 /sbin/init 由内核在启动时运行。其他所有进程都是父进程自我复制和派生的结果。
    一个进程由另一个进程执行的过程叫做 exec executing 的简称)。
    通常,新命令由进程(通常是 shell )运行,首先派生,继而执行。这种机制被称为派生和执行机制。
    当进程退出、释放大多数资源和它的父进程收集它的返回值、释放剩余资源这两段时间之间,子进程处于一个特殊状态,被称作僵尸进程。每个进程都会经历一个短暂的僵尸状态,但却不占用内存空间、 CPU 时间。
9.3 进程调度:优先级( nice )和更改优先级( renice
    Linux 内核的基本任务是调度进程。
    每个进程都有一影响其调度的优先级( niceness )值。
    nice renice 命令可以改变进程调度的优先顺序。
9.4 发送信号
    信号是进程间通信的底层形式,由多种来源产生,包括内核、终端和其他进程。
    信号由信号值(或信号号码)区分,信号值具有约定的符号名称和用途。信号值的名称可以用 kill -l 命令列出。
    kill 命令向其他进程发送信号。
    接收到信号时,进程可以忽视它或用内核指定的默认方式作出反应,也可以调用一个自定义信号处理程序。
    根据约定,信号值 15 SIGTERM )用来请求终止进程。
    信号值 9 SIGKILL )可以终止进程,而且该信号不能被忽略。
 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-printer gnome-dfault-printer lpstat 命令能用来浏览可用的打印队列。
      lpr lpq lprm 分别用来提交打印任务、询问尚未完成的打印任务和取消等待中的打印任务,它们将检查 PRINTER 环境变量,以获得默认的打印队列。
      lp cancel 命令类似于 lpr lprm 命令。
      许多应用程序的打印靠管道传递给 lpr 命令完成。
10.3  管理打印文件
      Linux 系统的主要打印格式是 PostScript
      gs evince 命令能预览 PostScript 文件。
      enscript 命令将文本文件转换成修饰过的 PostScript
      ps2pdf pdf2ps 命令将文件转换成 PDF 文件,或者进行相反得操作。
      mpage 命令能重排 PostScript 文件里的每个页面。
10.4  电子邮件概述
      电子邮件管理涉及 MUA (邮件用户代理程序)和 MTA (邮件传输代理程序)。
      POP IMAP 来接收电子邮件,用 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 应用程序是一个非交互的多协议客户端程序(包括 HTTP HTTPS FTP ),能以批模式来传送文件。
      Wget 应用程序是一个非交互的多协议客户端程序(包括 HTTP HTTPS FTP ),能递归传送网页,并能在所有网页引用的页面中进行递归搜索。
10.7  远程 shell 命令
      远程 shell 应用程序允许用户在远程机器上执行任意命令,而且能让标准输出返回本地。当然,它也可以启动交互式 shell
      安全 shell 应用程序提供了一个远程 shell ,这样所有的信息都加密了,而且用户能用传统的密码验证或使用公钥验证系统。
      为了使用公钥验证系统,必须用 ssh-keygen 命令生成一个公有 - 私有密钥对。
      因为安全 shell 服务器有自己的公有 - 私钥对,所有服务器和客户端能相互进行验证。
     
     
                                                                                                                                                                                                                                                                                                                                          

你可能感兴趣的:(linux,职场,休闲)