首页 > 代码库 > linux文本处理工具
linux文本处理工具
linux文本处理工具
1.Linux 文件系统上的特殊权限: SUID SGID Sticky
进程的安全上下文:(1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行去权限
(2)启动为进程后,其属主为发起者,属组为发起者所属的组
(3)进程访文件的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
SUID只对二进制可执行程序有效,设置在目录上无意义:chmod u+s file
SGID 对二进制文件生效,继承程序所属组的权限 chmod g+s
作用在目录上,目录内新建文件的所属组自动继承目录所属组 (这个很实用)
sticky 粘滞位 作用在目录上,目录内的文件只有所有者能删除 chmod o+t
当没有执行权限x时,特殊权限s,t会变成大写,特殊权限位可以用数字表示4,2,1,分别代表u,g,o
为防止用户误操作;还可以给文件创建特定属性:
chattr +i file 不能删除,改名,更改 ; -A表示锁定时间戳,
chattr +a 只能追加内容
查看文件的特定属性:lasttr file
ACL :Access Control List ,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
ACL 生效顺序:所有者,自定义用户,自定义组,其他用户
通过实例来了解: 支持使用 – R 递归设置
setfacl -m u:wang:rwx filename|dir #自定义用户wang 拥有文件的rwx权限
setfacl -m g:group:rwx filename|dir #自定义组group有文件的rwx权限
setfacl -x u:username #从文件acl表删除用户
-k : # 清空默认的acl权限,增加的不会清空;完全清空使用 -b
getfacl filenam #查看文件的acl权限列表
一旦有了ACL权限,中间组的权限不是原来的意思了,而是mask限高权限
mask :r 限高线 意思是最高权限是r,不能超过
exam: setfacl -m mask::rx file
文本的处理工具有:less cat head tail cut grep sort uniq cat tac rev
cat -E :显示行结束符$ head -n# 指定获取前# 字节 taii -n#
-n :对每行进行编号 -# 指定获取前#行 -#
-A :显示所有控制符 -c # 指定行数 -c#
-s :压缩连续的空行成一行 -f 动态显示追加的内容
cut -d: -f2 filename -d指定分隔符: -f指定抽取第几段,可以指定多段和连续
paste f1 f2 #合并两文件同行号的列到一行
paste -s f1 f2 #也是合并意思,只是f1 内容一行显示,f2内容也一行显示,可以认为并排的两行文件
wc -l -w -c #分别统计行数,单词数,字节数;
sort -r #执行反方向(由上至下)整理
-n #执行按数字大小整理
uniq -c #显示每行重复出现的次数
-d #仅显示重复过的行
-u #仅显示不曾重复的行
diff f1 f2 #比较两个文件之间的区别;命令的输出被保存在一种叫做“补丁”的文件
使用 -u 选项来输出“统一的(unified )”diff 格式文件,最适用于补丁文件。
patch -b #适用 -b 选项来自动备份改变了的文件; diff和patch 就是用来打补丁的意思
文本处理三剑客
grep:文本过滤工具 grep, egrep, fgrep(不支持正则表达式)
sed :stream editor
awk :Linux 上的实现gawk ,文本报告生成器
grep [OPTIONS] PATTERN [FILE…] 模式:由正则表达式字符及文本字符所编写的过滤条件
-v #显示不被模式匹配到的行 -i #忽略字符大小写
-n #显示匹配的行号 -c #统计匹配的行号
-o #仅显示匹配到的字符串 -q #静默模式,什么都不输出
-A -B -C # 显示模式匹配到的后 ,前,上下各#行,对应单词意思after,befor,context
-e #实现多个选项间的逻辑or 关系 -E #使用扩展正则表达式 -F #使用fgerp
正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符 字面意义,而表示控制或通配的功能
分为两类: 基本正则表达式:BRE 扩展正则表达式:ERE
和文件名通配有点区别,就个别不一样
. #匹配任意单个字符
* #匹配前面的字符任意次,贪婪模式:尽可能长的匹配
.* #任意长度的任意字符
\{m,n\} #匹配前面的字符至少m次,至多n次
^ 行首锚定 $行尾锚定 ^$ 空行
\b 词首锚定,用于单词模式的左侧 \ba #a在词首
\b 词尾锚定;用于单词模式的右侧 a\b #a在词尾
\<PATTERN\> # 匹配整个单词 \是转义
分组: :\(\) 将 将 一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+
后 向引用:引用前面的分组括号中的模式所 匹配字符 , 而非模式本身
扩展正则表达式:
* #匹配前面字符任意次
? #0次或1次
+ #一次多多次
{m,n} #至少m次,至多n次,也可分开
C|cat: C 或cat (C|c)at:Cat 或cat
linux文本处理工具