总结:
两大部分:
1.回顾昨天内容
2.今天新学的内容
1.回顾昨天内容
1>用户管理和权限管理
2>通配符
3>重定向
1>用户管理和权限管理
useradd/usermod/userdel/groupadd/groupmod/groupdel/passwd/gpasswd/chmod/chown/id/su
passwd -e 设置用户过期期限 chage 修改密码过期时间
useradd:创建用户
-d -------指定家目录
-c --------注释
-r -------指定程序用户
-m -------创建家目录
-M -------不创建家目录
-u ------uid
-s ------shell(/bin/bash /sbin/nologin)
-g -----gid
-G ------属组
usermod:
-U(解锁用户密码)
-d 修改用户家目录
-e 设置用户密码的过期时间
-g gid
-G GROUP
-l 新的用户登录名 # usermod -l keke test01
-L 用户锁定
-s /bin/bash ....
-u uid
-U 解锁
passwd:
-d(删除用户密码)
-e(设置用户过期期限)
chmod :
chown --修改文件的拥有者/属组/其它用户的权限
chown [-R] <username>.<group> /<path>/filename
chown <username>:<group> /<path>/filename
chown <username> /<path>/filename>
chown :<group> /<path>/filename
chown -R alex:alex alex/
chonw alex.alex alex/
chgrp 更改文件或者目录的工作组所有权
chgrp -R groupname filename
chgrp kk alex
drwxr-xr-x 2 root kk 4096 Apr 14 06:09 alex
[[email protected] tmp]# chown .kiki xx -- 改变所属组(chgrp kiki xx)
[[email protected] tmp]# chown kiki. xx ---改变所有属性 (chown kiki:kki xx)
? ? ? install:复制文件并设置文件属性
? install anaconda-ks.cfg -m 633 anaconda.new :复制anaconda文件为anaconda.new,并设置其权限
? -o:指定属主
? -g:指定属组
? -d:创建目录
? install -d data:创建data目录,类似与mkdir
2>通配符
通配符:
* --匹配一个或者任意多个字符,也就是*代表所有
? --匹配一个字符
$ --引用变量
? *:匹配任意长度的任意字符,可以一个都没有
? ?:匹配任意单个字符,必须有一个
? [ ]:匹配指定范围内的单个字符
? [^]:匹配指定范围外的任意当个字符
? [^[0-9]]或[^0-9]:表示匹配数字外的任意字符
? [^[:upper:]]:表示匹配大写字母外的任意字符
? pa[0-9]: pa后面匹配一个数字
? [a-z], [A-Z] [0-9] [a-z0-9] [abdxy]
? pa[0-9]: pa后面匹配一个数字
? pa[0-9][0-9]: pa后面匹配两个数字
? [[:upper:]]:表示所有大写字母
? [[:lower:]]:表示所有小写字母
? [[:alpha:]]:表示所有字母
? [[:digit:]]:表示所有数字
? [[:alnum:]]:表示所有的字母和数字
? [[:space:]]:表示所有的空白字符
? [[:punct:]]:表示所有的标点符号
2.今天新学的内容
1》grep 工具
? 使用格式:grep [选项] 匹配模式 file对象
? 选项说明:
? –color=auto:对匹配到的文本着色,高亮显示
? -i:忽略字符大小写
? -o:仅显示匹配到的字符串本身
? -v:方向匹配,匹配到的文本行不显示,不能匹配到的行显示
? -E:表示支持使用扩展的正则表达式,等同于egrep
? -q:静默模式,不输出任何信息到标准输出
? -A(after):显示匹配到的行和其后面的行,给一个数字
? grep -A 1 root /etc/passwd
? -B(before):显示匹配到的行和其前面的行,给一个数字
? grep -B 1 root /etc/passwd
? -C(center):显示匹配到的行和其前后的行,给一个数字
? grep -C 1 root /etc/passwd
^key:以什么开头
key$:以什么结尾
- 字符匹配
. :匹配任意单个字符[ ]:匹配指定范围内的任意单个字符[^ ]:匹配指定范围外的任意当个字符 [[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:punct:]] [[:space:]]
- 匹配次数
用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数,默认为贪婪模式 *:表示匹配其前面的字符任意次,0,1,多次 例如:grep “x*y”.*:匹配任意长度的任意字符\?:匹配其前面的字符0次或一次,即其前面的字符是可有可无的\+:匹配其前面的字符一次或多次,即其前面的字符要出现至少一次\{m\}:精确匹配到其前面字符的m次\{m,n\}:匹配其前面的字符至少m次,至多n次 \{0,n\}:至多n次\{m,\}:至少m次
- 位置锚定
^:行首锚定,用于模式的最左边$:行尾锚定,用于模式的最右边^pattern$:用于pattern来匹配整行 ^$:空白行^[[:space:]]$:空行或空白字符的行单词:非特殊字符组成的连续字符都称为单词\< 或 \b:词首锚定,用于单词模式的左侧\> 或 \b:词尾锚定,用于单词模式的右侧\<pattern\>:匹配完整单词
egrep
支持扩展的正则表达式实现类似于grep文本过滤功能:grep -E-o , -i , -v , -q , -A , -B , -C ,-G:表示支持基本正则表达式扩展正则表达式的元字符
1:字符匹配 . :匹配任意单个字符[ ]:匹配指定范围内的任意单个字符[^ ]:匹配指定范围外的任意当个字符 [[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:punct:]] [[:space:]]
2:次数匹配 *:任意次,0,1或多次?:0次或1次,其前的字符是可有可无的+:其前字符至少1次{m}:其前的字符m次{m,n}:至少m次,至多n次 {0,n}{m,}
3:位置锚定 ^:行首锚定$:行尾锚定\< 或 \b:词首锚定,用于单词模式的左侧\> 或 \b:词尾锚定,用于单词模式的右侧
4:分组及引用 (分组和引用,也就搞定了Python的正则表达式)( ):分组,括号内的模式匹配到的字符会被记录到正则表达式引擎的内部变量中后向引用:/1, /2[[email protected]7 yhy2]# cat yhywo love woni love nita love ta egrep "(w.).*\1" yhy wo love wo
a | b:表示a或者b ---> grep "a|b" yhyc|Cat:c或者cat(c|C)at:cat或者Cat
2diff和patch,sort
sort工具: 排序,将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
-u :去除重复行
-r :降序排列,默认是升序
-o :将排序结果输出到文件中
-n :以数字排序,默认是按字符排序
-t :分隔符
-k :第N列
-b :忽略前导空格。
-R :随机排序,每次运行的结果均不同。
diff 比较文件的差异
1、正常格式(normal diff)
2、上下文格式(context diff) -c参数
3、合并格式(unified diff) -u参数
-i:忽略大小写
-B:忽略空行
-b:忽略空格
3>vim
三种模式
命令模式
iIaAoO|ESC / \:|ESC
输入模式 末行模式
1.命令模式():
yy 3yy shift+6 shift+4 p/P
复制一行 3行 光标行首 光标行尾 行后粘貼/行前粘貼
dd 3dd HOME END
u(undo) --撤消
yw 选定光标所在行复制
行内快跳:home/end 或 shift+^ shift+$
行间快跳:gg:跳到第一行 G:跳到最后一行
10gg:跳到10行
删除,复制,粘贴
x 向后删除一个字符 = delete
X 往前删除一个字符 =
--dd 直接删除光标所在行 ndd (n代表数字,删除n行)
--yy 复制光标所在行 nyy (n代表数字,复制n行)
--p 粘贴
--u 回退上一次操作 按一次u只能回退一次
移动相关:
--ctrl+b 向上翻页 = page up
--ctrl+f 向下翻页 = page down
ctrl+d 向下移动半页
ctrl+u 向上移动半页
--G 移动到页末 =shift +g
--gg 移动到页头
--0 移动到行头 = home
--$ 移动到行末 = end
n(代表数字)+回车 向下移动N行
h 左<--
l 右-->
k 上
j 下
2.模式行模式:
命令模式-(:)->末行模式
查找:/关键字,向下匹配按n,向上匹配按N
?关键字,反向查找
:set number [set nu] --设置编码 (set nonumber)
# vim /etc/vimrc
set number --在一个空白的地方加上(不要加到代码段里去了),以后使用vim打开任意文件,都会自动显示行号
:w --保存
:wq --保存退出
:wq! -- 强制保存退出
:q! --不保存退出
:e! -可以撤消所有的修改至打开文件的
:w /tmp/a.txt --另存为 强制保存 w! /tmp/a.txt
:1,10w /tmp/b.txt --1到10行另存为
:r /etc/passwd --从另一个文件中read入
:%s/root/ROOT --在整个文件中搜索每一行的第一个this替换that
:%s/root/ROOT/g --在整个文件中搜索每一行this替换that
:%s/this/that/gc
:%s#/sbin/nologin#/xbin/login#g
10,20s#/bin/bash#/sbin/nologin#
--在整个文件中搜索每一行this替换that,每一个都需要确认
3.输入模式:
命令模式-(iIaAoO)->输入模式
i --在当前光标处进入输入模式
I --在行首进入输入模式
a --在当前光标的后一个位进入输入模式
A --在当前行末进入输入模式
o --在当前光标的下一行插入空行并进入输入模式
O --在当前光标的上一行插入空行并进入输入模式
r --替换光标所在的字符
R --从光标处向后一直替换
总结:打开文件-->命令模式-(iIaAoO)-->输入模式(输入用户自定义内容)-(ESC)->命令模式-(:)->末行模式-(:wq)-》保存退出
vim -o /tmp/a.txt /tmp/b.txt ...
vim -O /tmp/a.txt /tmp/b.txt ... 切换ctrl+ww
--当两个终端同时打开的话,会产生一个.swap文件
如:你打开/tmp/passwd文件,会产生/tmp/.passwd.swap
解决方法是:直接删除掉它就可以了
rm /tmp/.passwd.swp