关于Linux,用户,组,权限,文本处理工具,正则表达式,vim文本编辑器

一、 用户

??在Linux系统中,可以创建多个用户,每一个用户都有一个与其对应的ID号,就像每一个人都有一个×××号一样,这就是用户的UID,
??在Linux中管理员 root的默认UID为0,普通用户为1-65535,而普通用户又分为系统用户和登录用户,系统用户是不可登录的,对守护进程获取资源进行权限分配使用,其默认UID是1-499(在centos7中是1-1000),普通用户的UID为500-65535(centos7中为1000-65535)

?1、 用户及其属性信息

??/etc/passwd

???例:root:x:0:0:root:/root:/bin/bash
????以:分隔
????root 用户名(普通用户或系统用户或组名)
????x 用户的密码(映射到etc/shadow)
????0 UID 用户的ID号
????0 GID用户所属组的ID号(主组,私有组)
????root 用户所属组组名
?? ? ?/root 用户的家目录
?? ? ?/bash 用户的登录shell(/bash:表示可登录用户,/nologin:表示不可登录用户)
?? /etc/shadow
??root:$6$4a0qWypn588Lf5ey$pCPLZaQa0bt/SEUnWVczNwxlA1xsjW2UrPnjsS2RXumSqDUtJaNe.qB7oNoGEI.zZmFt/644AmKLV.yB4Rs6L/:17540:0:99999:7:::
?? 以:分隔
?? Root:用户名
??6 : sha512加密
??4a0qWypn588Lf5ey:加密算法数据
??pCPLZaQa0bt/SEUnWVczNwxlA1xsjW2UrPnjsS2RXumSqDUtJaNe.qB7oNoGEI.zZmFt/644AmKLV.yB4Rs6L/:这一串字符是加密后的数据
? ?17540:从1970年1月1日起到密码最近一次被更改的时间
? ? 0:密码再过几天可以被变更,0表示随时可被变更
? ?99999:密码再过几天必须被变更,99999表示永不过期
? ?7:密码过期前几天系统提醒用户,默认是7天,一周
? ?倒数第三位:密码过期几天后被锁定
? ?倒数第二位:从1970年1月1日算起,多少天后账号失效
? ?最后一位:为扩展而有的,目前没意义

?2、 用户管理命令

??1.用户创建:useradd(adduser)

???语法:useradd 选项 参数 用户名
????-u UID :指定uid默认从1000开始往后
????-o :与 -u 配合,不检查UID的唯一性(用于所创建的用户UID已被使用的情况下)
????-g GID或组名: 指定用户的主要组为某个已存在的组,可以指定GID也可以指定组名
????-G :指定附加组 以逗号为间隔可以同时指定多个,组必须事先存在,可以指定GID也可以指定组名。
????-c “...”:注释信息
????-d 用户家目录:指定用户家目录,如不指定默认在/home下与用户同名。指定时注意,目录名需已存在,基名不存在。
????-s shell:指定登录shell如下
????useradd -s /sbin/nologin test 创建shell为不可交互式登录的用户
????-N :不创建私用组做主组,默认使用UID为100的组为主组
????-r :创建系统用户 (centos 6及之前的版本 < 500, centos 7 < 1000)

??2.用户密码的修改passwd

???语法:passwd 选项 (用户名指定要修改密码的用户名,仅在root运行时,不用输入原密码,可直接更改,)
??? ?-l 锁定用户 实际就是在密码位前加!!
??? ?-u 取消用户锁定
??? ?-e 强制用户下次登录时更改密码
??? ?-n mindays: 指定最短使用期限
??? ?-x maxdays:最大使用期限
??? ?-w warndays:提前多少天开始警告
??? ?-i inactivedays:非活动期限
??? ?--stdin 从标准输入接收用户密码

??3.更改密码的默认设置

?? ?chage 选项 用户名
??? ?-d 日期:上一次的更改日期(LAST_DAY)
??? ?-E 具体日期(例:2017-09-08) : 账户过期过期时间过了这天,账户将不可用(expiredate EXPIRE_DATE)
??? ?-I 天数 : 密码过期几天后此账户将不可用 (inactive INACTIVE)
??? ?-m 天数 :密码的最小存活期(mindays MIN_DAYS)
??? ?-M 天数:密码的最大存活期(maxdays MAX_DAYS)
??? ?-W 天数:密码过期前,提前警告的信息的天数(--warndays WARN_DAYS)
??? ?–l 显示密码策略
?例:
??? ?chage -d 0 tom 下一次登录强制重设密码
??? ?chage -m 0 –M 42 –W 14 –I 7 tom 更改tom的密码的最小存活期为0天,最大存活期为42天,在过期前14天提示警告的信息,过期7天后账户不可用
??? ?chage -E 2016-09-10 tom 当到了这一天时账户不可用

??4.用户属性修改

???Usermod 选项 参数 用户名
????-u UID:新UID
????-g GID: 新主组
????-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的 附加组将会被覆盖;若保留原有,则要同时使用-a选项
????-a 与-G 结合 使用可以增加用户的附加组,而不会影响之前的附加组
????-s SHELL:新的默认SHELL
????-c ‘COMMENT‘:新的注释信息
????-d HOME: 新家目录不会自动创建;若要创建新家目录并移 动原家数据,同时使用-m选项
??? ?-l login_name: 修改用户名;
??? ?-L: lock指定用户,在/etc/shadow 密码栏的增加 ! 相当于passwd -l
??? ?-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
??? ?-e YYYY-MM-DD: 指明用户账号过期日期
??? ?-f INACTIVE: 设定非活动期限

??5.用户的删除

?? ? Userdel 选项 用户名
? ? ? -r:删除用户的家目录,

??6.查看用户相关的ID信息

??? ID 选项 用户名
??? ?-u: 显示UID
??? ?-g: 显示GID
??? ?-G: 显示用户所属的组的ID
??? ?-n: 显示名称,需配合ugG使用

??7.用户切换

???su [options...] [-] [user [args...]]
???切换用户的方式:
? ???su UserName:非登录式切换,即不会读取目标用户的 配置文件,不改变当前工作目录
??? ?su - UserName:登录式切换,会读取目标用户的配置 文件,切换至家目录,完全切换
???root su至其他用户无须密码;
???非root用户切换时需要密码
???换个身份执行命令: su [-] UserName -c ‘COMMAND‘
选项:??-l –login
???? su -l UserName 相当于 su – UserName

??8. 手工创建家目录的方法

            mkdir /home/machao
            chmod 700 /home/machao/
            cp -r /etc/skel/.[^.]*  /home/machao/
            chown -R machao.machao /home/machao  

二、组

?组是为了方便对普通用户的权限的管理,组内成员平等而独立

?1、 Linux组的类别

???用户的主要组(primary group):
???用户必须属于一个且只有一个主组
???组名同用户名,且仅包含一个用户:私有组
???用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组

?2、 用户和组的配置文件

??1./etc/passwd:用户及其属性信息(名称、UID、主组ID等)

???/etc/group:组及其属性信息

??? ?群组名称:就是群组名称
??? ?群组密码:通常不需要设定,密码是被记录在/etc/gshadow
??? ?GID:就是群组的ID
??? ?以当前组为附加组的用户列表(分隔符为冒号)
???/etc/shadow:用户密码及其相关属性
???/etc/gshadow-:组密码及其相关属性
????组名
????组密码
????管理员:更改组密码和成员
????组成员:功能同/etc/group中的第四列

??2.pwconv 将passwd当中的密码映射到了/etc/shadow

??? pwunconv 取消映射,密码仍然放在/etc/passwd当中
??? grpconv 将组密码映射到了/etc/gshadow
??? grpunconv 取消组密码的映射

??3.vipw = vim /etc/passwd

???vipw -s = vim /etc/shadow
???vigr = vim /etc/group
???vigr -s = vim /etc/gshadow
???pwck 检查/etc/passwd语法
???grpck 检查/etc/group语法

??4. /etc/default/useradd 创建用户的默认配置文件


GROUP=100 :表示使用useradd -N时默认使用的组为GIP为100的组
HOME=/home: 自动创建家目录时,从哪个目录下创建与用户同名的家目录
INACTIVE=-1 :用户是否设置密码过期后,多少天帐户过期,为-1时,不会触发帐户过期
EXPIRE= :是否指定一个帐户过期时间,为空表示帐户默认永不过期
SHELL=/bin/bash: 使用useradd创建用户时,如不使用-s 指定则默认的用户shell为/bin/bash
SKEL=/etc/skel :自动创建家目录时,从哪个目录拷贝模板文件
CREATE_MAIL_SPOOL=yes : 创建用户时是否在/var/spool/mail下为用户与用户同名的邮箱文件。

?3、 创建组

?? groupadd 选项 参数 groupname
?? ? -g GID:指明GID号;
?-r :创建系统组

?4、组修改

??Groupmod 选项 参数 groupname
?? ?-n newname 组名:修改组名
??? -g newGID:修改组ID

?5、设置组密码及组的管理

?? 1.Gpasswd 组名 设置组密码

???管路员可以执行:
????-a 用户名 组名:将某用户以附加组方式加入某组中,
????-d 用户名 组名:将某用户从指定组踢出
仅root执行
????-M用户名[,用户名…] 组名:设置某组的用户列表
????-A 用户名[,用户名…] 组名:设置某组的管理员列表
(管理员在不是组成员的情况下,仅能修改密码,和将其他人加入和踢出组,并不具有组成员的权限)
(newgrp 组名 “普通用户执行”,非附加组成员的普通用户在正确输入组密码后可以使用该命令临时变更主要组)
(附加组成员的普通用户无需输入密码可以使用该命令临时变更主组,原主组临时变成附加组)

??2.Groupmems -g 组名 选项 用户名 (仅root执行)

            -g 组名 -a 用户名:将某用户以附加组方式加入到某组中
            -g 组名 -d 用户名:将某用户从指定组踢出
            -g 组名 -p 清空所有成员
            -g 组名 -l 查看指定组有哪些成员(仅显示附加组)

??3.groups 用户名 查看用户属于哪些组(包含主组和附加组,普通用户也可用)

??4.组删除 groupdel

???Groupdel 组名:删除组

三、 文件权限

?1、 文件属性

?2、 修改文件的属主和属组

??1.文件的权限主要针对三类对象进行定义:

????owner: 属主, u
????group: 属组, g
????other: 其他, o

??2.修改文件的属主 chown(仅root才能更改文件所属人)

          Chown 选项 owner:group filename(:和.可以互换着用)
               -R:递归修改目录下所有文件
               Owner  只修改属主
               Owner.group或owner:group 同时修改属主和属组
               :group或.group 只修改属组(.或:不能省略)
                --reference=file1 file2 将file1的group信息复制给file2

??3.使用chgrp修改文件的group(文件的owner可以使用chgrp更改文件的group,前提是owner一定要属于目标group)

            Chgrp 组名 filename
             -R 递归
             --reference=file1 file2 将file1的group信息复制给file2

?3、权限设置

??1.每个文件针对每类访问者都定义了三种权限:

????r: Readable 可读
????w: Writable 可写
????x: eXcutable 可执行
???文件:
????r: 可使用文件查看类工具获取其内容
????w: 可修改其内容
????x: 可以把此文件提请内核启动为一个进程
???目录:
????r: 可以使用ls查看此目录中文件列表
????w: 可在此目录中创建文件,也可删除此目录中的文件
????x: 可以使用ls -l查看此目录中文件列表,可以cd进入此
???目录 X:只给目录x权限,不给文件x权限

??2.当rwx分别或组合作用在文件上时

???当仅r权限作用在文件上的时候,用户可以读取该文件的内容:cat less more head tail
???当仅w权限作用在文件上的时候,用户可以修改文件的内容:>>
???当仅x权限作用在文件上的时候,无作为.
???当rw权限作用在文件上的时候,用户即能读与能修改:cat less more head tail vim nano > >>
???当rx权限作用在文件上的时候,用户可以执行该文件
???当wx权限作用在文件上的时候,权限等同于仅w权限.
???文件的常见权限是r-- rw- rwx

??3.当rwx分别或组合在目录上时

???当仅r权限作用在目录上的时候,用户可以短列出目录下的文件名.
???当仅w权限作用在目录上的时候,无作为.
???当仅x权限作用在目录上的时候,用户可以进入该目录,并且在知道具体文件名且具有相关权限的情况下,可以访问子文件.
???当rw权限作用在目录上的时候,权限等同于仅r权限
???当rx权限作用在目录上的时候,用户进入,长列出.
???当wx权限作用在目录上的时候,用户可以进入且可以创建及删除文件.但不能使用文件名通配符
???目录的常见权限r-x rwx

??4.rwx权限项的表示方式

???字母 二进制 八进制
??? --- ? 000?? 0
??? --x ? 001?? 1
??? -w- ?010?? 2
??? -wx ?011?? 3
??? r-- ? 100?? 4
??? r-x ?101?? 5
??? rw- ?110?? 6
??? rwx ?111?? 7

??5.修改文件权限 chmod

???Chmod 选项 权限 filename
????-R:递归
???? --reference file1 file2: 将file1的权限复制给file2
???权限表达式:
????u/g/o/a= :指定给u,g,o或全部的权限
????u/g/o/a+ :给u,g,o或全部添加某个权限
????u/g/o/a- :给u,g,o或全部减去某个权限
(当使用a给全部加x权限时,只给目录及已有部分x权限的文件加上x权限,不给三个权限位完全没有x权限的文件加x权限)

四、 特殊权限

?1、 前提:进程有属主和属组;文件有属主和属组

??1.任何一个可执行程序文件能不能启动为进程,取决发起者 对程序文件是否拥有执行权限

??2.启动为进程之后,其进程的属主为发起者,进程的属组为 发起者所属的组

??3.进程访问文件时的权限,取决于进程的发起者

???(a) 进程的发起者,同文件的属主:则应用文件属主权限
???(b) 进程的发起者,属于文件属组;则应用文件属组权限
???(c) 应用文件“其它”权限

?2、 三种常用的权限:r, w, x user, group, other

??三种不常用的特殊权限:SUID, SGID, Sticky

?3、 SUID 权限

??任何一个可执行程序文件能不能启动为进程:取决发起者对 程序文件是否拥有执行权限。
??启动为进程之后,其进程的属主为原程序文件的属主
??SUID只对二进制可执行程序有效
??SUID设置在目录上无意义

??1.权限设定:

???chmod u+s 文件路径 :给某个二进制文件添加SUID权限
???chmod u-s 文件路径 :给某个二进制文件减去SUID权限

??2.SUID 权限的作用

任何一个可执行程序文件能不能启动为进程:取决发起者对 程序文件是否有执行权限
启动为进程之后,其进程的属主为原程序文件的属主

?4、 SGID权限

??1. 当SGID 作用在一个二进制程序上时

???(1)SGID 的作用

????任何一个可执行程序文件能不能启动为进程:取决发起者对 程序文件是否拥有执行权限
????启动为进程之后,其进程的属主为原程序文件的属组

???(2)权限设定

????Chmod g+s 文件路径
????Chmod g-s 文件路径

??2.当SGID作用在一个目录上时

???(1) SGID的作用

????默认情况下,用户创建文件时,其属组为此用户所属的主组
????一旦某目录被设定了SGID,则对此目录有写权限的用户在此 目录中创建的文件所属的组为此目录的属组
????通常用于创建一个协作目录

???(2) 权限设定

????chmod g+s 目录路径 :给某个目录添加SGID 权限
????chmod g-s 目录路径:给某个目录上SGID权限取消

?5、 Sticky位

??具有写权限的目录通常用户可以删除该目录中的任何 文件,无论该文件的权限或拥有权
??在目录设置Sticky 位,只有文件的所有者或root可 以删除该文件 ?sticky
??设置在文件上无意义
??权限设定:
???chmod o+t 目录路径
???chmod o-t 目录路径

?6、 特殊权限数字法


???例:chmod u+s =chmod 4xxx
????Chmod g+s=chmod 2xxx
????Chmod o+t=chmod 1xxx
????即有suid又有sgid 6xxx
????即有suid又有sticky 5xxx
????即有sgid又有Sticky 3xxx
????全有7xxx
(权限位原本有x(执行权限)的,加上特殊权限后,显示为小写,原本没有,显示为大写)

?7、 文件特定权限

???Chattr +a 文件路径 :不能删除,不能改名,不能修改,可以追加
???chattr +i 不能删除,不能改名,不能修改,不能追加
???lsattr 查看文件特定权限

?8、 权限的优先级

???owner > acl user > group 与 acl group 谁的权限多,谁优先 > other

?9、 umask,用户新建文件或目录时的默认权限

???umask值 可以用来保留在创建文件权限
???新建文件权限: 666-umask
???如果所得结果某位存在执行(奇数)权限,则将其权限+1
???新建目录权限: 777-umask
???非特权用户umask是 002
???root的umask 是 022
???umask:查看当前用户的umask值
???umask #:设定当前用户的umask值,(临时,当切换用户再切换回来时会失效)
???umask –S :以u/g/o=rwx显示当前用户的umask值,后跟具体值也可以更改用户umask值
???umask -p:输出可被调用,
???全局设置: /etc/bashrc
???用户设置:~/.bashrc

五、 Acl扩展访问列表

???ACL:Access Control List,实现灵活的权限管理
???除了文件的所有者,所属组和其他人,可以对更多的用户设置权限
???centos7中的所有文件系统以及Centos6随着操作系统安装是划分的文件系统均已默认开启acl。

?1、 centos6当中对新建分区开启acl的过程

??1. 创建分区

???fdisk /dev/sda
? ???n 回车
? ???回车
????+2G回车
????W回车

??2.同步分区表

???partx -a /dev/sda

??3.创建文件系统

???mkfs.ext4 /dev/sda6

??4.开启acl支持

???tune2fs -o acl /dev/sda6

??5.查看acl

???tune2fs -l /dev/sda6 |grep option

?2、访问控制列表的设置

???为多用户或者组的文件和目录赋予访问权限rwx (通过ACL赋予目录默认x权限,目录内文件也不会继承x权限)
???setfacl -m u:用户名:rwx 目录路径 给某个文件或目录添加一条acl user的权限
???setfacl -Rm g:sales:rwX directory 递归
???setfacl -M file.acl file|directory 提前写一个acl的文件,然后把文件的acl设置赋给该文件或目录
???setfacl -m g:salesgroup:rw file| directory给某个文件或目录添加一个acl group的权限
???setfacl -m d:u:wang:rx directory
???setfacl -x u:wang file |directory 删除一条acl
???setfacl -X file.acl directory删除赋给某个文件或目录的acl文件
???setfacl -m m:r-x file |directory 设置上限阀值 或chmod g=r-x
???setfacl -d -m u/g:username/groupname file |directory 设置默认权限
???setfacl -k file |directory 清除默认acl权限
???setfacm -b file |directory 清除所有acl属性
???mount -o acl /directory

?3、 Getfacl 查看特殊权限


???ACL文件上的group权限是mask 值(自定义用户,自定义组 ,拥有组的最大权限),而非传统的组权限

?4、 Mask

???mask只影响除所有者和other的之外的人和组的最大权限 Mask需要与用户的权限进行逻辑与运算后,才能变成有限的 权限(Effective Permission)
???用户或组的设置必须存在于mask权限设定范围内才会生效
???setfacl -m mask::rx file
???--set选项会把原有的ACL项都删除,用新的替代,需要注 意的是一定要包含UGO的设置,不能象-m一样只是添加 ACL就可以
???? setfacl --set u::rw,u:wang:rw,g::r,o::- file1

?5、 备份和恢复ACL

???getfacl -R /tmp/dir1 > acl.txt 把文件的acl生成一个ACL表文件,保存起来
???setfacl -R -b /tmp/dir1 清空文件上所有的acl属性
???setfacl --restore acl.txt 加载 acl文件
???getfacl -R /tmp/dir1 查看特殊权限

六、 文本处理工具

?1、 Cat文件查看命令

???cat 选项 文件路径
????-E: 显示行结束符
????-n: 对显示出的每一行进行编号
????-A:显示所有控制符
????-b:非空行编号
????-s:压缩连续的空行成一行
????-v 显示^M
????-T 显示^I即tab

?2、 more:分页查看工具

???more 选项 文件路径
????-d :显示翻页及退出提示

?3、 less 一页一页地查看文件或STDIN输出

???查看时有用的命令包括: /
???文本 搜索 文本
???n/N 跳到下一个 或 上一个匹配
???less 命令是man命令使用的分页器

?4、 head

???head 选项 文件路径(n代表一个数字)
???? -c n :显示前n个字节
???? -n n:显示前n行
???? -n:显示前n行

?5、 tail

???tail 选项 文件路径
????-c n:显示文件倒数n字节
????-n n: 显示文件内容倒数n行
????-n : 显示文件内容倒数n行
????-f:动态显示,实时显示文件新添加的内容,常用日志监控

?6、 cut

???cut 选项 文件路径
????-d : :指定分隔符为:,默认tab
????-f 列数:显示指定的第几列,也可以跟多个列数
?????N :第n列
?????1,3,6:离散的多个列
?????1-4:连续的多个列,
????-c n:按字符切割,显示第n个字符那一列
????--output-delimiter=STRING指定输出分隔符

?7、 paste 合并两个文件的内容同时显示,行号相同的在同一行显示

???paste 选项 file1 file2
????-d分隔符:指定分隔符,默认用tab
????-s:所有行合成一行显示
???? Paste file1 file2
????paste -s f1 f2

七、 分析文本的工具

?1、 收集文本统计数据wc

???计数单词总数、行总数、字节总数和字符总数
???可以对文件或STDIN中的数据运行
???wc 文件路径:显示该文件的行数,字数,字符数以及文件名
????-l:只计数行数
????-w:只计数单词总数
????-c:只计数字节总数
????-m:只计数字符总数

?2、文本排序sort

??把整理过得文本显示在终端上,不改变原始文件的
??Sort 选项 文件路径
???-r :执行反方向(由上至下)整理
???-n :执行按数字大小整理
???-f :忽略(fold)字符串中的字符大小写
???-u :(独特,unique)删除输出中的重复行
???-t c :使用c做为字段界定符
???-k X :按照使用c字符分隔的X列来整理能够使用多次

?3、 Unip

???从输入中删除前后相接的重复的行
???Unip 选项 文件路径
????-c显示每行重复出现的次数
????-d: 仅显示重复过的行
????-u: 仅显示不曾重复的行 (连续且完全相同方为重复)
???常和sorrt命令一起使用
??? Sort userlist.txt | unip -c

?4、 比较文件diff

???比较两个文件之间的区别,不同之处
????Diff file1 file2

???注明第6行不一样
???diff 命令的输出被保存在一种叫做“补丁”的文件中
???使用 -u 选项来输出“统一的(unified)”diff格式文 件,最适用于补丁文件。
???diff -u foo.conf-broken foo.conf-works > foo.patch
???patch 复制在其它文件中进行的改变(要谨慎使用)
???使用 -b 选项来自动备份改变了的文件
???? patch -b foo.conf-broken foo.patch

八、 文本处理命令

???Grep :文本过滤工具
???Sed:文本编辑工具
???Awk:文本报告生成器

?1、 grep文本过滤工具

???grep,egrep,fgrep(不支持正则表达式搜索)
????egrep=grep -E
???作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查,打印匹配到的行
???模式:由正则表达式字符及文本字符所编写的过滤条件
????grep root /etc/passwd 在该文件中搜索有root的行并显示
????grep "$USER" /etc/passwd 使用正则表达式时要用“”或‘’引起来,表示不是匹配这段字符,而是匹配正则表达式的结果,或在表达式前加\也可以
????grep ‘$USER‘ /etc/passwd
????grep `whoami` /etc/passwd 在文本中搜索命令结果的行
???grep 选项 参数 文件路径
????--color=auto: 对匹配到的文本着色显示
????-v: 显示不被pattern匹配到的行
????-i: 忽略字符大小写
????-n:显示匹配的行号
????-c: 统计匹配的行数
????-o: 仅显示匹配到的字符串
????-q: 静默模式,不输出任何信息
????-A #: after, 后#行
????-B #: before, 前#行
????-C #:context, 前后各#行
????-e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file
????- w:匹配整个单词
????- E:使用ERE
????- F:相当于fgrep,不支持正则表达式

九、 正则表达式

??Regexp正则表达式,:由一类特殊字符及文本字符所编写的模式,其中有 些字符(元字符)不表示字符字面意义,而表示控制或通配 的功能
??程序支持:grep,sed,awk,vim, less,nginx,varnish等
??正则表达式分为两类,
???基本正则表达式:BRE
???扩展正则表达式:ERE
元字符分类:字符匹配、匹配次数、位置锚定、分组

?1、 字符匹配

??. 匹配任意单个字符
??[] 匹配指定范围内的任意单个字符
??[^] 匹配指定范围外的任意单个字符
??[:alnum:] 字母和数字
??[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
??[:lower:] 小写字母
??[:upper:] 大写字母
??[:blank:] 空白字符(空格和制表符)
??[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
??[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
??[:digit:] 十进制数字
??[:xdigit:]十六进制数字
??[:graph:] 可打印的非空白字符
??[:print:] 可打印字符
??[:punct:] 标点符号

?2、 匹配次数:用在指定次数的字符后面,用于指定前面的字符出现的次数

??\ 匹配前面的字符任意次,包括0次
???贪婪模式:尽可能长的匹配
??.
任意长度的任意字符
??\? 匹配其前面的字符0或1次
??\+ 匹配其前面的字符至少1次
??\{n\} 匹配前面的字符n次
??\{m,n\} 匹配前面的字符至少m次,至多n次
??\{,n\} 匹配前面的字符至多n次
??\{n,\} 匹配前面的字符至少n次

?3、 位置锚定:定位出现的位置

??^ 行首锚定,用于模式的最左侧
??$ 行尾锚定,用于模式的最右侧
??^PATTERN$ 用于模式匹配整行
???^$ 空行
???^[[:space:]]*$ 空白行
??\< 或 \b 词首锚定,用于单词模式的左侧
??\> 或 \b 词尾锚定;用于单词模式的右侧
??\ <PATTERN\>匹配整个单词

?4、 分组

??() 将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:(root)+
??分组括号中的模式匹配到的内容会被正则表达式引擎记录于 内部的变量中,这些变量的命名方式为: \1, \2, \3, ...
??\1 表示从左侧起第一个左括号以及与之匹配右括号之间的 模式所匹配到的字符
??示例:
??? \(string1+\(string2\)\)
???\1 :string1\+\(string2\)

???\2 :string2
??后向引用:引用前面的分组括号中的模式所匹配字符,而非 模式本身
??或者:\|
???示例:a\|b: a或b ?C\|cat: C或cat? \(C\|c\)at:Cat或cat

十、 扩展正则表达式

?1、扩展正则表达式的元字符

??1.字符匹配:

??? . 任意单个字符
???[] 指定范围的字符
???[^] 不在指定范围的字符

??2.次数匹配

??? *:匹配前面字符任意次
????: 0或1次 +:1次或多次
???{m}:匹配m次
???{m,n}:至少m,至多n次

??3.位置锚定

   ^ :行首
???$ :行尾
???\<,\b:词首
???\>, \b :语尾

??4.分组

???()
???后向引用:\1,\2,……

??5.或

???a|b: a 或 b
???C|cat: C 或cat
???(C|c )at:Cat 或cat

十一、 VIM编辑器

??Vi:Visual Interface,文本编辑器
??文本:ASCII, Unicode
??文本编辑种类:
??行编辑器: sed
??全屏编辑器:nano, vi
;???vim - Vi Improved
??其他编辑器
???gedit 一个简单的图形编辑器
???gvim 一个Vim编辑器的图形版本

?1、 vim 选项 文件路径

??+#: 打开文件后,让光标处于第#行的行首,
??+默认行尾
??+/PATTERN:打开文件后,直接让光标处于第一个被 PATTERN匹配到的行的行首
??–b file 二进制方式打开文件
??–d file1 file2… 比较多个文件
??-m file 只读打开文件

?2、 ex file或vim -e file 直接进入ex模式

??使用vim打开一个文件时,如果文件存在,文件被打开并显示内容
??如果文件不存在,当编辑后第一次存盘时创建它

?3、 vim的模式

??有三种主要模式

??1. 命令模式:默认模式,移动光标,剪切/粘贴文本

???插入模式:修改编辑文本
???命令行模式:保存退出

??2. 模式转换

???插入模式 --------> 命令模式
????????ESC
???命令模式 --------> 扩展命令模式
????????:
???扩展命令模式 --------> 命令模式
????????ESC,enter

??3. 命令模式(default):移动光标,复制,剪切,粘贴,删除、撤销,重做,搜索,进入其他模式

???移动光标:
????h向左移动一个字符
????l向右移动一个字符
????j向下移动一个字符
????k向上移动一个字符 配合#h,#l,#j,#k可一次性移动#个字符
????w跳到下一个单词的词首
????b跳到上一个单词的词首
????H跳到当前页首
????M跳到当前页中
????L跳到当前页尾
????gg跳到整个文件的首行
????G跳到整个文件的末行
????^移到非空格开头的行首
????$移到行尾
????#G跳到指定行,或退出模式下:#
????Ctrl+f: 向文件尾部翻一屏
????Ctrl+b: 向文件首部翻一屏
????Ctrl+d: 向文件尾部翻半屏
????Ctrl+u:向文件首部翻半屏
???? r替换一个字符
???d剪切
???? dd剪切当前行
????#dd剪切#行
????dw剪切光标后一个单词
????db 剪切光标前一个单词
????de 剪切当前光标处一个字符
????d^从光标所在处剪切到行首
????d$或D从光标所在处剪切到行尾
???y复制
????yy或Y复制当前行
????#yy复制#行
????yw复制一个单词
????y^从光标所在处复制到行首
????y$从光标所在处复制到行尾
???? ye复制光标处一个字符
????yw复制光标后一个单词
????yb复制光标处前一个单词
???p粘贴
????小写p当前行向下粘贴或光标所在处向后粘贴
????大写P当前行向上粘贴或光标所在处向前粘贴
????小写p:缓冲区存的如果为整行,则粘贴当前光标所在行的下 方;否则,则粘贴至当前光标所在处的后面
????大写P:缓冲区存的如果为整行,则粘贴当前光标所在行的上 方;否则,则粘贴至当前光标所在处的前面
???x删除
???? x: 删除光标处的字符
????#x: 删除光标处起始的#个字符
????xp: 交换光标所在处的字符及其后面字符的位置
????~:转换大小写
????J:删除当前行后的换行符
???替换
????r: 替换光标所在处的字符
????R:切换成REPLACE模式
??? 撤销
???? u撤销最近的更改
????#u撤销之前多次更改
????U 撤消光标落在这行后所有此行的更改
???重做
????按Ctrl - r重做最后的“撤消”更改
????. 重复前一个操作
????n.重复前一个操作n次
??? 退出
???? ZZ: 保存退出
????ZQ:不保存退出
???改变命令(c,change)
????c: 修改后进入插入模式
????命令模式---> 插入模式
???? c$ :从光标处删除到行尾
????c^ :从光标处删除至行首
????c0 :等同于c^
????cb :从光标处删除到单词首
????ce :从光标处删除到单词尾
????cw :删除光标处单词
????#cc:删除当前行并输入新内容
????C:等同于c^
???检索
????\ #:在全文中检索出当前光标处的单词并高亮显示

??4. 扩展命令行模式

???:q 退出
???w 保存
???:q! 强制退出,丢弃做出的修改
???:wq 保存退出
???:x 保存退出
???r filename 读取另一个文件的内容并将输出结果写入文件
???w filename 另存为(确认当前用户对该路径中的最后一级目录有wx权限)
???!command 执行命令,将输出结果显示在终端上
???r!command 执行某条命令,在光标所在的当前行向下插入新行并将输出结果输入
???.! command 执行某条命令,替换光标所在的当前行并将输出结果输入
???搜索
????/关键字
?????n向下找
?????N向上找
?????关键字
????? n向上找
????? N向下找
???按ESC或enter进入命令模式

??5.插入模式

??常用于编辑文本内容,按ESC键退出进入命令模式
??从命令模式进入插入模式
???i: insert, 在光标所在处输入
???I:在当前光标所在行的行首输入
???a: append, 在光标所在处后面输入
???A:在当前光标所在行的行尾输入
???o: 在当前光标所在行的下方打开一个新行
???O:在当前光标所在行的上方打开一个新行

原文地址:http://blog.51cto.com/13570214/2063388

时间: 2024-09-30 14:59:38

关于Linux,用户,组,权限,文本处理工具,正则表达式,vim文本编辑器的相关文章

linux文件属性、文件类型、linux用户和权限、软链接和硬链接

作者:Georgekai 归档:学习笔记 2017/12/22 day12 georgekai~~习惯:操作前备份,操作后检查 本章正题: linux文件属性.文件类型.linux用户和权限.软链接和硬链接 1.1 文件属性 1.1.1 查看文件属性的含义 [[email protected] ~]# ls -lhi total 40K 791060 -rw-------. 1 root root 1.1K Dec 11 04:20 anaconda-ks.cfg 注: 791060  #是In

Lesson 06 —— Linux 用户与权限

Lesson 06 -- Linux 用户与权限 useradd username 添加用户 Linux 系统中,所有用户(包括系统管理员)的账号和密码都可以在 /etc/passwd 和 /etc/shadow 这两个文件中找到,(用户和密码就放在文件中,/etc/passwd 只有系统管理员才可以修改的,其他用户可以查看,/etc/shadow 其他用户看不了).中passwd保存的是账号,shadow保存的是账号的密码等信息. /etc/passwd 文件 /etc/passwd文件是Li

文本处理工具--正则表达式

在学习linux中文本搜索是很重要的 对于初学者来说如何快速学会运用正则表达式相当重要的. 文本搜索工具,根据用户指定的文本搜索模式(搜索条件)对目标进行逐行搜索,显示能匹配的行. 文本搜索: grep :基本正则表达式 egrep:扩展正则表达式 fgrep:fast,不支持使用正则表达式 其语法格式: grep [option]...'PATTERN' FILE... 正则表达式:是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等能: 元字符:不表示其字面意义,而用于

Linux用户,组和权限管理

用户,组,权限 一.了解什么是用户,组和权限 1.对于linux系统来说,简单明了的特点就是多用户,多任务,也就是说一台linux系统的主机上面可以同时允许多个用户登录,当通过多个终端登录时可以同时使用这台linux的系统,然而对于linux习题来说,一切皆文件,别人和自己的工作任务都是以文件的形式存在的,不同的用户之间岂不是没有隐私或者安全而言,其实在linux上不是这样的,我们可以理解linux把每一个用户分配一间屋子,没有钥匙即权限我们是进不去浏览以及修改文件的,但是既然是一间屋子,那当然

Linux下用户-组权限配置

cat /etc/group cat /etc/ashadow 一.用户管理 1.添加用户 #useradd 用户名 useradd php100;用cat /etc/passwd查看 分析:php100是创建的用户名 x表示密码占位符 因为passwd文件是每个用户都有权限 所以直接显示是不安全的.密码存在了/etc/shadow文件中 1000表示用户id 1001表示用户所在的组id /home/php100表示家目录 末尾如果是bash表示可以登录系统 如果是nologin表示无法登录操

linux常用命令-用户,组,权限,用户配置文件

安全上下文(secure context):用户的uid/gid是否在文件的属主/属组中: 用户(uid)/组(gid):标识符 进程和文件对应用户/组: 用户组类别: 私有组:只包含用户自身并与用户同名,创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组 基本组:用户的默认组 附加组,额外组:默认组以外的其它组 权限:r, w, x 文件:r:可读,可以使用类似cat等命令查看文件内容:w:可写,可以编辑或删除此文件:x: 可执行,eXacutable,可以命令提示符

Linux 用户、权限

目录结构 Linux和Windows目录结构的组织形式有很大不同, Windows 划分出了"盘"的概念(C盘.D盘.E盘),已经建立文件系统的硬盘分区被挂载到某一个目录下,用户通过操作目录来实现磁盘读写. 以反斜杠(\)分割目录 Linux 首先是建立一个根(/)文件系统,所有的目录页都是有根目录衍生出来的, 以斜杠(/)分割目录 在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树. 目录树的特点是

linux用户及权限管理

[文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录.实现用户账号的管理

LINUX 用户及权限之我见

  用户是登录系统的身份凭证,不同的用户登录系统后,能够进行的操作也是不相同的.用户的正确配置和管理,是我们管理好主机和系统的重要前提.而了解用户的各种特性,才能够帮助我们实现对用户的很好管理. linux 系统最优秀的地方之一,就在于它的多用户.多任务环境.为了区别不同用户的操作,对不同用户有一个安全的管理机制,而关于文件的权限管理和使用,就显得尤为重要. 在这里,就linux系统里面的用户和权限,谈谈我个人的一点点认识. 一.用户相关 1. 用户的定义: 严格来讲,linux系统并不"认识&

linux用户和权限管理

目录: 一.用户相关 配置文件.命令(groupadd.groupmod.groupdel.useradd.usermod.userdel.passwd.gpasswd.newgrp) 二.权限相关 命令(chmod.chown.chgrp.umask),额外(id.su) 三.杂项 随笔记录 用户权限管理单从字面上就能明白是什么,而且大致也就是这么个意思.而只要是从事电脑方面工作的人也都用的到,我想谁也不想自己管理的主机没事多些小东西吧. 用户只是系统上面用来标识一个身份的名称,而身份说白了就