文件基本权限,grep awk sed

0805课堂笔记

基本权限

读,写,执行

对于文件的读权限,能否查看文件内容.(文件内容需不需要看,如果是文本就需要看,如果是二进制就不需要看)

对于文件的写权限,能否修改文件内容,不能修改文件名,不能删除文件.(如果需要修改文件内容和文件名,必须在其父目录增加写权限和执行权限)

对于文件的执行权限,能否运行他.

对于目录的读权限,能否查看目录中的文件列表,如果只有读权限,也只能看到文件列表的名称,如果没有执行权限,将只能查看文件列表,而不能查看其内容,所以必须要配合执行权限

大写X权限如果作用在目录上,加上-R选项,将会递归在该目录下的所有文件,这时候X就会判断父目录下的所有文件或目录,如果是目录就会带x权限,如果是文件将会判断其是否有X权限,如果有则会加,没有则无X权限.(大X权限只能使用模式法,不能使用数字法)

数字法读写执行权限对应数字

读read 4

写write 2

执行executo 1

指定文件的所属组所有者

更改所有者

chown

(chown同样可以修改所属组.如:chown :g1 file 偶然

dir 这种写法就可以修改所属组为g1)

更改所属组

chgrp

修改权限命令

chmod

新建文件的权限由umask决定

root的umask 022

user:002

越大的umask值权限越小.

文件的默认权限

file default = 666-umask

奇数+1

如果是奇数将会屏蔽不掉x权限,而umask的作用就是为了屏蔽掉x权限.

目录的默认权限

dir default = 777-umask

umask的定义可以在家目录下的.bash_profile或.bashrc中

全局定义在/etc/bashrc或/etc/profile

chattr

+i 不能更改或删除

+a 只能增加

+A Access访问时间锁定

lsattr

查看文件附加权限

特殊权限

suid 工作在二进制文件,必须是文件,不能是目录(因为如果工作在目录将没有意义),普通用户运行这个文件将会继承文件所有者的身份,所以所有者身份必须带有x权限.

sgid 可以作用与文件或者目录,作用在文件上跟suid差不多,但是继承的是文件所属组的权限,作用在目录上的话,

sticky可以作用与目录上,其作用就是只有root和普通用户才能删除目录中所有者是自己的文件.

(文件拥有Suid,Sgid,Skicky位时,必须拥有X权限,如果没有,将会显示大写的SST,因为如果没有那么suid和sgid,skicy将没有意义)

文件权限的应用顺序

所有者,自定义的ACL记录(自定义用户,自定义组),group(定义了ACL之后组就是mask),other

访问控制列表(ACL)

getfacl file|directory 查看文件或目录的ACL权限

setfacl –m u:wang:rwx file | directory 增加文件用户wangACL权限

setfacl –Rm g:sales:rwX directory 递归ACL权限给sales组到这个目录

setacl –M file.acl file|directory 通过文本模式增加ACL权限给文件或目录

setfacl –m g:salegroup:rw file:directory 增加文件或目录salegroup组的ACL权限

setfacl –m d:u:wang:rx directory 增加某个目录下新建文件默认的ACL权限是rx

setfacl –x u:wang file |directory 根据指定ACL权限来删除

setfacl –X file.acl directory 通过文本模式删除acl权限

setfacl –b file|directory 清空所有acl权限和记录

文本处理工具

抽取文本内容:less和cat

more:分页查看文件

more [OPTIONS…]FILE…

-d 显示翻页及退出提示

less:一页一页地查看文件或STDIN输出

查看时有用的命令包括

/文本 搜索 文本

n/N 跳到下一个 or 上一个匹配

less 命令是man命令使用的分页器

文件查看命令:cat,tac,rev

-E 显示行结束符$

-n 对显示的每一行进行编号

-A 显示所有控制符 是-vET的组合

-b 非空行编号

-s 压缩的连续的空行成一行

-T 查看Tap符号^I

-v 查看windows下的回车^M

tac 按行来倒置显示

rev 按行来反向显示每一个字符

如: cat f1

1234

abcd

tac f1

abcd

1234

rev f1

4321

dcba

hexdump 查看文件十六进制编码

文件截取:head和tail

head 查看文件内容前几行

head –n 3 查看内容前3行

tail –n 3 查看内容后3行

不带选项的默认查看前10行或后10行

tail –f 跟踪显示文件新追加的内容,常用日志监控(缺点无法在进行其他的工作)

在后面增加&可以在后台执行

tail –n 0 var/message &

fg将后台执行的命令放到前台来关闭他

-c 显示最后几个字节

按列抽取:cut

cut [OPTION…] [FILE…]

-d DELIMITER:指明分隔符,默认tab

-f FILEDS:

:第#个字段

,#[,#]:离散的多个字段,例如1,3,6

-#: 连续的多个字段,例如1-6

-c 按字符切割

–output-delimiter=STRING知道你跟输出分隔符

显示文件或STDIN数据的指定列

cut –d: -f1 /etc/passwd

取passwd文件中以:分隔符取第一列内容

cat /etc/passwd | cut –d: -f7

取passwd文件中以:分隔符第七列内容

cut –c2-5 /usr/share/dict/words

取words 文件中 字符2-5列的内容

paste 合并两个文件同行号的列到一行

paste [OPTION]… [FILE]…

-d 分隔符:指定分隔符,默认用TAB

paste f1 f2

-s: 所有行合成一行显示

paste –s f1 f2

马哥linux课堂笔记

文本数据的统计工具

wc(word count)

-m 统计字符

整理文本:sort

把整理过的文本显示在STDOUT,不改变原始文件

sort [options] files

常用选项

-r 执行反方向(由上至下)整理

-n 执行按数字大小整理

-f 选项忽略(fold)字符串中的字符大小写

-u 选项(独特,unique)删除输出中的重复行

-t c 选项使用c作为字段界定符

-k X 选项按照使用c字符分隔的X列来整理能够使用多次

uniq命令:从输入中删除重复的前后相接的行

uniq [OPTIONS]… [FILE]…

-c 显示每行重复出现的次数

-d 仅显示重复过的行

-u 仅显示不曾重复的行

常和sort命令一起配合使用:

sort userlist.txt | uniq –c

比较文件:diff和patch

diff 命令的输出被保存在一种叫做”补丁”的文件中

使用-u 选项来输出”同意的(unifed)”diff格式文件,最适用于补丁文件

patch 命令复制在其他文件中进行的改变(要谨慎使用!)

适用-b 选项来自动备份改变了的文件

diff –u foo.conf-broken foo.conf-works > foo.patch

patch –b foo.conf-broken foo.patch

按关键字抽取:grep

linux上文本处理三剑客:grep,sed,awk

grep:文本过滤(pattern)工具;

gred,egrep,[fgrep(不支持正则表达式搜索)]

正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义.而表示控制或通配的功能

程序支持:grep,vim,less,nginx等

分两类:

基本正则表达式: BRE

扩展正则表达式:ERE

grep –E,egrep

正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块

PCRE(Perl Compatible Regular Expressions)

元字符分类:字符匹配,匹配字数,位置锚定,分组

man 7 regex

grep的工具名Global search Regular expression and Printout the line (全局搜索正则表达式并且打印出相印的行)

作用:文本搜索工具,根据用户指定的”模式”对目标文本逐行进行匹配检查:打印匹配到的行;

模式:由正则表达式字符及文本字符所编的过滤条件

grep [OPTIONS] PATTERN[FILE…]

grep rot /etc/passwd

grep “$USER”/etc/passwd

grep ‘$USER’/etc/passwd

grep whoami /etc/passwd

-v 显示不能够被patern匹配到的行

-I 忽略字符大小写

-n 显示匹配到的行号

-c 统计匹配的行数

-o 仅显示匹配到的字符串

-q 静默模式,不输出任何信息

grep –q root /etc/passwd

找到找不到都不显示,配合echo $? 使用,如果显示0说明找到,如果显示为1说明没找到

马哥linux课堂笔记

-A #:after,后#行

-B #:before,前#行

-C #:context,前后各#行

-e 实现多个选项间的逻辑or关系

grep –e cat -e dog file

-w整行匹配整个单词

-E 使用ERE

字符匹配:

. :匹配任意单个字符

[:digit:][:lower:][:upper:][:alpha:][:alnum:][:punct:][:space:]

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

*: 匹配前面的字符一次,包括0次

贪婪模式:尽可能长的匹配

.*:任意长度的任意字符

?:匹配其前面的字符0或1次

+:匹配其前面的字符至少1次

{n}:匹配前面的字符n次

{m,n}:匹配前面的字符至少m次,至多n次

{,\n}:匹配前面的字符至多n次

{n,}:匹配前面的字符至少n次

sed:stream editor,文本编辑工具

awk: linux上的实现gawk,文本报告生成器

你可能感兴趣的:(文件基本权限,grep awk sed)