第二周学习总结

标准输入-0 键盘
标准输出-1 当前终端窗口
标准错误-2 当前终端窗口 git

I/O重定向:改变默认窗口 正则表达式

方法: >标准输出重定向 重定向,新建或清空文件
1> 标准输出重定向 2>标准错误重定向
>> 追加剧定向 2>> 错误追加剧定向
command &> file 合并重定向 <br>command > file 2>&1 错变对放入file<br> command 2> file 1>&2 对变错放入file 1> file1 2>file2 分别重定向
输入重定向 <

set -C 禁止覆盖
set +C 容许覆盖
\>|强制覆盖
tr 命令 替换或删除字符
-c 取反
-d 删除 二者一块儿使用结果以下:shell

[root@centos7 ~]# echo abc123 | tr -dc '123' 
123[root@centos7 ~]#

-s 压缩,将连续相同的字符压缩为一个 vim

[root@centos7 ~]# echo aaabbbccc |tr -s 'abc'
abc

-t 替换字符 windows

[root@centos7 ~]# echo aaabbbccc | tr -t 'abc' '123'
111222333

hexdump 查看文件二进制编码的十六进制centos

用户、组和权限

读r、写w、执行x三种权限
与用户、组、权限相关的文件
/etc/passwd 用户及其属性信息
此文件中各字段以冒号分隔 bash

字段名 含义
name 用户名
password 密码(用x占位)
UID 用户ID
GID 用户组ID
GECOS 用户描述信息
directory 用户家目录
shell 用户默认shell

/etc/group组及其属性信息 app

字段名 含义
group_name 组名
passwd 组密码
GID 组ID
user_list 用户列表

/etc/shadow用户密码及其相关属性 less

字段名 含义
name 用户名
passwd 加密后的密码
date of last password change 上次更改密码的天数
minimum password age 密码最短使用天数
maximum password age 密码最长使用天数
password warning period 提早提示天数
password inactivity period 宽限天数
account expiration date 账号有限期

/etc/gshadow 级密码及其相关属性
相关命令
useradd userdel
usermod -U 解锁用户
usermod -L 锁定用户
userdel -r 删除帐户
passwd [用户名] 设置用户密码。只有root有权限对其余用户使用此命令,普通用记只能用以修改本身的密码
passwd -l;passwd -u 锁定/解锁用记密码
passwd -S 查看用户密码是否锁定
passwd -d [用户名]删除用户密码,删除后不能登陆。只有root有权限使用此命令
groupadd 建立用户组
groupmod -n 修改组名
groupdel 用户组名 删除用户组
newgrp 加入一个新的用户组
chpasswd 批量修改用户密码 编辑器

chown 设置文件的全部者
chgrp 设置文件的属组信息

文件权限

文件的权限主要针对三类对象进行定义
owener 属主,u
group 属组,g
other 其余,o
每一个文件针对第类访问都都定义了三种权限
chmod 设置文件权限

文件系统上的特殊权限

特殊权限
chmod u+s FILE...
chmod u-s FILE...
chmod g+s FILE...
chmod g-s FILE...
suid:做用于二进制可执行的文件的全部者位上,功能:执行此文件的用户临时继承此文件全部者权限
sgid:
1)做用于二进制可执行的文件的所属组位上,功能:执行此文件的用户将临时继承此文件的属组的权限
2)做用于目录的所属组位上,功能:此目录中新建文件的所属组将自动今后目录继承
sticky:做用于目录,功能:此的文件只能被全部者删除。
chmod o+t DIR
chmod o-t DIR

设定文件特定属性

chattr +i 不能删除,更名,更改
chattr +a 只能追加内容
lsattr 显示特定属性

访问控制列表

ACL:Access Control list 实现灵活的权限管理
CentOS7默认建立的xfs和ext4文件系统 具备ACL功能
CentOS7以前版本,默认手工建立的ext4文件系统无ACL功能,需手工添加
tune2fs -o alc /dev/sdb1
mount -o alc /dev/sdb1 /mnt/test
ACL生效顺序:全部者自定义用记,自定义组,其余人
setfacl 设置ACL
setfacl -m u:用户名:权限 指定文件名 给用户设置文件ACL权限
setfacl -m g:组名:权限 指定文件名 给用户组设置文件ACL权限
setfacl -x u:用户名 文件名 删除用户对文件的ACL权限
setfacl -x g:组名 文件名 删除用户组对文件的AC权限
setfacl -b 文件名 删除全部ACL权限
setfacl -R -m u:用户名:权限 文件名 递归设置文件的ACL权限,全部子目录和子方伯也有相同的ACL权限
setfacl -m d:u:用户名:权限 文件名 默认ACL权限,对父目录设定了默认的ACL权限,新寻的子文件继承父目录的ACL权限
getfacl 显示ACL

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

抽取文本的工具

文件内容:less和cat
文件截取:head和tail
按列抽取:cut
按关键字抽取:grep

文件查看命令
cat -E 显示行结束符$
-n 对显示出的第一行进行编号
-A 显示全部控制符
-b 非空行编号
-s 压缩连续的窄成一行
tac 与 cat命令相所显示文件

分页查看文件内容
more :分页查看文件
-d:显示翻页及退出提示
less:一页一页地查看文件或STDIN输出
查看明有用的命令包括:
/文本搜索
n/N 跳到下一个或上一个匹配位置
命令man使用的分页器

显示文本前或后行内容
head -cN 指定获取前N个字节
-nN指定获取前N行,默认为前10行
-N 指定行数
tail -cN 指定获取后N个字节
-nN 指定获取后N行
-N 指定行数
-f 跟踪显示文件新追加的内容,经常使用日志监控
-F 跟踪文件名,
tailf 相似-f
按列抽取文本
cut -d 指明分隔符,默认tab
-f N 第N个字段
-fM,N,P分散的多个字段
-fN-M 连续的N到M的字段
-c 按字符切割

paste 合并两个文件同行的列到一行
-d 分隔符,指定分隔符,默认用tab
-s 全部行全成一行显示
分析文本的工具
文本数据 统计:wc
-l 只计数行数,-w只计数单词总数,-c只计数字节总数,-m只计数字符部数,-L显示文件中最长行的长度
整理文本:sort
-r 执行反方向整理,-R随机排序,-n 执行按数字大小整理,-f 选项忽略字符串中的字符大小写,-u 选项删除输出 中的重复行,-t x 选项使用x作为字段界定符,-k X 按照使用x字符分隔的X列来整理
uniq
-c 显示每行重复出现的次数,-d 仅显示重复过的行,-u 仅显示未曾重复的行
一般sort命令与uniq配合使用
sort userlins.txt | uniq -c
比较文件:diff和patch
diff 比较两个文件之间的区别
diff f1 f2

Linux文本处理三剑客

grep:文本过滤(grep,egrep,fgrep)
sed:文本编辑工具
awk:Linux上的实现gawk,文本报告生成器

grep命令选项

-mX匹配X次后中止,-v 显示不被匹配到的行,-I忽略字符大小写,-n显示匹配的行号,-c统计匹配的行数,-o显示匹配到的字符串,-q静默模式,不输出任何信息,-A X 后x行,-B X 前X行,-C X 先后各X行,-e实现多个选项间的逻辑or(或)关系,-w匹配整个单词,-E 使用扩展正则表达式,-F同fgrep,不支持正则表达式,-f file根据模式文件处理

正则表达式

正则表达式有基本正则表达式:BRE和扩展正则表达式:ERE

字符匹配

. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符,[abc]abc中的任意一个,[0-9][a-z][A-Z]
[^]匹配指定范围外的任意单个字符,[^abc]除了abc之外的任意单个字符
[:alnum:]字母和数字
[:alpha:]所有字母
[:lower:]小写字母
[:upper:]大写字母
[:black:]空白字符
[:space:]水平和垂直的空白字符
[:cntrl:]不可打印的控制字符
[:digit:]十进制数字[:xdigit:]十六进制数字
[:graph:]可打印的非空的字符
[:print:]可打印字符
[:punct:]标点符号

匹配次数

*匹配前面的字符任意次,包括0次
.*任意长度任意字符
\?匹配其前面的字符0或1次
\+匹配其前面的字符至少1次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次
\{n,\}匹配前面的字符至少n次

位置锚定

^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定,用于单词模式的右侧
\<PATTERN\> 匹配整个单词
分组
\(root\) 将一个或多个字符捆绑在一块儿,看成一个整合处理
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,命名为\1,\2,\3,...
\1表示从左侧起第一个分组匹配到的字符
后向引用
引用前面的分组括号中的模式所匹配字符,而非模式自己
或者
\|
a\|b 表式a或者b

若是须要匹配\ . (){}[]^$等符号,要在前面加一个\进行转义,如 \.表示匹配点(.)这个字符,而不是表式匹配任意个字符

egrep扩展的正则表达式
gerep=grep -E
与正则表达式相同,只是符号前不用加\,(){}
\< \>一样表式词首词尾

vim简介

vi:Visual Interface 文本编辑器
vim FILE 用vim打开一个文本文件
vim +# FILE 打开文件后,让光标处于第#行,+默认行尾
+/PATTER 让光标处于第一个被 PATTERN匹配到的行的行首
-b FILE 二进制方式打开文件
-d FILE1 FILE2...比较多个文件
-m FILE 只读打开文件
vim是一个模式编辑器
三种主要模式:
命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
插入(Insert)或编辑模式:修改文本
扩展命令(extended command )模式:保存,退出等
ESC键退出当前模式,并返回到命令模式

模式转换

命令模式——>插入模式
i insert在光标所在处前输入 I 在当前光标所在行的行首输入
a append在光标所在处后输入 A 在当前光标所在行的行尾输入
o ...在光标所在行的下方新开一行 O 在当前光标所在行的上方新开一行
插入模式——>命令模式
ESC键
命令模式——>扩展命令模式
:冒号
扩展命令模式——>命令模式
ESC,enter

关闭文件

扩展命令模式
:q 退出
:q! 不保存修改退出
:wq!保存退出
:x 保存退出
命令模式
ZZ 保存退出
ZQ 不保存退出,不推荐使用

扩展命令模式

:进入Ex模式
w 写磁盘文件
wq 写入并退出
x 写入并退出
q 退出
q! 不存盘退出
r FILENAME 读取文件到当前文件中
w FILENAME 将当前文件写入FILENAME文件中
!command 执行命令
r!commane 读入命令的输出

命令模式光标跳转


字符间跳转:
h:左 l:右 j:下 k:上
#command:跳转指定的个数的字符


单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#command: 由#指定一次跳转的单次数


当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在当年行移到屏幕顶端
zz:将光标所在当前行移至屏幕中间
zb:将光标所在当前行移到屏幕底端


行首行尾跳转:
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾


行间移动:
#G 跳转至第#行 与:相同
G 最后一行
1G,gg第一行


句间移动:
) 下一句; ( 上一句


段落间移动:
} 下一段; { 上一段


命令模式翻屏操做

CTRL+f 向文件尾部翻一屏
CTRL+b 向文件首部翻一屏
CTRL+d 向文件尾部翻半屏
CTRL+u 向文件首部翻半屏


命令模式操做

字符编辑:
x 删除光标处的字符
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
J 删除当前行后的换行符
替换命令(r,replace)
r 替换光标所在处的字符
R 切换成REPLACE模式 (一直替换到按ESC时结束)
删除命令
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw
de
db
#COMMADN 删除#行
dd:删除泡棉所在的行
#dd 多行删除
D :从当前光标位置一直删除到行尾,等同于d$
复制命令(y,yank):
y 复制,行为与d命令类似
y$ 复制到行尾
y0
y^
ye
yw
yb
#yy 复制多行
Y 复制整行
粘贴命令(p,paste)
p 缓冲区存的若是为整行,则粘贴当前光标所在行的下方;不然,则粘 贴至当前光标所在处的后面
P 缓冲区存的若是为整行,则粘贴当前光标所在行的上方;不然,则粘 贴至当前光标所在处的前面

100izhangESC 粘贴“wang” 100次

命令模式:查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当年光标所在处向文件首部查找
n与命令相同方向
N与命令相反方向
命令模式:撤消更改
u 撤消最近的更改
#u 撤消以前屡次更改
U 撤消光标落在这行后全部些行的更改
Ctrl-r 重作最后的"撤消"更改
.重复前一个操做
#.重复前一个操做#次

扩展命令模式:查找并替换
:%s/ABC/123/g 将所有ABC替换成123 /能够是其余字符如#$@等
:%s/ABC/123/gc 将所有ABC替换成123,每次替换时询问

使用多个"窗口"
vim -o|-O FILE1 FILE2...
-o 水平分割 -O垂直分割
在窗口间切换:CTRL+w
单文件窗口分割
Ctrl+w,s:split, 水平分割
Ctrl+w,v:vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消所有窗口
:wqall 退出

定制vim的工做特性

配置文件:永久有效 全局:/etc/vimrc 我的:~/.vimrc 扩展命令模式:当前vim进程有效 (1) 行号 显示行号:set number |set nu 取消显示:set nonumber |set nonu (2) 忽略字符的大小写 启用:set ignorecase| set ic 不忽略:set noic (3) 自动缩进 启用:set autoindent| set ai 禁用:set noai (4) 复制保留格式 启用:set paste 禁用:set nopate (5) 显示Tab和换行符 启用:set list 禁用:set nolist (6) 高亮搜索 启用:set hlsearch 禁用:set nohlsearch (7) 语法高亮 启用:syntax on 禁用: syntax off (8) 文件格式 启用windows格式:set fileformat=dos 启用unix格式:set fileformat=unix 简写 set ff=dos|unix (9) 设置文本宽度 set textwidth=65 (vim only) set wrapmargin=15 (10) 设置光标所在行的标识线 启用:set cursorline,简写 set cul 禁用:set nocursorline

相关文章
相关标签/搜索