普通用户是 1-65535
系统用户是 1~499 (centos6) 1~999(centos7)
普通登入用户500~60000 1000~60000
su - user 切换了env 登录式切换
su user 不会切换env 非登录式切换
env 环境变量
su - user -c “命令” 切换user用户来执行它的命令
用户
useradd 用户的添加
-u 指定uid
-g 指定gid
-G 指定附加组
-M 不创建家目录
-m 移动目录内容到路径里和-d一起使用
-d 指定用户的家目录
-s 指定用户的默认shell
-c 注释说明
-L 锁定用户的密码
-U 解锁用户
-r 创建系统用户
usermod 修改用户属性
userdel 删除用户信息
组
groupadd
groupmod
groupdel
权限
chmod 修改权限
r 对应数字4 读
w 对应数字2 写
x 对应数字1 执行
umask 权限遮罩码
粗俗点就是临时修改权限,后面再深入了解
可查看当前的umask 有的系统有4位 默认读后3位
install 复制文件并设置文件属性
install 相当于 cp 可指定文件属组属主 权限 文件属性
install abc.old -m 633 abc.new 复制abc.old 为文件adc.new 并设置权限为633
-o 指定属主
-g指定属组
-d创建目录 类似于mkdir
chwon修改文件属主 属组 (属性)
通配符
通配符是模糊匹配的基础,用于方便查找文件
* : 匹配任意长度的任意字符 可以是0个或多个
? :匹配任意单个字符,必须有一个
[ ] :匹配指定范围内的单个字符
[^] :匹配指定范围外的任意单个字符
[^[0-9]] :或[^0-9] 表示匹配数字外的任意字符
[^[:upper:]] : 表示匹配大写字母外的任意字符
pa[0-9] :pa后面匹配一个数字
[[:punct:]] :表示所有的标点符号
[[:space:]] :表示所有的空白字符
[[:alnum:]]:表示所有的字母和数字
[[:digit:]] :表示所有数字
[[:alpha:]] :表示所有字母
[[:lower:]] :表示所有小写字母
[[:upper:]] :表示所有大写字母
重定向
> 覆盖
>> 追加
&>,&>> 错误正确一起重定向
0标准输入
1正确输出 > 与 1> 相同
2错误输出 2>
grep
grep是一款文本过滤工具,基于正则表达式进行模式匹配
/*(三大文本处理器 :grep sed awk)
sed :stream editor 流编辑器
awk :linux上实现为gawk ,文本报告生成器(格式化文本)
*/
格式:grep [选项] 匹配模式 filename 匹配模式:指匹配的东西
grep “abc” /home/passwd 查找/home/passwd 中 包含abd所在行的内容
grep -e ==egroup 表示使用扩展的正则表达式
-A(after) 显示匹配到的行和其它后面的行,给一个数字
grep -A 1 root /etc/passwd
-B(before)显示匹配到的行和其前面的行,给一个数字
-C(center)显示匹配到的行和其前后的行,给一个数字
字符匹配
. : 匹配任意字符
[ ]:匹配指定范围内的单个字符
[^] :匹配指定范围外的任意单个字符
与通配符结合使用
[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:punct:]] [[:space:]]
匹配次数
用在要指定器出现的次数的字符后面,用于限制其前面字符出现的次数,默认是贪婪模式(.*)
.* :匹配任意长度的字符
\?:匹配其前面的字符0次或一次,即其前面的字符是可有可无的
\+:匹配其前面的字符一次或多次,即其前面的字符要出现至少一次
\{m\}:精确匹配到其前面字符的m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置锚定
^: 行首锚定,用于模式的最左边
$: 行尾锚定,用于模式的最右边
^pattern$:用于pattern来匹配整行 (pattern:模式)
^$:空白行 (什么都没匹配所有是空白行)
^[[:space:]]$:空行或空白字符的行
单词:非特殊字符组成的连续字符都称为单词
\< 或 \b:词首锚定,用于单词模式的左侧
\> 或 \b:词尾锚定,用于单词模式的右侧 (对于egrep来说 只有 > < 才用转译符"\" 其他都可以不用转译符)
\<pattern\>:匹配完整单词
egrep
egrep == grep -e 基于扩展的正则表达式做模式匹配
与grep用法类似 只不过大部分不用加“\”转译符(除了 ">" " <")
1:字符匹配
. :匹配任意单个字符
[ ]:匹配指定范围内的任意单个字符
[^ ]:匹配指定范围外的任意当个字符
[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:punct:]] [[:space:]]
次数匹配
*:任意次,0,1或多次
?:0次或1次,其前的字符是可有可无的
+:其前字符至少1次
{m}:其前的字符m次
{m,n}:至少m次,至多n次
{0,n}
{m,}
位置锚定
^:行首锚定
$:行尾锚定
\< 或 \b:词首锚定,用于单词模式的左侧
\> 或 \b:词尾锚定,用于单词模式的右侧
分组及引用
() :分组 括号内的模式匹配到的字符会被记录到正则表达式引擎的内部变量
后向引用:/1,/2 分别是取第一组和第二组
a | b 表示 a或b C|cat表示 C或cat (C|c)at表示 Cat或cat
sort 排序
格式 : sort [选项] 文件名
用法同cut相同
sort /etc/passwd 表示将所有的用户从a到z进行排序(文件中每行第一个字母排序)
diff 和patch命令-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:重复的行只保留一份
sort -t: -k7 -u /etc/passwd
diff:比较文件的不同(逐行的比较)显示出来
举个例子来说文件A和文件B,经过diff之后生成了补丁文件C,那么着个过程相当于A -B = C ,那么patch的过程就是B+C= A或A-C =B。
patch; 打补丁工具 将补丁打到老文件中 使得老文件和新文件一样
格式:diff [选项] 老文件 新文件
格式:patch [选项] 老文件
vim编辑器
底行模式
1)地址定界
:start_pos[,end_pos]
#: 特定的第#行,例如5 为第五行
.: 当前行
$:最后一行
#,#:指定行范围,左侧为起始行
#,#+:指定行范围,右侧为左侧行的偏移量 ,例如:3,+7
%:全文
/pattern/:第一次被模式所匹配到的行
2:可实现编辑操作 ,同编辑命令一同使用
d:表示直接删除,要求直接跟在地址定界符号的后面, 例如::.,$d 表示当前行到最后一行删除。
y:用来复制地址定界匹配到的行
c:用来修改地址定界匹配到的行
w /path/to/file :将范围内的文本保存至文件中
r /path/to/file:将指定的文件的文本插入指定位置
3:查找
/pattern:查找模式匹配到的所有字符串,向下查找, 然后在键盘上按n键会继续向下匹配
?pattern: 查找模式匹配到的所有字符串,向上查找,然后在键盘上按n键会继续向上匹配
4:查找并替换(极其重要)
(1)格式:地址地接符s/要查找的内容/替换为的内容/修饰符
要查找的内容:可以使用正则表达式
替换为的内容:不能使用正则表达式,但是可以引用
如果使用了分组,也就是在要查找的内容中使用了( )话,可以使用后向引用,
\1表示引用第一个括号匹配的内容, \2表示第二个括号匹配的内容, \3表示第三个括号匹配的内容
也可以直接引用查找模式匹配到的整个文本,直接使用匹配模式的全部文本:用&符号引用整个模式匹配到的文本
(2)修饰符
i:忽略大小写
g:全局替换,也就是如果不加g的话,那么只是一行匹配一个,如果第二个被匹配了也不会被替换,如果加了g,那么一行中无论匹配到多少个都会被替换
(3)可把分隔符替换为非常用的字符
例如:s@@@
s###
有关例子
用查找替换命令为/tmp/functions文件的每一个空白字符开头的行的首行加上#
:%s/^[[:space:]]/\#&/g
将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为ennabled=1,所有的gpgcheck=0替换为gpgcheck=1
:%s/\(enabled\|gpgcheck\)=0/\1=1/g