Linux文件权限管理与文本处理工具、grep命令、正则表达式、vim编辑器精讲

文件:

r: 可使用文件查看类工具获取其内容

w: 可修改其内容

x: 可以把此文件提请内核启动为一个进程

目录:

r: 可以使用ls查看此目录中文件列表

w: 可在此目录中创建文件,也可删除此目录中的文件

x: 可以使用ls -l查看此目录中文件列表,可以cd进入此

修改文件的属主:chown

修改文件的属组:chgrp

修改文件权限:chmod  

  修改一类用户的所有权限: u= g= o= ug= a= u=,g=

  修改一类用户某位或某些位权限:u+  u-  g+  g-   o+ o  -a+  a-  +   -

umask值可以用来保留在创建文件权限

新建FILE权限: 666-umask

如果所得结果某位存在执行(奇数)权限,则将其权限+1

新建DIR权限: 777-umask

全局设置:/etc/bashrc用户设置:~/.bashrc

Linux文件系统上的特殊权限

权限设定 chmod  u+s  FILE...   chmod  u-s   FILE...

               chmod  g+s  DIR...    chmod  g-s  DIR...

                chmod  o+t  DIR...     chmod   o-t  DIR...

设定文件特定属性

chattr +i 不能删除,改名,更改

chattr +a 只能追加内容

lsattr 显示特定属性

访问控制列表

CentOS7之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

  tune2fs –o acl/dev/sdb1

   mount –o acl/dev/sdb1 /mnt/test

ACL生效顺序:所有者,自定义用户,自定义组,其他人

setfacl -m u:wang:rwx file 设置acl

setfacl  -k dir  删除默认ACL权限

setfacl  –b file1 清除所有ACL权限

文本处理工具 

文件查看命令cat, tac,rev

cat  

-E: 显示行结束符$

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

-A:显示所有控制符

-b:非空行编号

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

head [OPTION]... [FILE]...

-c #: 指定获取前#字节

-n #: 指定获取前#行

-#: 指定行数

tail [OPTION]... [FILE]...

-c #: 指定获取后#字节

-n #: 指定获取后#行

-#:

-f: 跟踪显示文件fd新追加的内容,常用日志监控

相当于--follow=descriptor

-F: 跟踪文件名,相当于—follow=name --retry

cut

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

-f FILEDS:

#: 第#个字段

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

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

混合使用:1-3,7

-c 按字符切割

--output-delimiter=STRING指定输出分隔符

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

paste [OPTION]... [FILE]...

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

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

paste f1 f2

paste -s f1 f2

wc  -l 只计数行数

-w 只计数单词总数

-c 只计数字节总数

-m 只计数字符总数

-L 显示文件中最长行的长度

sort

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

-n 执行按数字大小整理

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

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

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

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

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

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

-d: 仅显示重复过的行

-u: 仅显示不曾重复的行

连续且完全相同方为重复

Linux文本处理三剑客

 --color=auto: 对匹配到的文本着色显示

-v: 显示不被pattern匹配到的行

-i: 忽略字符大小写

-n:显示匹配的行号

-c: 统计匹配的行数

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

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

-A #: after, 后#行

-B #: before, 前#行

-C #:context, 前后各#行

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

grep –e ‘cat ’ -e ‘dog’ file

-w:匹配整个单词

 -E:使用ERE

-F:相当于fgrep,不支持正则表达式

字符匹配:

. 匹配任意单个字符

[] 匹配指定范围内的任意单个字符

[^] 匹配指定范围外的任意单个字符

[:alnum:] 字母和数字

[:alpha:] 代表任何英文大小写字符,亦即A-Z, a-z

[:lower:] 小写字母[:upper:] 大写字母

[:blank:] 空白字符(空格和制表符)

[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)

[:digit:] 十进制数字[:xdigit:]十六进制数字

[:graph:] 可打印的非空白字符

[:print:] 可打印字符

[:punct:] 标点符号

匹配次数

* 匹配前面的字符任意次,包括0次

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

.* 任意长度的任意字符

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

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

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

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

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

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

位置锚定

^ 行首锚定,用于模式的最左侧

$ 行尾锚定,用于模式的最右侧

^PATTERN$ 用于模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< 或\b 词首锚定,用于单词模式的左侧

\> 或\b 词尾锚定;用于单词模式的右侧

\<PATTERN\> 匹配整个单词

分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体进

行处理,如:\(root\)\+

\1 表示从左侧起第一个左括号以及与之匹配右括号之间的

模式所匹配到的字符

 示例: \(string1\+\(string2\)*\)

\1 :string1\+\(string2\)*

\2 :string2

或者:\|

示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat

扩展正则表达式

egrep = grep -E

egrep [OPTIONS] PATTERN [FILE...]

*:匹配前面字符任意次

?: 0或1次

+:1次或多次

{m}:匹配m次

{m,n}:至少m,至多n次

位置锚定:

^ :行首

$ :行尾

\<, \b :语首

\>, \b :语尾

分组:

()

后向引用:\1, \2, ...

或者:

a|b: a或b

C|cat: C或cat

(C|c)at:Cat或cat

VIM文本编辑器

文本编辑种类:

行编辑器: sed

全屏编辑器:nano, vi

vim - Vi Improved

vim [OPTION]... FILE...

+#: 打开文件后,让光标处于第#行的行首,+默认行尾

+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

三种主要模式:

命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本

插入(Insert)或编辑模式: 修改文本

扩展命令(extended command )模式: 保存,退出等

Esc键 退出当前模式


命令模式 --> 插入模式

i: insert, 在光标所在处输入

I:在当前光标所在行的行首输入

a: append, 在光标所在处后面输入

A:在当前光标所在行的行尾输入

o: 在当前光标所在行的下方打开一个新行

O:在当前光标所在行的上方打开一个新行

扩展模式:

:q 退出

:q! 强制退出,丢弃做出的修改

:wq 保存退出

:x 保存退出

按“:”进入Ex模式

 创建一个命令提示符: 处于底部的屏幕左侧

命令:

w 写(存)磁盘文件

wq 写入并退出

x 写入并退出

q 退出

q! 不存盘退出,即使更改都将丢失

r filename 读文件内容到当前文件中

w filename 将当前文件内容写入另一个文件

!command 执行命令

r!command 读入命令的输出

字符间跳转:

h: 左 l: 右 j: 下 k: 上

#COMMAND:跳转由#指定的个数的字符

单词间跳转:

w:下一个单词的词首

e:当前或下一单词的词尾

b:当前或前一个单词的词首

#COMMAND:由#指定一次跳转的单词数

字符编辑:

x: 删除光标处的字符

#x: 删除光标处起始的#个字符

xp: 交换光标所在处的字符及其后面字符的位置

~:转换大小写

J:删除当前行后的换行符

替换命令(r, replace)

r: 替换光标所在处的字符

R:切换成REPLACE模式

删除命令:

d: 删除命令,可结合光标跳转字符,实现范围删除

d$: 删除到行尾

d^:删除到非空行首

d0:删除到行首

dw:

de:

db:

#COMMAND

 dd: 删除光标所在的行

#dd:多行删除

D:从当前光标位置一直删除到行尾,留空行,等同于d$

复制命令(y, yank):

y: 复制,行为相似于d命令

y$

y0

y^

ye

yw

yb

#COMMAND

 yy:复制行

#yy: 复制多行

Y: 复制整行

粘贴命令(p, paste):

p:缓冲区存的如果为整行,则粘贴当前光标所在行的下

方;否则,则粘贴至当前光标所在处的后面

P:缓冲区存的如果为整行,则粘贴当前光标所在行的上

方;否则,则粘贴至当前光标所在处的前面

改变命令(c, change)

c: 修改后切换成插入模式

 命令模式 --> 插入模式

c$

c^

c0

cb

ce

cw

#COMMAND

 cc:删除当前行并输入新内容,相当于S

#cc:

 C:删除当前光标到行尾,并切换成插入模式

查找并替换

s: 在扩展模式下完成查找替换操作

格式:s/要查找的内容/替换为的内容/修饰符

修饰符:

i: 忽略大小写

g: 全局替换;默认情况下,每一行只替换第一次出现

gc:全局替换,每次替换前询问

查找替换中的分隔符/可替换为其它字符,例如

s@/etc@/var@g

s#/boot#/#i

撤消更改

u撤销最近的更改

 #u撤销之前多次更改

 U 撤消光标落在这行后所有此行的更改

 按Ctrl - r重做最后的“撤消”更改

. 重复前一个操作

n.重复前一个操作n次

可视化模式

允许选择的文本块

v 面向字符

V 面向行

ctrl-v 面向块

可视化键可用于与移动键结合使用:

w ) } 箭头等

突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

多文件模式

vim FILE1 FILE2 FILE3 ...

:next 下一个

:prev 前一个

:first 第一个

:last 最后一个

:wall 保存所有

:qall 退出所有

:wqall

使用多个“窗口”

多文件分割

vim -o|-O FILE1 FILE2 ...

-o: 水平分割

-O: 垂直分割

在窗口间切换:Ctrl+w, Arrow

单文件窗口分割:

Ctrl+w,s: split, 水平分割

Ctrl+w,v: vertical, 垂直分割

ctrl+w,q:取消相邻窗口

ctrl+w,o:取消全部窗口

:wqall 退出

配置文件:永久有效

全局:/etc/vimrc

个人:~/.vimrc



第三周作业

1、编写脚本/root/bin/backup.sh ,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中

#!/bin/bash

cp -av /etc/ /data/etc`date +%F`

2、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

#!/bin/bash

df |grep "/dev/sd"|egrep -o "\<[[:digit:]]+%"|tr -d %|sort -nr|head -n1

3、编写脚本/root/bin/nologin.sh 和login.sh,实现禁止和充许普通用户登录系统

#!/bin/bash

read -p "请输入禁止的用户:" user

uid=$( id $user |tr " " @ |cut -d@ -f1 |grep -o "[0-9]\{3,\}" )

[ $uid -ge 500 ] && usermod -s /bin/nologin $user || echo '该用户为系统用户,无法禁止!'

echo '该用户已禁止登陆'

#!/bin/bash

read -p "请输入允许登录的用户:" user

uid=$( id $user |tr " " @ |cut -d@ -f1 |grep -o "[0-9]\{3,\}" )

[ $uid -ge 500 ] && usermod -s /bin/bash $user || echo '该用户为系统用户,无法禁止!'

echo '该用户已允许登陆'

4、查找/var目录下不属于root、lp、gdm的所有文件

find /var -not \( -user root -o -user lp -o -user gdm \)

5、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和 sed两种方法分别实现)

egrep -o "\<[[:alpha:]]+\>" /etc/init.d/functions|sort|uniq -c|sort -n

6、利用sed 取出ifconfig命令中本机的IPv4地址

ifconfig | sed -r -n '/inet /s/^[[:space:]]+inet (.*) net.*$/\1/p'|head -n1

7、总结yum的配置和使用,包括yum仓库的创建

c/s结构  http://  https://  ftp://  file://

配置文件后缀为repo  存放路径:/etc/yum.repos.d

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库建立:

[base]

basenameurl=http://  https://  ftp://  file://

gpgcheck=0

yum install 安装

yum groupinstall 组安装

yum remove 卸载

yum groupremove 组卸载

yum list 显示所有包

yum clean all 清除缓存

yum故障:1、配置文件 2、清除缓存

8、编写系统初始化脚本reset.sh ,包括别名,提示符颜色,yum仓库配置文件, 安装tree,ftp,lftp,telnet等包

echo "alias cdnet='cd /etc/sysconfig/network-scripts/'" >> /root/.bashrc

echo "PS1='\[\e[1;31;34m\][\u@\h \W]\\$\[\e[0m\]'" >>/etc/profile.d/env.sh

touch /etc/yum.repos.d/base.repo

echo "[base]">>/etc/yum.repos.d/base.repo

echo "name=base">>/etc/yum.repos.d/base.repo

echo "baseurl=https://mirrors.aliyun.com/centos/$releasever/os/x86_64/">>/etc/yum.repos.d/base.repo

echo "gpgcheck=0">>/etc/yum.repos.d/base.repo

yum install tree ftp lftp telnet -y

9、在CentOS7上编译安装apache2.4源码包,并启动此服务

关闭防火墙、关闭selinux

安装依赖包:

(1)、安装apr

tar -zxvf apr-1.4.5.tar.gz

cd apr-1.4.5

./configure --prefix=/usr/local/apr

make && make install

(2)、安装apr-util

tar -zxvf apr-util-1.3.12.tar.gz

cd apr-util-1.3.12

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make && make install

(3)、安装pcre

unzip pcre-8.10.zip

cd pcre-8.10/

./configure --prefix=/usr/local/pcre

make && make install

(4)、安装Apache

tar -xvf httpd-2.4.38.tar.gz

cd httpd-2.4.38

./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --with-apr=/usr/local/apr --with-apr-

util=/usr/local/apr-util --with-pcre=/usr/local/pcre --with-included-apr

make && make install

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • 1. 关于Vim vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我...
    Dyworldhua阅读 1,352评论 0 2
  • 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可...
    三十儿阅读 414评论 0 1
  • 原文:https://blog.csdn.net/scaleqiao/article/details/451533...
    凯睿看世界阅读 3,922评论 1 20
  • 本文摘自https://www.cnblogs.com/yangjig/p/6014198.html 感谢原作者的...
    荣子3507阅读 322评论 1 0