用户管理:
useradd
指定用户家目录 -d
创建系统用户 -r(redhat)
指定shell -s
不创建家目录 -M
权限管理
chmod 给用户添加权限 #chmod 755 user
chown 设置文件或目录的所有者和所属的组,只有文件主和 root用户才能使用该命
令。该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变所属的
组。
su - 用户 登陆时切换,切换env
su 用户 登录时不切换 env
例: 不切换用户,以目标用户执行命令
[root@momo01 ~]# su - yhy -c "whoami"
yhy
[root@momo01 ~]# whoami
root
chown -R user1.user1 /home/user1 修改用户的属主
例:思考题
删除yhy用户家目录,如何还原(root用户重新创建yhy的家目录,拷贝/etc/skel/.bash* 的三个文件到/home/yhy/下即可)
[root@momo01 ~]# useradd yhy
[root@momo01 ~]# rm -fr /home/yhy
[root@momo01 ~]# su - yhy
su: 警告:无法切换到目录/home/yhy: 没有那个文件或目录
[root@momo01 ~]# mkdir /home/yhy
[root@momo01 ~]# ll /etc/skel/.bash*
[root@momo01 ~]# cp -a /etc/skel/.bash* /home/yhy
cp:是否覆盖"/home/yhy/.bash_logout"? y
cp:是否覆盖"/home/yhy/.bash_profile"? y
cp:是否覆盖"/home/yhy/.bashrc"? y
[root@momo01 ~]# ll -a /home/yhy
总用量 20
drwxr-xr-x. 2 yhy yhy 4096 8月 10 13:20 .
drwxr-xr-x. 4 root root 4096 8月 10 10:50 ..
-rw-r--r--. 1 root root 18 7月 9 2013 .bash_logout
-rw-r--r--. 1 root root 176 7月 9 2013 .bash_profile
-rw-r--r--. 1 root root 124 7月 9 2013 .bashrc
[root@momo01 ~]# chown -R yhy.yhy /home/yhy
[root@momo01 ~]# ll -a /home/yhy
总用量 20
drwxr-xr-x. 2 yhy yhy 4096 8月 10 13:20 .
drwxr-xr-x. 4 root root 4096 8月 10 10:50 ..
-rw-r--r--. 1 yhy yhy 18 7月 9 2013 .bash_logout
-rw-r--r--. 1 yhy yhy 176 7月 9 2013 .bash_profile
-rw-r--r--. 1 yhy yhy 124 7月 9 2013 .bashrc
umask 权限遮罩码 022
install 复制文件并设置文件属性 跟copy一样,但可以指定属主和属组以及权限
#install 1.txt -m 755 1.txt.new 将文件1.txt复制到文件
1.txt.new并设置755的权限
设定文件的属主 -o (只适用于root用户)
设定文件所属组 -p (自行设定所属组,而不是进程目前的所属组)
创建目录 -d (#install -d data 与mkdir相似)
通配符
假设某个目录中有以下几个文件 file1.sh,file2.sh ,file3.sh...file12.sh ,file.txt
* 匹配0个或多个任意字符 rm file*.sh 匹配file.1.2...12, 但不匹配file.txt
rm file1*.sh 匹配10、11、12
rm * 匹配所有的文件
? 匹配单个字符 rm file1?.sh 匹配10、11、12
rm file?.sh 匹配1、2、...8、9
rm file?.* 匹配1、2、...8 、9以及file.txt
[] 匹配一组单个字符,或者匹配用连字符(-)指定的某一范围内的字符
rm file1[12].sh 匹配到 11、12
rm file1[0-2].sh 匹配 10、11、12
rm file[12].sh 匹配到 12
[^] 匹配指定范围外的任意单个字符
rm file1[^2] 匹配到 10、11
grep文本处理工具 是一个文本过滤工具,基于正则表达式进行模式匹配
使用格式:grep [选项] 匹配模式 file对象
选项说明:
–color=auto:对匹配到的文本着色,高亮显示 [root@momo01 ~]# alias
[root@momo01 ~]# alias grep='grep --color=auto'
[root@momo01 ~]# ls /etc/ |grep yum
-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
字符匹配
. :匹配任意单个字符
[ ]:匹配指定范围内的任意单个字符
[^ ]:匹配指定范围外的任意当个字符
匹配次数 用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数,默认为贪婪模式
*:表示匹配其前面的字符任意次,0,1,多次
.*:匹配任意长度的任意字符
\?:匹配其前面的字符0次或一次,即其前面的字符是可有可无的
\+:匹配其前面的字符一次或多次,即其前面的字符要出现至少一次
\{m\}:精确匹配到其前面字符的m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置锚定
^:行首锚定,用于模式的最左边
$:行尾锚定,用于模式的最右边
^pattern$:用于pattern来匹配整行
^$:空白行
^[[:space:]]$:空行或空白字符的行
单词:非特殊字符组成的连续字符都称为单词
\< 或 \b:词首锚定,用于单词模式的左侧
\> 或 \b:词尾锚定,用于单词模式的右侧
\
:匹配完整单词
egrep egrep==grep -E 使用扩展正则表达式做模式匹配
扩展正则表达式的元字符
1:字符匹配
. :匹配任意单个字符
[ ]:匹配指定范围内的任意单个字符
[^ ]:匹配指定范围外的任意当个字符
[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]]
[[:punct:]] [[:space:]]
2:次数匹配
*:任意次,0,1或多次
?:0次或1次,其前的字符是可有可无的
+:其前字符至少1次
{m}:其前的字符m次
{m,n}:至少m次,至多n次
{0,n}
3:位置锚定
^:行首锚定
$:行尾锚定
\< 或 \b:词首锚定,用于单词模式的左侧
\> 或 \b:词尾锚定,用于单词模式的右侧
4:分组及引用 (分组和引用,也就搞定了Python的正则表达式)
( ):分组,括号内的模式匹配到的字符会被记录到正则表达式引擎的内部变量中后向引用:/1, /2
[root@7 yhy2]# cat yhy
wo love wo
ni love ni
ta love ta
[root@7 yhy2]# egrep "(w.).*\1" yhy
wo love wo
a | b:表示a或者b ---> grep "a|b" yhy
c|Cat:c或者cat
(c|C)at:cat或者Cat
attern 图案,模式
例: 1:显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v “/bin/bash” /etc/passwd
2:找出/etc/passwd文件中的两位数或三位数的行
egrep “[0-9]{2,3}” /etc/passwd
3:找出/etc/rc.d/rc.sysinit(centos 6)或/etc/grub2.cfg(centos 7)文件
中,以至少一个空白字符开头,且后面有非空白字符的行
grep “^[[:space:]]+[^[:space:]]+” /etc/grub2.cfg
4:找出”netstat -tan”命令的结果中以’LISTEN’后跟0、1或多个空白字符结尾的行
netstat -tan | grep “LISTEN[[:space:]]*$”
sort命令 sort排序是在内存中进行排序的,默认的排序规则是将文件的内容基于行的首字符进行排序,
如果第一个字符相同,那么就比较第二个字符,以此类推,实现快速排序
格式: sort [选项] 文件名
常用的选项
-t:指定字段分隔符,便于指定排序的字段
-k:用于排序比较的字段
sort -t: -k3 -n /etc/passwd 基于用户的uid的大小进行排序
-n:基于数值大小排序
cut -d: -f3 /etc/passwd | sort 按字符进行排序
cut -d: -f3 /etc/passwd | sort -n 按数值大小进行排序
-r:逆序进行排序
sort -t: -k3 -n -r /etc/passwd
-f:忽略字符大小写 (这里是由于ASCII码的原因, 因为A的ASCII码
为:65,a的ASCII码为97 )
-u:重复的行只保留一份
diff 和 patch 命令
diff:逐行比较文件的不同,并且显示出来。
patch: 打补丁工具,将补丁打到老文件里面,也就是diff左边的那个文件,使得老文件和新文件一样
格式:diff [选项] 老文件 新文件
格式:patch [选项] 老文件
vim 编辑器
末行模式
地址定界
.: 当前行
$:最后一行
m,n:指定行范围,左侧为起始行
n,n+:指定行范围,右侧为左侧行的偏移量 ,例如:3,+7
%:全文
/pattern/:第一次被模式所匹配到的行
查找并替换
格式:地址地接符s/要查找的内容/替换为的内容/修饰符
要查找的内容:可以使用正则表达式
替换为的内容:不能使用正则表达式,但是可以引用
如果使用了分组,也就是在要查找的内容中使用了( )话,可以使用后向引用, \1表示
引用第一个括号匹配的内容, \2表示第二个括号匹配的内容,也可以直接引用查找模式
匹配到的整个文本,直接使用匹配模式的全部文本:用&符号引用整个模式匹配到的文本
1 . 复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符
:%s/^[[:space:]]\+//
2 :复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每一个空白字符开头的行的首行加上#
:%s/^[[:spade:]]\+/\#&/
3 . 为/tmp/grub2.cfg文件的前三行的行首加上#号
:1,3s/^./\#&/
4 . 将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为ennabled=1,所有的gpgcheck=0替换为gpgcheck=1
:%s/\(enabled\|gpgcheck\)=0/\1=1/
vim编辑器
编辑模式 输入模式 末行模式
末行模式 :.,$ d 从当前行到最后一行删掉
模式匹配系统默认之匹配一个,如何全文匹配?