菜鸟第二周

正则表达式

文件名通配符当中 * 表示 0或多个任意字符 ? 表示任何一个单一字符

正则当中
字符匹配

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

次数匹配

 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
    * 匹配前面的字符任意次,包括0次
        贪婪模式:尽可能长的匹配
    .* 任意长度的任意字符
    \? 匹配其前面的字符0或1次
    \+ 匹配其前面的字符至少1次
    \{n\} 匹配前面的字符n次
    \{m,n\} 匹配前面的字符至少m次,至多n次
    \{,n\} 匹配前面的字符至多n次
    \{n,\} 匹配前面的字符至少n次

位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]$ 空白行
grep -v "^[[:space:]]
$" passwd 去除文件中的空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词
grep "\<root\>" passwd

实验:通过以下文件,找出以rxxt开头且以相同rxxt结尾,并uid与gid相同的用户
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
rcct:x:1:1:bin:/bin:/sbin/rcct
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
roat:x:4:7:lp:/var/spool/lpd:/sbin/roat
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:Root:/sbin:/sbin/shutdown
roat:x:6:0:Root:/sbin:/sbin/root
halt:x:7:0:halt:/sbin:rooter:/halt
rbbt:x:8:12:mail:/var/spool/mail:/sbin/root
operator:x:11:0:operator:/root1:/sbin/root
root:x:100:100:games:/usr/games:/sbin/root
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

cat passwd |grep "^(\<r..t\>).([0-9]+):\2.\1$"

扩展正则写法:
cat passwd |egrep "^(\<r..t\>).([0-9]+):\2.\1$"

VIM
command(命令模式) 默认模式 移动光标,复制,剪切,撤消,重做…… 进入其他的模式。
ZQ强制退出不保存
ZZ保存并退出
G:跳到最后一行
gg:跳到第一行
numG 或 :num 回车 跳到指定行
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
~:转换大小写
J:删除当前行后的换行符
r:单个字符的替换
dd 剪切一行
p 在当前行的下一行粘贴
P 在当前行的上一行粘贴
dw 剪切一个单词
d$ 剪切光标所在位置到行尾
d^ 剪切光标所在位置到行首
num d: 剪切当前行及其向下指定数量的行
yy 复制一行
yw 复制一个单词
y$ 复制光标所在位置到行尾
y^ 复制光标所在位置到行首
num y: 复制当前行及其向下指定数量的行

            v 选择模式
                p 粘到光标所在处之后
                P 粘到光标所在处之前
            V 多行选择模式
                p 在当前行的下一行粘贴
                P 在当前行的上一行粘贴

insert(插入模式) 编辑文本内容
i ESC回到命令模式
I 光标跳至行首并进入插入模式
A 光标跳至行尾并进入插入模式
a 光标向后移动一个字符并进入插入模式
o 光标向下插入一个新行并进入插入模式
O 光标向上插入一个新行并进入插入模式

exit(退出模式) 保存,退出 :
w保存
q退出
q!强制退出不保存
wq保存并退出
w!强制保存:
1.root
2.文件的owner
3.当前用户对当前文件所在目录有wx权限时,实际会删除该文件再新建。
x=wq
x!
回到命令模式
EscEsc
Esc 等一会
Enter
:r /etc/issue 读取文件内容,将内容输入到当前文本的最后
:! ifconfig ens33 将命令的输出结果显示,并不存入文件,按q结束命令输出
:r! ifconfig ens33 将命令的输出结果输入到当前光标所在行的下一行
:.! ifconfig ens33 将命令的输出结果输入到前当行,替换原有内容

            :%s/\<root\>/rooter/g

            :%s/\(\<r..t\>\)/\1er/gi   支持基本正则表达式 不加g时每行的第一个关键字替换,加g则全替换

            地址定界
                :start_pos,end_pos
                # 具体第#行,例如2表示第2行
                #,# 从左侧#表示起始行,到右侧#表示结尾行
                #,+#  从左侧#表示的起始行,加上右侧#表示的行数
                    :2,+3  表示2到5行
                .   当前行
                $  最后一行
                    .,$-1 当前行到倒数第二行
                %  全文, 相当于1,$
            :%s/\/bin\/bash/\/sbin\/nologin/g 或使用:%[email protected]/bin/[email protected]/sbin/nologin

visual(选择模式)
replace(替换模式)

groupadd
-g GID GNAME
-r GNAME
groupdel GNAME

gpasswd
Options:
-a, --add USER 增加单个用户到指定组当中(组管理员可执行)
-d, --delete USER 从指定组中删除单个用户(组管理员可执行)
-r, --delete-password 将指定组的组密码删除(组管理员可执行)
-R, --restrict 限制组成员访问该组
-M, --members USER,... 一次性设置组成员(仅root执行)
-A, --administrators ADMIN,... 设置组管理列表(root执行)

newgrp groupname
用户会打开一个子shell,在这个子shell下,该用户的主要组切换为该组,若该用户本不属于该组,则要输入组密码,若该组属于用户的附加组之一,则无需输入密码。

groupmems
-g GNAME
-a USERNAME 加用户加入到指定组
-d USERNAME 把用户从指定组删除
-p 清除该组的所有成员
-l 列出组成员列表

groups USERNAME
查看用户属于哪些组(包含主要组)

chown 仅root才能执行
USERNAME FILENAME/DIRNAME
所属人修改文件的权限
-R 递归修改
.|: GNAME FILENAME/DIRNAME 修改所属组
USERNAME.|:GNAME FILENAME/DIRNAME 同时修改文件的所属人及所属组
--reference=USERNAME FILENAME/DIRNAME 将指定文件的从属关系设置为与指定文件相同

chgrp 仅root和文件的所属人可以更改文件的所属组(但所属人一定要属于目标组)、
GNAME FILENAME/DIRNAME
-R 递归修改

文件的权限

rw-     r--    r--
owner  group  other

FILE

**当仅r权限作用在文件上的时候,表示用户可以读取该文件的内容
*当仅w权限作用在文件上的时候,表示用户可以修改该文件的内容
当仅x权限作用在文件上的时候,没有意义。
**当rw同时作用在文件上的时候,表示用户可以读写文件
**当rx同时作用在文件上的时候,表示用户可以读且可以执行该文件
当wx同时作用在文件上的时候,权限与仅w相同
**当rwx同时作用在文件上的时候,用户可以读写执行。

DIRECTORY

当仅r权限作用在目录上的时候,表示用户可以短列出查看目录下的文件名
当仅w权限作用在目录上的时候,没有意义
*当仅x权限作用在目录上的时候,表示用户可以进入且可以访问目录下的文件,但不能列出文件名
当仅rw权限同时作用在目录上的时候,权限等同于仅r权限作用在目录
**当仅rx权限同时作用在目录上的时候,表示用户可以进入,可以访问子文件,同时可以长列出文件
*当仅wx权限同时作用在目录上的时候,表示用户可以进入,可以访问子文件,可以创建及删除,但不能列出
**当rwx权限同时作用在目录上的时候,表示用户有完整权限
X 对于批量增加x权限时,可以跳过文件而只对目录加x

chmod --reference
-R
r:4
w:2
x:1

7:rwx
6:rw
5:rx
4:r
3:wx
2:w
1:x

umask
表示用户创建文件的默认权限,目录最高777,文件最高666
umask xxx 设置umask
umask 查看umask
~/.bashrc 将umask设定保存以让下次登录时仍然有效
umask -S 显示创建目录的默认权限

uid: 对于可执行的二进制文件作用了suid权限之后,任何人在执行该文件时,可临时拥有其所属人的权限

sgid: 对于可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时,可临时拥有其所属组的权限
对于目录作用了sgid权限之后,任何人在该目录下创建的文件的所属继承目录的所属组

sticky:对于目录作用了sticky之后,该目录下的文件及子目录,仅其所属人和目录的所属人及root才能删除。

chmod u+s
chmod g+s
chmod o+t

chmod 4777 suid
chmod 2777 sgid
chmod 1777 sticky

chattr +a 不可修改,可以追加,不能删除
chattr +i 什么也不做,只能读

lsattr filename

ACL

Cenots6: 新建分区默认没有acl支持,开启的方法.
fdisk /dev/sda同 分区
n回车
回车
+500M 回车
w回车
partx -a /dev/sda 通知内核更新分区表
mkfs.ext4 /dev/sda6
tune2fs -l /dev/sda |grep acl
none
tune2fs -o acl /dev/sda6
tune2fs -l /dev/sda |grep acl
acl
Centos7:无论何时都支持acl

owner > acl user > group acl group 谁多谁优先 > other

setfacl -m u|g:username|groupname:rwx filename|dirname
setfacl -x u|g:username|groupname filename|dirname
setfacl -b filename |dirname
setfacl -m m:r-x filename|dirname 或 chmod g=rx filename |dirname

通过文件设置acl
file.add 内容如下
u:liubei:rwx
g:shuguo:rx

setfacl -M file.acl house/

通过文件删除acl
file.del 内容如下
u:liubei
g:shuguo

setfacl -X file.del house/

默认权限
setfacl -m d:u:liubei:rwx house
setfacl -Rm u:liubei:rwx house

getfacl house

file: .

owner: root

group: root

--------------------------------------- setfacl -Rm u:liubei:rwx house
user::rwx
user:liubei:rwx
group::r-x
mask::rwx
other::r-x
---------------------------------------- setfacl -m d:u:liubei:rwx house
default:user::rwx
default:user:liubei:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

setfacl -k house/ 仅删除默认权限

实验:包含acl权限的目录使用打包工具备份及恢复
1.备份
tar -cvf house.tar house
getfacl -R house > acl.txt
2.还原
tar -xvf house.tar -C /var/tmp
cp acl.txt /var/tmp
setfacl --restore acl.txt

原文地址:http://blog.51cto.com/13769389/2120869

时间: 2024-10-28 10:04:27

菜鸟第二周的相关文章

20145215《Java程序设计》第二周学习总结

教材内容总结 类型.变量与运算符 *基本类型 整数(short.int.long) 字节(byte) 浮点数(float/double) 字符(char)将一个数字字母或者符号用单引号标识,字符串用双引号(‘4’)(“hello”) 布尔(boolean):较为特有只有两个数值true/false Null常量:只有一个数值就是null 对于整数:java有三种表现形式 十进制:0-9,满10进1 八进制:0-7,满8进1.用零开头表示. 十六进制:0-9,A-F,满16进1,用0x开头表示(0

老男孩Linux运维第41期20170903开班第二周学习重点记录

第二周讲课知识点总结 主要内容1:连接虚拟机故障排错 使用ping命令查看是否能连接到目标机器的IP地址. 查看中间有没有硬件/软件防火墙(包括系统防火墙.杀软防火墙.selinux等) 查看服务是否已开启,有没有启用vmware所有相关服务(services.msc下有五个vmware开头的服务均需开启),使用telnet命令测试某一个端口是否开启. 保证虚拟机的网络连接-vmnet8 已启动. 主要内容2:第一关练习题 [考试试题] 特别说明:如果前 11道不能都答对就是纯菜鸟级别了,如果答

20172327 结对编程项目-四则运算 第二周 阶段总结

20172327 结对编程项目-四则运算 第二周 阶段总结 结对编程项目-四则运算 第二周 输出阶段总结博客 结对对象: 学号:20172317 姓名:蒋子行 伙伴第二周博客地址: 学号:20172320 姓名:李闻洲 伙伴第二周博客地址: 担任角色: 驾驶员:蒋子行 副驾驶:李闻洲 马瑞蕃 小组结对编程的photo: 项目中自己负责的部分: 我在项目中真的没啥贡献,项目主要由祥哥主刀,我和李闻洲就是打杂的. 个人贡献度划分: 我在项目中真的没啥贡献,项目主要由祥哥主刀,我就是打杂的,提点建议和

2014025670(12)《嵌入式系统程序设计》第二周学习总结

这周学习了gcc和gdb的使用还有makefile. 教材学习内容总结 教材内容开始看的有些吃力,很多地方都不太懂,网上查询和询问同学和老师之后,了解了很多,但是具体操作和实现方面还是比较难. 教材学习中问题和解决过程 对于gcc的操作在实验楼的学习中还是比较顺利,gdb的操作感觉有些村存在问题-----gdb的调试方面有些吃力,应该是自己没努力的结果,打算把问题汇总一下,再试试实验. 课后作业中的问题和解决过程 应用实验楼的第二周,第一周的内容感觉简单,消化很快,没想到第二周就感觉有些吃力,不

学习进度条第二周

  第二周 所花时间 12小时 代码量 180行左右 博客量 3 了解到的知识点 Javaweb开发html的学习,还有javascript的特效和链接网页跳转,网页中图片自行转换,以及构建之法第1.2.3章相关的知识.

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

《Machine Learning》系列学习笔记之第二周

第二周 第一部分 Multivariate Linear Regression Multiple Features Note: [7:25 - θT is a 1 by (n+1) matrix and not an (n+1) by 1 matrix] Linear regression with multiple variables is also known as "multivariate linear regression". We now introduce notatio

20145123刘森明《Java程序设计》第二周学习总结

教材学习内容总结 这一章学习的知识,在以前的C语言中已经学习过了.所以学起来比较的轻松.主要讲的就是数据与变量的类型和运算符:流程控制等知识点. 教材学习中的问题和解决过程 这周在Java上花费的时间较多.首先对于java语言中,虽然之前对于java的语言的语法有所了解,但是对于具体的细节还存在问题.对于输出函数System.out.printf()和Syetem.out.println()的区别,看书后得知Syetem.out.println()函数在编译后会换行,在第一章的“hello wo

20145229吴姗珊《Java程序设计》第二周学习总结

教材学习内容总结 一.类型.变量与运算符 1.类型 整数:可细分为short整数.int整数和long整数.不同长度的整数可储存的整数范围也不同. 字节:byte类型顾名思义.长度就是一字节,需要逐字节处理数据时则需要使用.用于整数时,可表示-128~127的整数. 浮点数:主要用来储存小数数值,主要分为float和double. 字符:char类型用来储存‘A','B','林'等字符符号. 布尔:boolean类型可表示true和false,分别表示真和假. 2.变量 基本规则:用关键词来声明