菜鸟第二周

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟第二周相关的知识,希望对你有一定的参考价值。

正则表达式

文件名通配符当中 * 表示 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

以上是关于菜鸟第二周的主要内容,如果未能解决你的问题,请参考以下文章

《实时控制软件》第二周作业

第二周JAVA学习总结

第二周续.(代码)

20165302第二周学习总结

20165306课下作业(第二周)

20165233 第二周课堂代码补充