Linux文件權(quán)限管理與文本處理工具、grep命令、正則表達(dá)式、vim編輯器精講

文件:

r: 可使用文件查看類工具獲取其內(nèi)容

w: 可修改其內(nèi)容

x: 可以把此文件提請內(nèi)核啟動為一個進(jìn)程

目錄:

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

w: 可在此目錄中創(chuàng)建文件,也可刪除此目錄中的文件

x: 可以使用ls -l查看此目錄中文件列表,可以cd進(jìn)入此

修改文件的屬主:chown

修改文件的屬組:chgrp

修改文件權(quán)限:chmod??

? 修改一類用戶的所有權(quán)限: u= g= o= ug= a= u=,g=

? 修改一類用戶某位或某些位權(quán)限:u+? u-? g+? g-? ?o+ o? -a+? a-? +? ?-

umask值可以用來保留在創(chuàng)建文件權(quán)限

新建FILE權(quán)限: 666-umask

如果所得結(jié)果某位存在執(zhí)行(奇數(shù))權(quán)限,則將其權(quán)限+1

新建DIR權(quán)限: 777-umask

全局設(shè)置:/etc/bashrc用戶設(shè)置:~/.bashrc

Linux文件系統(tǒng)上的特殊權(quán)限

權(quán)限設(shè)定?chmod? u+s? FILE...? ?chmod? u-s? ?FILE...

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

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

設(shè)定文件特定屬性

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

chattr +a 只能追加內(nèi)容

lsattr 顯示特定屬性

訪問控制列表

CentOS7之前版本,默認(rèn)手工創(chuàng)建的ext4文件系統(tǒng)無ACL功能,需手動增加

? tune2fs –o acl/dev/sdb1

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

ACL生效順序:所有者,自定義用戶,自定義組,其他人

setfacl -m u:wang:rwx file 設(shè)置acl

setfacl? -k dir? 刪除默認(rèn)ACL權(quán)限

setfacl? –b file1 清除所有ACL權(quán)限

文本處理工具?

文件查看命令cat, tac,rev

cat??

-E: 顯示行結(jié)束符$

-n: 對顯示出的每一行進(jìn)行編號

-A:顯示所有控制符

-b:非空行編號

-s:壓縮連續(xù)的空行成一行

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

-c #: 指定獲取前#字節(jié)

-n #: 指定獲取前#行

-#: 指定行數(shù)

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

-c #: 指定獲取后#字節(jié)

-n #: 指定獲取后#行

-#:

-f: 跟蹤顯示文件fd新追加的內(nèi)容,常用日志監(jiān)控

相當(dāng)于--follow=descriptor

-F: 跟蹤文件名,相當(dāng)于—follow=name --retry

cut

-d DELIMITER: 指明分隔符,默認(rèn)tab

-f FILEDS:

#: 第#個字段

#,#[,#]:離散的多個字段,例如1,3,6

#-#:連續(xù)的多個字段, 例如1-6

混合使用:1-3,7

-c 按字符切割

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

paste 合并兩個文件同行號的列到一行

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

-d 分隔符:指定分隔符,默認(rèn)用TAB

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

paste f1 f2

paste -s f1 f2

wc??-l 只計數(shù)行數(shù)

-w 只計數(shù)單詞總數(shù)

-c 只計數(shù)字節(jié)總數(shù)

-m 只計數(shù)字符總數(shù)

-L 顯示文件中最長行的長度

sort

-r 執(zhí)行反方向(由上至下)整理

-n 執(zhí)行按數(shù)字大小整理

-f 選項忽略(fold)字符串中的字符大小寫

-u 選項(獨(dú)特,unique)刪除輸出中的重復(fù)行

?-t c 選項使用c做為字段界定符

?-k X 選項按照使用c字符分隔的X列來整理能夠使用多次

uniq命令:從輸入中刪除前后相接的重復(fù)的行

-c: 顯示每行重復(fù)出現(xiàn)的次數(shù)

-d: 僅顯示重復(fù)過的行

-u: 僅顯示不曾重復(fù)的行

連續(xù)且完全相同方為重復(fù)

Linux文本處理三劍客

?--color=auto: 對匹配到的文本著色顯示

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

-i: 忽略字符大小寫

-n:顯示匹配的行號

-c: 統(tǒng)計匹配的行數(shù)

-o: 僅顯示匹配到的字符串

-q: 靜默模式,不輸出任何信息

-A #: after, 后#行

-B #: before, 前#行

-C #:context, 前后各#行

-e:實(shí)現(xiàn)多個選項間的邏輯or關(guān)系

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

-w:匹配整個單詞

?-E:使用ERE

-F:相當(dāng)于fgrep,不支持正則表達(dá)式

字符匹配:

. 匹配任意單個字符

[] 匹配指定范圍內(nèi)的任意單個字符

[^] 匹配指定范圍外的任意單個字符

[:alnum:] 字母和數(shù)字

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

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

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

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

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

[:digit:] 十進(jìn)制數(shù)字[:xdigit:]十六進(jìn)制數(shù)字

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

[:print:] 可打印字符

[:punct:] 標(biāo)點(diǎn)符號

匹配次數(shù)

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

? ? ? ? ?貪婪模式:盡可能長的匹配

.* 任意長度的任意字符

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

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

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

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

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

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

位置錨定

^ 行首錨定,用于模式的最左側(cè)

$ 行尾錨定,用于模式的最右側(cè)

^PATTERN$ 用于模式匹配整行

^$ 空行

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

\< 或\b 詞首錨定,用于單詞模式的左側(cè)

\> 或\b 詞尾錨定;用于單詞模式的右側(cè)

\<PATTERN\> 匹配整個單詞

分組:\(\) 將一個或多個字符捆綁在一起,當(dāng)作一個整體進(jìn)

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

\1 表示從左側(cè)起第一個左括號以及與之匹配右括號之間的

模式所匹配到的字符

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

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

\2 :string2

或者:\|

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

擴(kuò)展正則表達(dá)式

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...

+#: 打開文件后,讓光標(biāo)處于第#行的行首,+默認(rèn)行尾

+/PATTERN:打開文件后,直接讓光標(biāo)處于第一個被PATTERN匹配到的行的行首

三種主要模式:

命令(Normal)模式:默認(rèn)模式,移動光標(biāo),剪切/粘貼文本

插入(Insert)或編輯模式: 修改文本

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

Esc鍵 退出當(dāng)前模式


命令模式 --> 插入模式

i: insert, 在光標(biāo)所在處輸入

I:在當(dāng)前光標(biāo)所在行的行首輸入

a: append, 在光標(biāo)所在處后面輸入

A:在當(dāng)前光標(biāo)所在行的行尾輸入

o: 在當(dāng)前光標(biāo)所在行的下方打開一個新行

O:在當(dāng)前光標(biāo)所在行的上方打開一個新行

擴(kuò)展模式:

:q 退出

:q! 強(qiáng)制退出,丟棄做出的修改

:wq 保存退出

:x 保存退出

按“:”進(jìn)入Ex模式

?創(chuàng)建一個命令提示符: 處于底部的屏幕左側(cè)

命令:

w 寫(存)磁盤文件

wq 寫入并退出

x 寫入并退出

q 退出

q! 不存盤退出,即使更改都將丟失

r filename 讀文件內(nèi)容到當(dāng)前文件中

w filename 將當(dāng)前文件內(nèi)容寫入另一個文件

!command 執(zhí)行命令

r!command 讀入命令的輸出

字符間跳轉(zhuǎn):

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

#COMMAND:跳轉(zhuǎn)由#指定的個數(shù)的字符

單詞間跳轉(zhuǎn):

w:下一個單詞的詞首

e:當(dāng)前或下一單詞的詞尾

b:當(dāng)前或前一個單詞的詞首

#COMMAND:由#指定一次跳轉(zhuǎn)的單詞數(shù)

字符編輯:

x: 刪除光標(biāo)處的字符

#x: 刪除光標(biāo)處起始的#個字符

xp: 交換光標(biāo)所在處的字符及其后面字符的位置

~:轉(zhuǎn)換大小寫

J:刪除當(dāng)前行后的換行符

替換命令(r, replace)

r: 替換光標(biāo)所在處的字符

R:切換成REPLACE模式

刪除命令:

d: 刪除命令,可結(jié)合光標(biāo)跳轉(zhuǎn)字符,實(shí)現(xiàn)范圍刪除

d$: 刪除到行尾

d^:刪除到非空行首

d0:刪除到行首

dw:

de:

db:

#COMMAND

?dd: 刪除光標(biāo)所在的行

#dd:多行刪除

D:從當(dāng)前光標(biāo)位置一直刪除到行尾,留空行,等同于d$

復(fù)制命令(y, yank):

y: 復(fù)制,行為相似于d命令

y$

y0

y^

ye

yw

yb

#COMMAND

?yy:復(fù)制行

#yy: 復(fù)制多行

Y: 復(fù)制整行

粘貼命令(p, paste):

p:緩沖區(qū)存的如果為整行,則粘貼當(dāng)前光標(biāo)所在行的下

方;否則,則粘貼至當(dāng)前光標(biāo)所在處的后面

P:緩沖區(qū)存的如果為整行,則粘貼當(dāng)前光標(biāo)所在行的上

方;否則,則粘貼至當(dāng)前光標(biāo)所在處的前面

改變命令(c, change)

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

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

c$

c^

c0

cb

ce

cw

#COMMAND

? cc:刪除當(dāng)前行并輸入新內(nèi)容,相當(dāng)于S

#cc:

? C:刪除當(dāng)前光標(biāo)到行尾,并切換成插入模式

查找并替換

s: 在擴(kuò)展模式下完成查找替換操作

格式:s/要查找的內(nèi)容/替換為的內(nèi)容/修飾符

修飾符:

i: 忽略大小寫

g: 全局替換;默認(rèn)情況下,每一行只替換第一次出現(xiàn)

gc:全局替換,每次替換前詢問

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

s@/etc@/var@g

s#/boot#/#i

撤消更改

u撤銷最近的更改

?#u撤銷之前多次更改

?U 撤消光標(biāo)落在這行后所有此行的更改

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

. 重復(fù)前一個操作

n.重復(fù)前一個操作n次

可視化模式

允許選擇的文本塊

v 面向字符

V 面向行

ctrl-v 面向塊

可視化鍵可用于與移動鍵結(jié)合使用:

w ) } 箭頭等

突出顯示的文字可被刪除,復(fù)制,變更,過濾,搜索,替換等

多文件模式

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



第三周作業(yè)

1、編寫腳本/root/bin/backup.sh ,可實(shí)現(xiàn)每日將/etc/目錄備份到 /root/etcYYYY-mm-dd中

#!/bin/bash

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

2、編寫腳本/root/bin/disk.sh,顯示當(dāng)前硬盤分區(qū)中空間利用率最大的值

#!/bin/bash

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

3、編寫腳本/root/bin/nologin.sh 和login.sh,實(shí)現(xiàn)禁止和充許普通用戶登錄系統(tǒng)

#!/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 '該用戶為系統(tǒng)用戶,無法禁止!'

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 '該用戶為系統(tǒng)用戶,無法禁止!'

echo '該用戶已允許登陸'

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

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

5、統(tǒng)計/etc/init.d/functions文件中每個單詞的出現(xiàn)次數(shù),并排序(用grep和 sed兩種方法分別實(shí)現(xiàn))

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

6、利用sed 取出ifconfig命令中本機(jī)的IPv4地址

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

7、總結(jié)yum的配置和使用,包括yum倉庫的創(chuàng)建

c/s結(jié)構(gòu)? 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、編寫系統(tǒng)初始化腳本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源碼包,并啟動此服務(wù)

關(guān)閉防火墻、關(guān)閉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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,693評論 0 5
  • 1. 關(guān)于Vim vim是我最喜歡的編輯器,也是linux下第二強(qiáng)大的編輯器。 雖然emacs是公認(rèn)的世界第一,我...
    Dyworldhua閱讀 1,569評論 0 2
  • 在命令狀態(tài)下對當(dāng)前行用== (連按=兩次), 或?qū)Χ嘈杏胣==(n是自然數(shù))表示自動縮進(jìn)從當(dāng)前行起的下面n行。你可...
    三十兒閱讀 466評論 0 1
  • 原文:https://blog.csdn.net/scaleqiao/article/details/451533...
    凱??词澜?/span>閱讀 4,323評論 1 20
  • 本文摘自https://www.cnblogs.com/yangjig/p/6014198.html 感謝原作者的...
    榮子3507閱讀 387評論 1 0

友情鏈接更多精彩內(nèi)容