|
|
@@ -77,8 +77,8 @@ tags:
|
|
|
```
|
|
|
-n:不进行换行
|
|
|
-e:让转义生效
|
|
|
- \n:换行
|
|
|
- \t:制表符
|
|
|
+ \n:换行
|
|
|
+ \t:制表符
|
|
|
```
|
|
|
- 命令实例
|
|
|
```
|
|
|
@@ -116,12 +116,12 @@ tags:
|
|
|
|
|
|
```
|
|
|
virt-what 用于查看服务器是kvm还是xen架构的虚拟化
|
|
|
-netstat -tunlp | grep 端口号 用于查看指定端口号的进程情况
|
|
|
- -t tcp协议相关
|
|
|
- -u udp协议相关
|
|
|
- -n 以数字显示IP和端口
|
|
|
- -l 处于监听状态
|
|
|
- -p 显示相关进程及PID
|
|
|
+netstat -tunlp | grep 端口号 用于查看指定端口号的进程情况
|
|
|
+ -t tcp协议相关
|
|
|
+ -u udp协议相关
|
|
|
+ -n 以数字显示IP和端口
|
|
|
+ -l 处于监听状态
|
|
|
+ -p 显示相关进程及PID
|
|
|
ps:显示进程状态
|
|
|
常用组合:aux
|
|
|
u: 以用户为中心组织进程状态信息显示
|
|
|
@@ -199,8 +199,8 @@ hostname: 查看主机名
|
|
|
主板上有个纽扣电池为主板上的硬件时钟(晶体振荡器)供电,所以关机后再开机时间也是对的
|
|
|
Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以后,就不再与硬件相关联,并设为当前系统时间,之后靠内核振动次数计时(100次1秒)
|
|
|
如时间不对,还可以和全球的时间服务器进行对表,精确度很高,最精确的是元子震荡时钟,价值1亿英镑
|
|
|
- 系统时钟:由linux内核通过cpu的工作频率进行的计时
|
|
|
- 硬件时钟
|
|
|
+ 系统时钟:由linux内核通过cpu的工作频率进行的计时
|
|
|
+ 硬件时钟
|
|
|
```
|
|
|
- `date`
|
|
|
- 命令功能
|
|
|
@@ -261,8 +261,8 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
change directory,切换工作目录(当前目录)
|
|
|
----------
|
|
|
相关的环境变量:
|
|
|
- PWD:保存了当前工作目录的路径
|
|
|
- OLDPWD:保存了上一次的工作目录的路径
|
|
|
+ PWD:保存了当前工作目录的路径
|
|
|
+ OLDPWD:保存了上一次的工作目录的路径
|
|
|
cd后面可以跟相对路径和绝对路径,根据实际需求选择用哪个,相对路径中.或..经常使用
|
|
|
```
|
|
|
- 命令格式
|
|
|
@@ -290,28 +290,28 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
-a,--all:显示所有文件,包括隐藏文件
|
|
|
-A:显示除.和..之外的所有文件
|
|
|
-l:长格式列表,即显示文件的详细属性信息
|
|
|
- -rw-------. 1 root root 1302 4月 4 22:39 initial-setup-ks.cfg
|
|
|
- -:指的是Linux系统上的文件类型,并非通过file命令查看的文件内容格式的类型
|
|
|
- -:普通(常规)文件,即f,有诸多变种格式,可通过file命令查看
|
|
|
- d:directory,目录文件
|
|
|
- b:block device,块设备文件,支持以"block"为单位进行随机访问
|
|
|
- c:character device,字符设备文件,支持以"character"为单位进行线性访问
|
|
|
- major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
|
|
|
- minor number:次设备号,用于标识同一类型中的不同设备
|
|
|
- l:sysmbolic link,符号链接文件
|
|
|
- s:socket,套接字文件;有很多服务器支持2种方式通信,如果跨主机只能基于协议通信,如果不跨主机建议使用套接字文件的方式通信
|
|
|
- p:pipe,(命名)管道文件
|
|
|
- rw-------:访问权限
|
|
|
- rw-:文件属主的权限
|
|
|
- ---:文件属组的权限
|
|
|
- ---:其他用户(非属主、属组)的权限
|
|
|
- 1:表示文件被硬链接的次数
|
|
|
- root:文件的属主(owner)
|
|
|
- root:文件的属组(group)
|
|
|
- 1302:表示文件的大小(size),单位是字节
|
|
|
- 4月 4 22:39:文件最近一次被修改的时间
|
|
|
- 注:每个文件都有3个时间戳(访问,修改,改变),修改指的是文件内容发生的改变,改变指的是文件的属性发生的改变;修改一定会改变,改变不一定会修改
|
|
|
- initial-setup-ks.cfg:文件名
|
|
|
+ -rw-------. 1 root root 1302 4月 4 22:39 initial-setup-ks.cfg
|
|
|
+ -:指的是Linux系统上的文件类型,并非通过file命令查看的文件内容格式的类型
|
|
|
+ -:普通(常规)文件,即f,有诸多变种格式,可通过file命令查看
|
|
|
+ d:directory,目录文件
|
|
|
+ b:block device,块设备文件,支持以"block"为单位进行随机访问
|
|
|
+ c:character device,字符设备文件,支持以"character"为单位进行线性访问
|
|
|
+ major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
|
|
|
+ minor number:次设备号,用于标识同一类型中的不同设备
|
|
|
+ l:sysmbolic link,符号链接文件
|
|
|
+ s:socket,套接字文件;有很多服务器支持2种方式通信,如果跨主机只能基于协议通信,如果不跨主机建议使用套接字文件的方式通信
|
|
|
+ p:pipe,(命名)管道文件
|
|
|
+ rw-------:访问权限
|
|
|
+ rw-:文件属主的权限
|
|
|
+ ---:文件属组的权限
|
|
|
+ ---:其他用户(非属主、属组)的权限
|
|
|
+ 1:表示文件被硬链接的次数
|
|
|
+ root:文件的属主(owner)
|
|
|
+ root:文件的属组(group)
|
|
|
+ 1302:表示文件的大小(size),单位是字节
|
|
|
+ 4月 4 22:39:文件最近一次被修改的时间
|
|
|
+ 注:每个文件都有3个时间戳(访问,修改,改变),修改指的是文件内容发生的改变,改变指的是文件的属性发生的改变;修改一定会改变,改变不一定会修改
|
|
|
+ initial-setup-ks.cfg:文件名
|
|
|
-h:对文件大小单位换算,换算后结果可能为非精确值
|
|
|
-d:显示目录自身的相关属性而非其内部的文件列表,一般与-l结合使用
|
|
|
-r:reverse,逆序显示,没有-r时默认升序显示
|
|
|
@@ -428,16 +428,16 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 命令格式
|
|
|
```
|
|
|
单源复制:cp [OPTION]... [-T] SOURCE DEST
|
|
|
- 如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中
|
|
|
- 如果DEST存在
|
|
|
- 如果DEST是非目录文件,则覆盖目标文件,此时建议使用-i选项
|
|
|
- 如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流
|
|
|
+ 如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中
|
|
|
+ 如果DEST存在
|
|
|
+ 如果DEST是非目录文件,则覆盖目标文件,此时建议使用-i选项
|
|
|
+ 如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流
|
|
|
多源复制:cp [OPTION]... SOURCE... DIRECTORY
|
|
|
- cp [OPTION]... -t DIRECTORY SOURCE... 前一形式的变种
|
|
|
- 如果DEST不存在,错误
|
|
|
- 如果DEST存在
|
|
|
- 如果DEST是非目录文件,错误
|
|
|
- 如果DEST是目录文件,分别复制每个文件至目标目录中,并保持原名
|
|
|
+ cp [OPTION]... -t DIRECTORY SOURCE... 前一形式的变种
|
|
|
+ 如果DEST不存在,错误
|
|
|
+ 如果DEST存在
|
|
|
+ 如果DEST是非目录文件,错误
|
|
|
+ 如果DEST是目录文件,分别复制每个文件至目标目录中,并保持原名
|
|
|
```
|
|
|
- 命令参数
|
|
|
```
|
|
|
@@ -446,14 +446,14 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
-r,-R:递归复制目录及内部的所有内容
|
|
|
-d:复制符号链接文件本身,而非其指向的源文件
|
|
|
-a:相当于-dR --preserve=all archive,用于实现归档(备份)
|
|
|
- --preserve=
|
|
|
- mode:权限
|
|
|
- ownership:属主和属组
|
|
|
- timestamps:时间戳
|
|
|
- context:安全标签
|
|
|
- xattr:扩展属性
|
|
|
- links:符号链接
|
|
|
- all:上述所有属性
|
|
|
+ --preserve=
|
|
|
+ mode:权限
|
|
|
+ ownership:属主和属组
|
|
|
+ timestamps:时间戳
|
|
|
+ context:安全标签
|
|
|
+ xattr:扩展属性
|
|
|
+ links:符号链接
|
|
|
+ all:上述所有属性
|
|
|
-v:verbose,显示详细过程
|
|
|
```
|
|
|
- `mv`
|
|
|
@@ -465,7 +465,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
~]# mv [OPTION]... [-T] SOURCE DEST
|
|
|
~]# mv [OPTION]... SOURCE... DIRECTORY
|
|
|
- ~]# mv [OPTION]... -t DIRECTORY SOURCE... 前一形式的变种
|
|
|
+ ~]# mv [OPTION]... -t DIRECTORY SOURCE... 前一形式的变种
|
|
|
```
|
|
|
- 命令参数
|
|
|
```
|
|
|
@@ -491,7 +491,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 命令实例
|
|
|
```
|
|
|
例如:rm -rf /PATH/TO/DIR
|
|
|
- 危险操作:rm -rf /*
|
|
|
+ 危险操作:rm -rf /*
|
|
|
```
|
|
|
|
|
|
### ***文本文件查看***
|
|
|
@@ -507,7 +507,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
- 命令参数
|
|
|
```
|
|
|
- -n:给显示的文本行编号
|
|
|
+ -n:给显示的文本行编号
|
|
|
-E:显示行结束符$,文本文件在磁盘上存储是没有行的,之所以显示出有行,是因为文本文件查看工具可以读取行结束符并将他们显示为行
|
|
|
```
|
|
|
- `tac`
|
|
|
@@ -552,8 +552,8 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
-c #:指定获取前#字节
|
|
|
-n #:指定获取前#行
|
|
|
- -#:简写
|
|
|
- 没有该选项默认10行
|
|
|
+ -#:简写
|
|
|
+ 没有该选项默认10行
|
|
|
```
|
|
|
- `tail`
|
|
|
- 命令功能
|
|
|
@@ -569,8 +569,8 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
-c #:指定获取后#字节
|
|
|
-n #:指定获取后#行
|
|
|
- -#:简写
|
|
|
- 没有该选项默认10行
|
|
|
+ -#:简写
|
|
|
+ 没有该选项默认10行
|
|
|
-f:查看文件尾部内容结束后不退出,跟随显示新增的行。常用于人工监控日志增长的新行内容
|
|
|
-F:同上,与f不同的是会保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪,而f会停止追踪
|
|
|
```
|
|
|
@@ -629,10 +629,10 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
-d DELIMITER:指明分隔符,默认空白字符
|
|
|
-f FILEDS:要显示哪些字段
|
|
|
- #:第#个字段
|
|
|
- #,#[,#]:离散的多个字段,例如1,3,6
|
|
|
- #-#:连续的多个字段,例如1-6
|
|
|
- 混合使用:1-3,7
|
|
|
+ #:第#个字段
|
|
|
+ #,#[,#]:离散的多个字段,例如1,3,6
|
|
|
+ #-#:连续的多个字段,例如1-6
|
|
|
+ 混合使用:1-3,7
|
|
|
--output-delimiter=STRING:修改输出时的分隔符
|
|
|
```
|
|
|
- 命令实例
|
|
|
@@ -733,12 +733,12 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
display file or file system status,显示文件的元数据信息
|
|
|
---------------------
|
|
|
文件:两类数据
|
|
|
- 元数据:metadata
|
|
|
- 数据:data
|
|
|
+ 元数据:metadata
|
|
|
+ 数据:data
|
|
|
时间戳:每个文件都有3个时间戳
|
|
|
- 最近访问时间(access time):2016-04-24 21:20:42.477903125 +0800 读取文件内容
|
|
|
- 最近修改时间(modify time):2016-04-24 20:40:08.887958504 +0800 数据(文件内容)改变
|
|
|
- 最近改变时间(change time):2016-04-24 20:40:08.887958504 +0800 元数据改变
|
|
|
+ 最近访问时间(access time):2016-04-24 21:20:42.477903125 +0800 读取文件内容
|
|
|
+ 最近修改时间(modify time):2016-04-24 20:40:08.887958504 +0800 数据(文件内容)改变
|
|
|
+ 最近改变时间(change time):2016-04-24 20:40:08.887958504 +0800 元数据改变
|
|
|
```
|
|
|
- 命令格式
|
|
|
```
|
|
|
@@ -759,7 +759,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
-a:仅修改access time
|
|
|
-m:仅修改modify time
|
|
|
-t STAMP:
|
|
|
- [[CC]YY]MMDDhhmm[.ss]
|
|
|
+ [[CC]YY]MMDDhhmm[.ss]
|
|
|
```
|
|
|
|
|
|
### ***系统管理***
|
|
|
@@ -767,33 +767,33 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- `关机/重启命令`
|
|
|
```
|
|
|
CentOS 7:
|
|
|
- ~]# systemctl poweroff
|
|
|
- ~]# systemctl reboot
|
|
|
+ ~]# systemctl poweroff
|
|
|
+ ~]# systemctl reboot
|
|
|
*(通用):
|
|
|
- ~]# poweroff || ~]# halt
|
|
|
- ~]# reboot
|
|
|
- -f:强制,不调用shuwdown
|
|
|
- -p:切断电源
|
|
|
+ ~]# poweroff || ~]# halt
|
|
|
+ ~]# reboot
|
|
|
+ -f:强制,不调用shuwdown
|
|
|
+ -p:切断电源
|
|
|
shutdown:安全关机重启方式,会先保存未保存的数据
|
|
|
- shutdown [OPTIONS...] TIME [MESSAGE]
|
|
|
- OPTIONS:
|
|
|
- -h:halt 关机
|
|
|
- -r:reboot 重启
|
|
|
- -c:cancel 取消关机或重启
|
|
|
- TIME:
|
|
|
- now:立刻
|
|
|
- hh:mm:绝对时间表示法,指明具体时间
|
|
|
- +m:相对时间表示法,从命令提交开始多久之后,例如+3,单位是分钟
|
|
|
- MESSAGE:
|
|
|
- 关机或重启提示语
|
|
|
+ shutdown [OPTIONS...] TIME [MESSAGE]
|
|
|
+ OPTIONS:
|
|
|
+ -h:halt 关机
|
|
|
+ -r:reboot 重启
|
|
|
+ -c:cancel 取消关机或重启
|
|
|
+ TIME:
|
|
|
+ now:立刻
|
|
|
+ hh:mm:绝对时间表示法,指明具体时间
|
|
|
+ +m:相对时间表示法,从命令提交开始多久之后,例如+3,单位是分钟
|
|
|
+ MESSAGE:
|
|
|
+ 关机或重启提示语
|
|
|
```
|
|
|
- `用户登录信息查看命令`
|
|
|
```
|
|
|
whoami:显示当前登录的有效用户
|
|
|
who:查看系统当前所有的登录信息(会话)
|
|
|
- who [option]... ,
|
|
|
- -b:系统此次启动的时间
|
|
|
- -r:运行级别
|
|
|
+ who [option]... ,
|
|
|
+ -b:系统此次启动的时间
|
|
|
+ -r:运行级别
|
|
|
w:增强版的who命令,查看系统当前所有的登录信息(会话)及所做的操作
|
|
|
```
|
|
|
|
|
|
@@ -820,8 +820,8 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
切换用户或以其他用户身份执行命令
|
|
|
----------------
|
|
|
切换用户的方式:
|
|
|
- su Username:非登录式切换,即不会读取目标用户的配置文件
|
|
|
- su - Username:登录式切换(完全切换),即会读取目标用户的配置文件
|
|
|
+ su Username:非登录式切换,即不会读取目标用户的配置文件
|
|
|
+ su - Username:登录式切换(完全切换),即会读取目标用户的配置文件
|
|
|
注:root su至其他用户无须密码,非root用户切换时需要密码
|
|
|
```
|
|
|
- 命令格式
|
|
|
@@ -848,7 +848,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 命令参数
|
|
|
```
|
|
|
-u UID:[UID_MIN,UID_MAX],最小值和最大值定义在/etc/login.defs文件中
|
|
|
- 没有该选项默认使用最近一个最大UID值+1
|
|
|
+ 没有该选项默认使用最近一个最大UID值+1
|
|
|
-g GID:指明用户所属基本组,可为组名,也可为GID,组必须事先存在
|
|
|
-c "COMMENT":指明用户的注释信息
|
|
|
-d /PATH/TO/HOME_DIR:指明用户的家目录,一般来讲此目录事先不要已存在
|
|
|
@@ -910,8 +910,8 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
- 命令参数
|
|
|
```
|
|
|
- -g GID:指定GID,[GID_MIN,GID_MAX],最小值和最大值定义在/etc/login.defs文件中
|
|
|
- 没有该选项默认是上一个组的GID+1
|
|
|
+ -g GID:指定GID,[GID_MIN,GID_MAX],最小值和最大值定义在/etc/login.defs文件中
|
|
|
+ 没有该选项默认是上一个组的GID+1
|
|
|
-r:创建系统组
|
|
|
```
|
|
|
- 命令实例
|
|
|
@@ -958,7 +958,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
-l:锁定指定用户
|
|
|
-u:解锁指定用户
|
|
|
-
|
|
|
+
|
|
|
-n mindays:指定最短使用期限
|
|
|
-x maxdays:指定最大使用期限
|
|
|
-w warndays:提前多少天开始警告
|
|
|
@@ -1007,7 +1007,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
```
|
|
|
- 命令参数
|
|
|
```
|
|
|
- -d:LAST_DAY
|
|
|
+ -d:LAST_DAY
|
|
|
-E,--expiredate EXPIRE_DATE
|
|
|
-I,--inactive INACTIVE
|
|
|
-m,--mindays MIN_DAYS
|
|
|
@@ -1025,21 +1025,21 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 命令格式
|
|
|
```
|
|
|
~]# chmod [OPTION]... OCTAL-MODE FILE...
|
|
|
- -R:递归修改权限
|
|
|
+ -R:递归修改权限
|
|
|
~]# chmod [OPTION]... MODE[,MODE]... FILE...
|
|
|
- MODE:
|
|
|
- 修改一类用户的所有权限:
|
|
|
- u=
|
|
|
- g=
|
|
|
- o=
|
|
|
- ug=
|
|
|
- a=
|
|
|
- u=,g=
|
|
|
- 修改一类用户的某位或某些权限
|
|
|
- u+
|
|
|
- u-
|
|
|
+ MODE:
|
|
|
+ 修改一类用户的所有权限:
|
|
|
+ u=
|
|
|
+ g=
|
|
|
+ o=
|
|
|
+ ug=
|
|
|
+ a=
|
|
|
+ u=,g=
|
|
|
+ 修改一类用户的某位或某些权限
|
|
|
+ u+
|
|
|
+ u-
|
|
|
~]# chmod [OPTION]... --reference=RFILE FILE...
|
|
|
- 参考RFILE文件的权限,将FILE的权限修改为同RFILE
|
|
|
+ 参考RFILE文件的权限,将FILE的权限修改为同RFILE
|
|
|
```
|
|
|
- 命令实例
|
|
|
```
|
|
|
@@ -1064,12 +1064,12 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 命令格式
|
|
|
```
|
|
|
~]# chown [OPTION]... [OWNER][:[GROUP]] FILE...
|
|
|
- -R:递归
|
|
|
- 命令中的冒号可用.替换
|
|
|
- 用法:
|
|
|
- OWNER
|
|
|
- OWNER:GROUP
|
|
|
- :GROUP
|
|
|
+ -R:递归
|
|
|
+ 命令中的冒号可用.替换
|
|
|
+ 用法:
|
|
|
+ OWNER
|
|
|
+ OWNER:GROUP
|
|
|
+ :GROUP
|
|
|
~]# chown [OPTION]... --reference=RFILE FILE...
|
|
|
```
|
|
|
- 命令实例
|
|
|
@@ -1130,187 +1130,187 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 常用操作
|
|
|
```
|
|
|
打开文件:
|
|
|
- ~]# vim [OPTION]... FILE...
|
|
|
- +#:打开文件后,直接让光标处于第#行的行首;没有#光标默认处于尾部
|
|
|
- +/PATTEN:打开文件后,直接让光标处于第一个被PATTEN匹配到的行的行首
|
|
|
+ ~]# vim [OPTION]... FILE...
|
|
|
+ +#:打开文件后,直接让光标处于第#行的行首;没有#光标默认处于尾部
|
|
|
+ +/PATTEN:打开文件后,直接让光标处于第一个被PATTEN匹配到的行的行首
|
|
|
关闭文件:
|
|
|
- :q 退出
|
|
|
- :q! 强制退出,丢弃做出的修改
|
|
|
- :wq 保存退出
|
|
|
- :x 保存退出
|
|
|
+ :q 退出
|
|
|
+ :q! 强制退出,丢弃做出的修改
|
|
|
+ :wq 保存退出
|
|
|
+ :x 保存退出
|
|
|
|
|
|
- ZZ 保存退出(命令模式下)
|
|
|
+ ZZ 保存退出(命令模式下)
|
|
|
基本模式:
|
|
|
- 编辑模式:也叫命令模式,默认处于此模式,对文本进行复制,剪切, 粘贴等
|
|
|
- 输入模式:也叫插入模式,对文件内容进行编辑
|
|
|
- 末行模式:内置的命令行接口,可实现许多强大的功能
|
|
|
+ 编辑模式:也叫命令模式,默认处于此模式,对文本进行复制,剪切, 粘贴等
|
|
|
+ 输入模式:也叫插入模式,对文件内容进行编辑
|
|
|
+ 末行模式:内置的命令行接口,可实现许多强大的功能
|
|
|
模式转换:
|
|
|
- 编辑模式-->输入模式
|
|
|
- i:insert,在光标所在处输入
|
|
|
- a:append,在光标所在处后面输入
|
|
|
- o:open,在当前光标所在行的下方打开一个新行输入
|
|
|
- I:在当前光标所在行的行首输入
|
|
|
- A:在当前光标所在行的行尾输入
|
|
|
- O:在当前光标所在行的上方打开一个新行输入
|
|
|
- c:change,
|
|
|
- C:
|
|
|
- 输入模式-->编辑模式
|
|
|
- ESC
|
|
|
- 编辑模式-->末行模式
|
|
|
- :
|
|
|
- 末行模式-->编辑模式
|
|
|
- ESC
|
|
|
+ 编辑模式-->输入模式
|
|
|
+ i:insert,在光标所在处输入
|
|
|
+ a:append,在光标所在处后面输入
|
|
|
+ o:open,在当前光标所在行的下方打开一个新行输入
|
|
|
+ I:在当前光标所在行的行首输入
|
|
|
+ A:在当前光标所在行的行尾输入
|
|
|
+ O:在当前光标所在行的上方打开一个新行输入
|
|
|
+ c:change,
|
|
|
+ C:
|
|
|
+ 输入模式-->编辑模式
|
|
|
+ ESC
|
|
|
+ 编辑模式-->末行模式
|
|
|
+ :
|
|
|
+ 末行模式-->编辑模式
|
|
|
+ ESC
|
|
|
光标跳转:
|
|
|
- 字符间跳转:
|
|
|
- h(左),j(下),k(上),l(右)
|
|
|
+ 字符间跳转:
|
|
|
+ h(左),j(下),k(上),l(右)
|
|
|
|
|
|
- #COMMAND:跳转由#指定一次跳转的字符数
|
|
|
- 单词间跳转:
|
|
|
- w:下一个单词的词首
|
|
|
- e:当前或下一个单词的词尾
|
|
|
- b:当前或前一个单词的词首
|
|
|
+ #COMMAND:跳转由#指定一次跳转的字符数
|
|
|
+ 单词间跳转:
|
|
|
+ w:下一个单词的词首
|
|
|
+ e:当前或下一个单词的词尾
|
|
|
+ b:当前或前一个单词的词首
|
|
|
|
|
|
- #COMMAND:跳转由#指定一次跳转的单词数
|
|
|
- 行首行尾跳转:
|
|
|
- ^:跳转至行首的第一个非空白字符
|
|
|
- 0:跳转至行首
|
|
|
- $:跳转至行尾
|
|
|
- 行间移动:
|
|
|
- #G:跳转至由#指定行
|
|
|
- G:跳转至最后一行
|
|
|
- 1G或gg:跳转至第一行
|
|
|
- 句间移动:了解即可
|
|
|
- )
|
|
|
- (
|
|
|
- 段落间移动:了解即可
|
|
|
- }
|
|
|
- {
|
|
|
- ctrl+g显示当前光标所在行位置及文件状态信息
|
|
|
+ #COMMAND:跳转由#指定一次跳转的单词数
|
|
|
+ 行首行尾跳转:
|
|
|
+ ^:跳转至行首的第一个非空白字符
|
|
|
+ 0:跳转至行首
|
|
|
+ $:跳转至行尾
|
|
|
+ 行间移动:
|
|
|
+ #G:跳转至由#指定行
|
|
|
+ G:跳转至最后一行
|
|
|
+ 1G或gg:跳转至第一行
|
|
|
+ 句间移动:了解即可
|
|
|
+ )
|
|
|
+ (
|
|
|
+ 段落间移动:了解即可
|
|
|
+ }
|
|
|
+ {
|
|
|
+ ctrl+g显示当前光标所在行位置及文件状态信息
|
|
|
编辑命令:
|
|
|
- 剪切命令:
|
|
|
- x:删除光标处的字符
|
|
|
- #x:删除光标处起始的#个字符
|
|
|
- xp:交换光标所在处的字符及其后面字符的位置
|
|
|
-
|
|
|
- d(常用):可结合光标跳转字符,实现范围删除
|
|
|
- d$,d^,d0,dw,de,db,#COMMAND...
|
|
|
- dd:删除光标所在行
|
|
|
- #dd:多行删除
|
|
|
- 粘贴命令(p,put,paste):
|
|
|
- p(小写):缓冲区存储的如果为整行,则粘贴至当前光标所在行的下方;否则粘贴至当前光标所在处的后面
|
|
|
- P(大写):缓冲区存储的如果为整行,则粘贴至当前光标所在行的上方;否则粘贴至当前光标所在处的前面
|
|
|
- 复制命令(y,yank):
|
|
|
- y:工作行为相似于d命令
|
|
|
- y$,y^,y0,yw,de,yb,#COMMAND...
|
|
|
- yy:复制光标所在行
|
|
|
- #yy:多行复制
|
|
|
- 改变命令(c,change):
|
|
|
- c:修改,同d命令,但同时会进入插入模式
|
|
|
- c$,c^,c0,cw,ce,cb,#COMMAND...
|
|
|
- cc:
|
|
|
- #cc:
|
|
|
-
|
|
|
- 可视化模式:经常结合编辑命令中的d,y进行复制剪切
|
|
|
- v(小写):按字符选定光标划过的区域
|
|
|
- V(大写):按行选定光标划过的区域
|
|
|
- 撤销命令:
|
|
|
- u(undo):撤销此前的操作
|
|
|
- #u:撤销指定次数的操作
|
|
|
- 撤销此前的撤销操作:
|
|
|
- Ctrl+r
|
|
|
- 重复前一个编辑操作:常用于和dd配合使用
|
|
|
- .
|
|
|
- %可以在当前有括号的光标处查找配对的括号)}],常用于程序调试时查找不配对的括号
|
|
|
- r输入一个字符可替换光标所在位置的字符
|
|
|
+ 剪切命令:
|
|
|
+ x:删除光标处的字符
|
|
|
+ #x:删除光标处起始的#个字符
|
|
|
+ xp:交换光标所在处的字符及其后面字符的位置
|
|
|
+
|
|
|
+ d(常用):可结合光标跳转字符,实现范围删除
|
|
|
+ d$,d^,d0,dw,de,db,#COMMAND...
|
|
|
+ dd:删除光标所在行
|
|
|
+ #dd:多行删除
|
|
|
+ 粘贴命令(p,put,paste):
|
|
|
+ p(小写):缓冲区存储的如果为整行,则粘贴至当前光标所在行的下方;否则粘贴至当前光标所在处的后面
|
|
|
+ P(大写):缓冲区存储的如果为整行,则粘贴至当前光标所在行的上方;否则粘贴至当前光标所在处的前面
|
|
|
+ 复制命令(y,yank):
|
|
|
+ y:工作行为相似于d命令
|
|
|
+ y$,y^,y0,yw,de,yb,#COMMAND...
|
|
|
+ yy:复制光标所在行
|
|
|
+ #yy:多行复制
|
|
|
+ 改变命令(c,change):
|
|
|
+ c:修改,同d命令,但同时会进入插入模式
|
|
|
+ c$,c^,c0,cw,ce,cb,#COMMAND...
|
|
|
+ cc:
|
|
|
+ #cc:
|
|
|
+
|
|
|
+ 可视化模式:经常结合编辑命令中的d,y进行复制剪切
|
|
|
+ v(小写):按字符选定光标划过的区域
|
|
|
+ V(大写):按行选定光标划过的区域
|
|
|
+ 撤销命令:
|
|
|
+ u(undo):撤销此前的操作
|
|
|
+ #u:撤销指定次数的操作
|
|
|
+ 撤销此前的撤销操作:
|
|
|
+ Ctrl+r
|
|
|
+ 重复前一个编辑操作:常用于和dd配合使用
|
|
|
+ .
|
|
|
+ %可以在当前有括号的光标处查找配对的括号)}],常用于程序调试时查找不配对的括号
|
|
|
+ r输入一个字符可替换光标所在位置的字符
|
|
|
末行命令:
|
|
|
- 1.地址定界:
|
|
|
- :start_pos,end_pos
|
|
|
- #:具体第#行,例如2表示第2行
|
|
|
- #,#:从左侧#表示行起始,到右侧#表示行结尾
|
|
|
- #,+#:从左侧#表示行起始,加上右侧#表示的行数
|
|
|
- .:当前行
|
|
|
- $:最后一行
|
|
|
- %:全文,相当于1,$
|
|
|
- 使用方法:后跟一个编辑命令
|
|
|
- d,y,...
|
|
|
- w /APTH/TO/SOMEWHERE:将范围内的行另存至指定文件中
|
|
|
- r /APTH/FROM/SOMEWHERE:在指定位置插入指定文件中的所有内容
|
|
|
- 2.查找:同less命令的查找
|
|
|
- /PATTERN:从当前光标所在处向文件尾部查找
|
|
|
- ?PATTERN:从当前光标所在处向文件首部查找
|
|
|
- n:与查找命令方向相同
|
|
|
- N:与查找命令方向相反
|
|
|
- 3.查找并替换:需结合地址定界一起使用
|
|
|
- s/要查找的内容/替换为的内容/修饰符
|
|
|
- 要查找的内容:可使用模式
|
|
|
- 替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用"&"引用前面查找时查找到的整个内容
|
|
|
- 修饰符:
|
|
|
- i:忽略大小写
|
|
|
- g:全局替换,默认情况下,每一行只替换第一次出现的内容
|
|
|
- c:询问用户是否替换
|
|
|
- 查找替换中的分隔符/可替换为其他字符,例如
|
|
|
- s@@@
|
|
|
- s###
|
|
|
- 练习:
|
|
|
- 1.复制/etc/grub2.cfg至/tmp/目录,用直接替换命令删除/tmp/grub2.cfg文件中的行首的空白字符
|
|
|
- %s/^[[:space:]]\+//g
|
|
|
- 2.复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
|
|
|
- %s/^[[:space:]]/#&/
|
|
|
- 4.多文件模式下的操作:一般窗口没有分割时
|
|
|
- :next 下一个
|
|
|
- :prev 前一个
|
|
|
- :first 第一个
|
|
|
- :last 最后一个
|
|
|
+ 1.地址定界:
|
|
|
+ :start_pos,end_pos
|
|
|
+ #:具体第#行,例如2表示第2行
|
|
|
+ #,#:从左侧#表示行起始,到右侧#表示行结尾
|
|
|
+ #,+#:从左侧#表示行起始,加上右侧#表示的行数
|
|
|
+ .:当前行
|
|
|
+ $:最后一行
|
|
|
+ %:全文,相当于1,$
|
|
|
+ 使用方法:后跟一个编辑命令
|
|
|
+ d,y,...
|
|
|
+ w /APTH/TO/SOMEWHERE:将范围内的行另存至指定文件中
|
|
|
+ r /APTH/FROM/SOMEWHERE:在指定位置插入指定文件中的所有内容
|
|
|
+ 2.查找:同less命令的查找
|
|
|
+ /PATTERN:从当前光标所在处向文件尾部查找
|
|
|
+ ?PATTERN:从当前光标所在处向文件首部查找
|
|
|
+ n:与查找命令方向相同
|
|
|
+ N:与查找命令方向相反
|
|
|
+ 3.查找并替换:需结合地址定界一起使用
|
|
|
+ s/要查找的内容/替换为的内容/修饰符
|
|
|
+ 要查找的内容:可使用模式
|
|
|
+ 替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用"&"引用前面查找时查找到的整个内容
|
|
|
+ 修饰符:
|
|
|
+ i:忽略大小写
|
|
|
+ g:全局替换,默认情况下,每一行只替换第一次出现的内容
|
|
|
+ c:询问用户是否替换
|
|
|
+ 查找替换中的分隔符/可替换为其他字符,例如
|
|
|
+ s@@@
|
|
|
+ s###
|
|
|
+ 练习:
|
|
|
+ 1.复制/etc/grub2.cfg至/tmp/目录,用直接替换命令删除/tmp/grub2.cfg文件中的行首的空白字符
|
|
|
+ %s/^[[:space:]]\+//g
|
|
|
+ 2.复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
|
|
|
+ %s/^[[:space:]]/#&/
|
|
|
+ 4.多文件模式下的操作:一般窗口没有分割时
|
|
|
+ :next 下一个
|
|
|
+ :prev 前一个
|
|
|
+ :first 第一个
|
|
|
+ :last 最后一个
|
|
|
|
|
|
- :wall 保存所有
|
|
|
- :qall 退出所有
|
|
|
- :wqall 保存退出所有
|
|
|
- 5.获取帮助
|
|
|
- :help
|
|
|
- :help keywords
|
|
|
- 6.执行外部命令
|
|
|
- :! COMMAND 用于执行一个外部命令
|
|
|
- :r ! COMMAND 读取外部命令的输出放到光标处
|
|
|
+ :wall 保存所有
|
|
|
+ :qall 退出所有
|
|
|
+ :wqall 保存退出所有
|
|
|
+ 5.获取帮助
|
|
|
+ :help
|
|
|
+ :help keywords
|
|
|
+ 6.执行外部命令
|
|
|
+ :! COMMAND 用于执行一个外部命令
|
|
|
+ :r ! COMMAND 读取外部命令的输出放到光标处
|
|
|
窗口分割模式:
|
|
|
- 窗口间切换:Ctrl+w,Arrow
|
|
|
- 单文件:
|
|
|
- Ctrl+w,s:split,水平分割
|
|
|
- Ctrl+w,v:vertical,垂直分割
|
|
|
- 多文件:
|
|
|
- vim -o|O FILE1 FILE2 FILE3...
|
|
|
- -o:水平分割
|
|
|
- -O:垂直分割
|
|
|
+ 窗口间切换:Ctrl+w,Arrow
|
|
|
+ 单文件:
|
|
|
+ Ctrl+w,s:split,水平分割
|
|
|
+ Ctrl+w,v:vertical,垂直分割
|
|
|
+ 多文件:
|
|
|
+ vim -o|O FILE1 FILE2 FILE3...
|
|
|
+ -o:水平分割
|
|
|
+ -O:垂直分割
|
|
|
定制vim的工作特性:
|
|
|
- 配置文件:永久有效
|
|
|
- 全局:/etc/vimrc
|
|
|
- 个人(需手动创建该文件):~/.vimrc
|
|
|
- 末行命令:当前vim进程有效
|
|
|
-
|
|
|
- 1.行号
|
|
|
- 显示:set number,简写为set nu
|
|
|
- 取消显示:set nonumber,简写为set nonu
|
|
|
- 2.括号匹配
|
|
|
- 匹配:set showmatch,简写为set sm
|
|
|
- 取消匹配:set noshowmatch,简写为set nosm
|
|
|
- 3.自动缩进(autoindent)
|
|
|
- 启用:set ai
|
|
|
- 禁用:set noai
|
|
|
- 4.高亮(HighLight)搜索
|
|
|
- 启用:set hlsearch
|
|
|
- 禁用:set nohlsearch
|
|
|
- 5.语法(syntax)高亮
|
|
|
- 启用:syntax on
|
|
|
- 禁用:syntax off
|
|
|
- 6.忽略字符大小写(ignorecase)
|
|
|
- 启用:set ic
|
|
|
- 禁用:set noic
|
|
|
+ 配置文件:永久有效
|
|
|
+ 全局:/etc/vimrc
|
|
|
+ 个人(需手动创建该文件):~/.vimrc
|
|
|
+ 末行命令:当前vim进程有效
|
|
|
+
|
|
|
+ 1.行号
|
|
|
+ 显示:set number,简写为set nu
|
|
|
+ 取消显示:set nonumber,简写为set nonu
|
|
|
+ 2.括号匹配
|
|
|
+ 匹配:set showmatch,简写为set sm
|
|
|
+ 取消匹配:set noshowmatch,简写为set nosm
|
|
|
+ 3.自动缩进(autoindent)
|
|
|
+ 启用:set ai
|
|
|
+ 禁用:set noai
|
|
|
+ 4.高亮(HighLight)搜索
|
|
|
+ 启用:set hlsearch
|
|
|
+ 禁用:set nohlsearch
|
|
|
+ 5.语法(syntax)高亮
|
|
|
+ 启用:syntax on
|
|
|
+ 禁用:syntax off
|
|
|
+ 6.忽略字符大小写(ignorecase)
|
|
|
+ 启用:set ic
|
|
|
+ 禁用:set noic
|
|
|
翻屏操作:
|
|
|
- ctrl+f:向文件尾部翻一屏
|
|
|
- ctrl+b:向文件首部翻一屏
|
|
|
- ctrl+d:向文件尾部翻半屏
|
|
|
- ctrl+u:向文件首部翻半屏
|
|
|
+ ctrl+f:向文件尾部翻一屏
|
|
|
+ ctrl+b:向文件首部翻一屏
|
|
|
+ ctrl+d:向文件尾部翻半屏
|
|
|
+ ctrl+u:向文件首部翻半屏
|
|
|
vim自带的练习教程:
|
|
|
- vimtutor
|
|
|
+ vimtutor
|
|
|
```
|
|
|
|
|
|
### ***文件查找***
|
|
|
@@ -1324,9 +1324,9 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
可手动更新数据库(updatedb),与makewhatis类似,索引构建过程中需要遍历整个根文件系统,极消耗资源
|
|
|
-----------------------
|
|
|
工作特点:
|
|
|
- 查找速度快
|
|
|
- 模糊查找:根据整个路径名和文件名
|
|
|
- 非实时查找
|
|
|
+ 查找速度快
|
|
|
+ 模糊查找:根据整个路径名和文件名
|
|
|
+ 非实时查找
|
|
|
```
|
|
|
- 命令格式
|
|
|
```
|
|
|
@@ -1338,78 +1338,78 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
实时查找工具,通过遍历指定路径下的文件系统完成文件查找
|
|
|
-----------------------
|
|
|
工作特点:
|
|
|
- 查找速度略慢
|
|
|
- 精确查找:根据文件本身的名字而非整个路径名
|
|
|
- 实时查找
|
|
|
+ 查找速度略慢
|
|
|
+ 精确查找:根据文件本身的名字而非整个路径名
|
|
|
+ 实时查找
|
|
|
```
|
|
|
- 命令格式
|
|
|
```
|
|
|
~]# find [OPTION]... [查找路径] [查找条件] [处理动作]
|
|
|
- 查找路径:指定具体目标路径,可以多个;默认为当前目录
|
|
|
- 查找条件:指定的查找标准,可以是文件名/大小/类型/权限等标准进行;默认为找出指定路径下的所有文件
|
|
|
- 根据文件名:
|
|
|
- -name "文件名称":支持使用文件名通配(globbing)
|
|
|
- *,?,[],[^]
|
|
|
- -iname "文件名称":不区分字母大小写
|
|
|
+ 查找路径:指定具体目标路径,可以多个;默认为当前目录
|
|
|
+ 查找条件:指定的查找标准,可以是文件名/大小/类型/权限等标准进行;默认为找出指定路径下的所有文件
|
|
|
+ 根据文件名:
|
|
|
+ -name "文件名称":支持使用文件名通配(globbing)
|
|
|
+ *,?,[],[^]
|
|
|
+ -iname "文件名称":不区分字母大小写
|
|
|
|
|
|
- -regex "PATTEN":以PATTE匹配整个文件路径字符串,而不仅仅是文件名称
|
|
|
- 根据属主/属组:
|
|
|
- -user USERNAME:查找属主为指定用户的文件
|
|
|
- -group GROUPNAME:查找属组为指定组的文件
|
|
|
+ -regex "PATTEN":以PATTE匹配整个文件路径字符串,而不仅仅是文件名称
|
|
|
+ 根据属主/属组:
|
|
|
+ -user USERNAME:查找属主为指定用户的文件
|
|
|
+ -group GROUPNAME:查找属组为指定组的文件
|
|
|
|
|
|
- -uid UserID:查找属主为指定UID号的文件
|
|
|
- -gid GroupID:查找属组为指定GID号的文件
|
|
|
+ -uid UserID:查找属主为指定UID号的文件
|
|
|
+ -gid GroupID:查找属组为指定GID号的文件
|
|
|
|
|
|
- -nouser:查找没有属主的文件,如用户删了
|
|
|
- -nogroup:查找没有属组的文件,如用户删了,私有组也没了
|
|
|
- 根据文件类型:
|
|
|
- -type TYPE:
|
|
|
- 可参考ls命令中的各类型代表字符
|
|
|
- 根据文件大小:
|
|
|
- -size [+|-]#UNIT
|
|
|
- 常用单位:K,M,G
|
|
|
+ -nouser:查找没有属主的文件,如用户删了
|
|
|
+ -nogroup:查找没有属组的文件,如用户删了,私有组也没了
|
|
|
+ 根据文件类型:
|
|
|
+ -type TYPE:
|
|
|
+ 可参考ls命令中的各类型代表字符
|
|
|
+ 根据文件大小:
|
|
|
+ -size [+|-]#UNIT
|
|
|
+ 常用单位:K,M,G
|
|
|
|
|
|
- #UNIT:(#-1,#]
|
|
|
- -#UNIT:(0,#-1]
|
|
|
- +#UNIT:(#,无穷大)
|
|
|
- 根据时间戳:
|
|
|
- 以"天"为单位:
|
|
|
- -atime [+|-]#
|
|
|
- #:[#,#+1)
|
|
|
- +#:[#+1,无穷大)
|
|
|
- -#:[0,#)
|
|
|
- -mtime [+|-]#
|
|
|
- -ctime [+|-]#
|
|
|
- 以"分钟"为单位:
|
|
|
- -amin [+|-]#
|
|
|
- -mmin [+|-]#
|
|
|
- -cmin [+|-]#
|
|
|
- 根据权限:
|
|
|
- -perm [/|-]MODE
|
|
|
- MODE:精确权限匹配
|
|
|
- /MODE:任何一类(u,g,o)对象的权限中只要能有一位匹配即可
|
|
|
- -MODE:每一类对象都必须同时拥有为其指定的权限标准
|
|
|
- 组合条件:
|
|
|
- 与:-a,可以省略
|
|
|
- 或:-o
|
|
|
- 非:-not,!
|
|
|
+ #UNIT:(#-1,#]
|
|
|
+ -#UNIT:(0,#-1]
|
|
|
+ +#UNIT:(#,无穷大)
|
|
|
+ 根据时间戳:
|
|
|
+ 以"天"为单位:
|
|
|
+ -atime [+|-]#
|
|
|
+ #:[#,#+1)
|
|
|
+ +#:[#+1,无穷大)
|
|
|
+ -#:[0,#)
|
|
|
+ -mtime [+|-]#
|
|
|
+ -ctime [+|-]#
|
|
|
+ 以"分钟"为单位:
|
|
|
+ -amin [+|-]#
|
|
|
+ -mmin [+|-]#
|
|
|
+ -cmin [+|-]#
|
|
|
+ 根据权限:
|
|
|
+ -perm [/|-]MODE
|
|
|
+ MODE:精确权限匹配
|
|
|
+ /MODE:任何一类(u,g,o)对象的权限中只要能有一位匹配即可
|
|
|
+ -MODE:每一类对象都必须同时拥有为其指定的权限标准
|
|
|
+ 组合条件:
|
|
|
+ 与:-a,可以省略
|
|
|
+ 或:-o
|
|
|
+ 非:-not,!
|
|
|
|
|
|
摩根定律:
|
|
|
!A -a !B 相当于 !(A -o B)
|
|
|
!A -o !B 相当于 !(A -a B)
|
|
|
- 处理动作:对符合条件的文件做什么操作;默认输出至屏幕
|
|
|
- -print:默认的处理动作,显示至屏幕
|
|
|
- -ls:类似于对查找到的文件执行"ls -l"命令
|
|
|
- -delete:删除查找到的文件
|
|
|
- -fls /PATH/TO/SOMEFILE:查找到的所有文件的长格式信息保存至指定文件中
|
|
|
- -ok COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令
|
|
|
- 对于每个文件执行命令之前,都会交互式要求用户确认
|
|
|
- -exec COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令,不会要求用户确认
|
|
|
- {}:用于引用查找到的文件名称自身
|
|
|
+ 处理动作:对符合条件的文件做什么操作;默认输出至屏幕
|
|
|
+ -print:默认的处理动作,显示至屏幕
|
|
|
+ -ls:类似于对查找到的文件执行"ls -l"命令
|
|
|
+ -delete:删除查找到的文件
|
|
|
+ -fls /PATH/TO/SOMEFILE:查找到的所有文件的长格式信息保存至指定文件中
|
|
|
+ -ok COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令
|
|
|
+ 对于每个文件执行命令之前,都会交互式要求用户确认
|
|
|
+ -exec COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令,不会要求用户确认
|
|
|
+ {}:用于引用查找到的文件名称自身
|
|
|
|
|
|
- 注:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件会一次性传递个后面的命令,
|
|
|
- 有些命令不能接受过多参数,此时命令可能会失败,另一种方式可规避此问题:
|
|
|
- find | xargs COMMAND
|
|
|
+ 注:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件会一次性传递个后面的命令,
|
|
|
+ 有些命令不能接受过多参数,此时命令可能会失败,另一种方式可规避此问题:
|
|
|
+ find | xargs COMMAND
|
|
|
```
|
|
|
- 命令实例
|
|
|
```
|
|
|
@@ -1444,7 +1444,7 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
作用:根据用户指定的"模式"对目标文本逐行进行匹配检查,并打印匹配到的行
|
|
|
-----------------------
|
|
|
egrep:默认支持扩展正则表达式来匹配
|
|
|
- fgrep:不支持正则表达式搜索(即不基于正则表达式引擎做模式匹配),而仅仅是找给定的字符串,因此执行性能快很多
|
|
|
+ fgrep:不支持正则表达式搜索(即不基于正则表达式引擎做模式匹配),而仅仅是找给定的字符串,因此执行性能快很多
|
|
|
```
|
|
|
- 命令格式
|
|
|
```
|
|
|
@@ -1467,43 +1467,43 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
- 常用操作
|
|
|
```
|
|
|
模式:由正则表达式字符及文本字符所编写的过滤条件
|
|
|
- 基本正则表达式:BRE
|
|
|
- 元字符:
|
|
|
- 字符匹配:
|
|
|
- .:匹配任意单个字符
|
|
|
- []:匹配指定范围内的任意单个字符
|
|
|
- [^]:匹配指定范围外的任意单个字符
|
|
|
- 次数匹配:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
|
|
|
- \?:0或1次
|
|
|
- *:0或多次(任意次)
|
|
|
- \+:1次或多次
|
|
|
- \{m\}:恰好m次
|
|
|
- \{m,n\}:最少m次,最多n次
|
|
|
- \{0,n\}:最多n次
|
|
|
- \{m,\}:最少m次
|
|
|
- 位置锚定:
|
|
|
- ^:行首锚定,用于模式的最左侧
|
|
|
- $:行尾锚定,用于模式的最右侧
|
|
|
- ^PATTERN$:用于模式匹配整行
|
|
|
- ^$:空行(不包括空白字符)
|
|
|
- ^[[:space:]]*$:
|
|
|
- \<或\b:词首锚定,用于单词模式的左侧
|
|
|
- \>或\b:词尾锚定,用于单词模式的右侧
|
|
|
- \<PATTERN\>:匹配整个单词
|
|
|
- 分组:
|
|
|
- \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
|
|
|
- 注:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部(greb程序)的变量中,这些变量的命名方式为\1,\2,\3,...
|
|
|
- \1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
|
|
|
+ 基本正则表达式:BRE
|
|
|
+ 元字符:
|
|
|
+ 字符匹配:
|
|
|
+ .:匹配任意单个字符
|
|
|
+ []:匹配指定范围内的任意单个字符
|
|
|
+ [^]:匹配指定范围外的任意单个字符
|
|
|
+ 次数匹配:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
|
|
|
+ \?:0或1次
|
|
|
+ *:0或多次(任意次)
|
|
|
+ \+:1次或多次
|
|
|
+ \{m\}:恰好m次
|
|
|
+ \{m,n\}:最少m次,最多n次
|
|
|
+ \{0,n\}:最多n次
|
|
|
+ \{m,\}:最少m次
|
|
|
+ 位置锚定:
|
|
|
+ ^:行首锚定,用于模式的最左侧
|
|
|
+ $:行尾锚定,用于模式的最右侧
|
|
|
+ ^PATTERN$:用于模式匹配整行
|
|
|
+ ^$:空行(不包括空白字符)
|
|
|
+ ^[[:space:]]*$:
|
|
|
+ \<或\b:词首锚定,用于单词模式的左侧
|
|
|
+ \>或\b:词尾锚定,用于单词模式的右侧
|
|
|
+ \<PATTERN\>:匹配整个单词
|
|
|
+ 分组:
|
|
|
+ \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
|
|
|
+ 注:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部(greb程序)的变量中,这些变量的命名方式为\1,\2,\3,...
|
|
|
+ \1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
|
|
|
|
|
|
- 后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
|
|
|
- ~]# grep '\([[:alpha:]]\{1,3\}t\).*\1' /etc/passwd
|
|
|
- 扩展正则表达式:ERE
|
|
|
- 元字符:
|
|
|
- 字符匹配,次数匹配,位置锚定,分组:
|
|
|
- 同BRE,其中?,+,{},()不需要转义
|
|
|
- 或者:
|
|
|
- a|b
|
|
|
- C|cat:C或cat
|
|
|
+ 后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
|
|
|
+ ~]# grep '\([[:alpha:]]\{1,3\}t\).*\1' /etc/passwd
|
|
|
+ 扩展正则表达式:ERE
|
|
|
+ 元字符:
|
|
|
+ 字符匹配,次数匹配,位置锚定,分组:
|
|
|
+ 同BRE,其中?,+,{},()不需要转义
|
|
|
+ 或者:
|
|
|
+ a|b
|
|
|
+ C|cat:C或cat
|
|
|
```
|
|
|
- 命令实例
|
|
|
```
|
|
|
@@ -1516,9 +1516,9 @@ Linux系统启动时从硬件时钟读取日期和时间信息,读取完成以
|
|
|
练习4:找出/etc/passwd中的两位或三位数
|
|
|
~]# grep '\<[0-9]\{2,3\}\>' /etc/passwd
|
|
|
练习5:显示/etc/grub2.cfg(或conf)文件中,至少以一个空白字符开头的行且后面存在非空白字符的行
|
|
|
- ~]# grep '^[[:space:]]\+[^[:space:]]' /etc/grub2.cfg
|
|
|
+ ~]# grep '^[[:space:]]\+[^[:space:]]' /etc/grub2.cfg
|
|
|
练习6:找出"netstat -tan"命令的结果中以"LISTEN"后跟0,1或多个空白字符结尾的行
|
|
|
- ~]# netstat -tan | grep 'LISTEN[[:space:]]*$'
|
|
|
+ ~]# netstat -tan | grep 'LISTEN[[:space:]]*$'
|
|
|
练习7:添加用户bash,testbash,basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行
|
|
|
~]# grep '^\([[:alnum:]]\+\>\).*\1$' /etc/passwd
|
|
|
------------------------------------
|