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
原創文章,作者:shewei,如若轉載,請注明出處:http://www.www58058.com/70009