第二週學習總結

標準輸入-0 鍵盤
標準輸出-1 當前終端窗口
標準錯誤-2 當前終端窗口

I/O重定向:改變默認窗口

方法: >標準輸出重定向 重定向,新建或清空文件
1> 標準輸出重定向 2>標準錯誤重定向
>> 追加重定向 2>> 錯誤追加重定向
command &> file 合併重定向 <br>command > file 2>&1 錯變對放入file<br> command 2> file 1>&2 對變錯放入file 1> file1 2>file2 分別重定向
輸入重定向 <

set -C 禁止覆蓋
set +C 允許覆蓋
\>|強制覆蓋
tr 命令 替換或刪除字符
-c 取反
-d 刪除 兩者一起使用結果如下:

[root@centos7 ~]# echo abc123 | tr -dc '123' 
123[root@centos7 ~]# 

-s 壓縮,將連續相同的字符壓縮爲一個

[root@centos7 ~]# echo aaabbbccc |tr -s 'abc'
abc

-t 替換字符

[root@centos7 ~]# echo aaabbbccc | tr -t 'abc' '123'
111222333

hexdump 查看文件二進制編碼的十六進制

用戶、組和權限

讀r、寫w、執行x三種權限
與用戶、組、權限相關的文件
/etc/passwd 用戶及其屬性信息
此文件中各字段以冒號分隔

字段名 含義
name 用戶名
password 密碼(用x佔位)
UID 用戶ID
GID 用戶組ID
GECOS 用戶描述信息
directory 用戶家目錄
shell 用戶默認shell

/etc/group組及其屬性信息

字段名 含義
group_name 組名
passwd 組密碼
GID 組ID
user_list 用戶列表

/etc/shadow用戶密碼及其相關屬性

字段名 含義
name 用戶名
passwd 加密後的密碼
date of last password change 上次更改密碼的天數
minimum password age 密碼最短使用天數
maximum password age 密碼最長使用天數
password warning period 提前提示天數
password inactivity period 寬限天數
account expiration date 帳號有限期

/etc/gshadow 級密碼及其相關屬性
相關命令
useradd userdel
usermod -U 解鎖用戶
usermod -L 鎖定用戶
userdel -r 刪除賬戶
passwd [用戶名] 設置用戶密碼。只有root有權限對其他用戶使用此命令,普通用記只能用以修改自己的密碼
passwd -l;passwd -u 鎖定/解鎖用記密碼
passwd -S 查看用戶密碼是否鎖定
passwd -d [用戶名]刪除用戶密碼,刪除後不能登錄。只有root有權限使用此命令
groupadd 創建用戶組
groupmod -n 修改組名
groupdel 用戶組名 刪除用戶組
newgrp 加入一個新的用戶組
chpasswd 批量修改用戶密碼

chown 設置文件的所有者
chgrp 設置文件的屬組信息

文件權限

文件的權限主要針對三類對象進行定義
owener 屬主,u
group 屬組,g
other 其他,o
每個文件針對第類訪問都都定義了三種權限
chmod 設置文件權限

文件系統上的特殊權限

特殊權限
chmod u+s FILE...
chmod u-s FILE...
chmod g+s FILE...
chmod g-s FILE...
suid:作用於二進制可執行的文件的所有者位上,功能:執行此文件的用戶臨時繼承此文件所有者權限
sgid:
1)作用於二進制可執行的文件的所屬組位上,功能:執行此文件的用戶將臨時繼承此文件的屬組的權限
2)作用於目錄的所屬組位上,功能:此目錄中新建文件的所屬組將自動從此目錄繼承
sticky:作用於目錄,功能:此的文件只能被所有者刪除。
chmod o+t DIR
chmod o-t DIR

設定文件特定屬性

chattr +i 不能刪除,改名,更改
chattr +a 只能追加內容
lsattr 顯示特定屬性

訪問控制列表

ACL:Access Control list 實現靈活的權限管理
CentOS7默認創建的xfs和ext4文件系統 具有ACL功能
CentOS7之前版本,默認手工創建的ext4文件系統無ACL功能,需手工添加
tune2fs -o alc /dev/sdb1
mount -o alc /dev/sdb1 /mnt/test
ACL生效順序:所有者自定義用記,自定義組,其他人
setfacl 設置ACL
setfacl -m u:用戶名:權限 指定文件名 給用戶設置文件ACL權限
setfacl -m g:組名:權限 指定文件名 給用戶組設置文件ACL權限
setfacl -x u:用戶名 文件名 刪除用戶對文件的ACL權限
setfacl -x g:組名 文件名 刪除用戶組對文件的AC權限
setfacl -b 文件名 刪除所有ACL權限
setfacl -R -m u:用戶名:權限 文件名 遞歸設置文件的ACL權限,所有子目錄和子方伯也有相同的ACL權限
setfacl -m d:u:用戶名:權限 文件名 默認ACL權限,對父目錄設定了默認的ACL權限,新尋的子文件繼承父目錄的ACL權限
getfacl 顯示ACL

文本處理工具和正則表達式

抽取文本的工具

文件內容:less和cat
文件截取:head和tail
按列抽取:cut
按關鍵字抽取:grep

文件查看命令
cat -E 顯示行結束符$
-n 對顯示出的第一行進行編號
-A 顯示所有控制符
-b 非空行編號
-s 壓縮連續的窄成一行
tac 與 cat命令相所顯示文件

分頁查看文件內容
more :分頁查看文件
-d:顯示翻頁及退出提示
less:一頁一頁地查看文件或STDIN輸出
查看明有用的命令包括:
/文本搜索
n/N 跳到下一個或上一個匹配位置
命令man使用的分頁器

顯示文本前或後行內容
head -cN 指定獲取前N個字節
-nN指定獲取前N行,默認爲前10行
-N 指定行數
tail -cN 指定獲取後N個字節
-nN 指定獲取後N行
-N 指定行數
-f 跟蹤顯示文件新追加的內容,常用日誌監控
-F 跟蹤文件名,
tailf 類似-f
按列抽取文本
cut -d 指明分隔符,默認tab
-f N 第N個字段
-fM,N,P分散的多個字段
-fN-M 連續的N到M的字段
-c 按字符切割

paste 合併兩個文件同行的列到一行
-d 分隔符,指定分隔符,默認用tab
-s 所有行全成一行顯示
分析文本的工具
文本數據 統計:wc
-l 只計數行數,-w只計數單詞總數,-c只計數字節總數,-m只計數字符部數,-L顯示文件中最長行的長度
整理文本:sort
-r 執行反方向整理,-R隨機排序,-n 執行按數字大小整理,-f 選項忽略字符串中的字符大小寫,-u 選項刪除輸出 中的重複行,-t x 選項使用x做爲字段界定符,-k X 按照使用x字符分隔的X列來整理
uniq
-c 顯示每行重複出現的次數,-d 僅顯示重複過的行,-u 僅顯示不曾重複的行
通常sort命令與uniq配合使用
sort userlins.txt | uniq -c
比較文件:diff和patch
diff 比較兩個文件之間的區別
diff f1 f2

Linux文本處理三劍客

grep:文本過濾(grep,egrep,fgrep)
sed:文本編輯工具
awk:Linux上的實現gawk,文本報告生成器

grep命令選項

-mX匹配X次後停止,-v 顯示不被匹配到的行,-I忽略字符大小寫,-n顯示匹配的行號,-c統計匹配的行數,-o顯示匹配到的字符串,-q靜默模式,不輸出任何信息,-A X 後x行,-B X 前X行,-C X 前後各X行,-e實現多個選項間的邏輯or(或)關係,-w匹配整個單詞,-E 使用擴展正則表達式,-F同fgrep,不支持正則表達式,-f file根據模式文件處理

正則表達式

正則表達式有基本正則表達式:BRE和擴展正則表達式:ERE

字符匹配

. 匹配任意單個字符
[] 匹配指定範圍內的任意單個字符,[abc]abc中的任意一個,[0-9][a-z][A-Z]
[^]匹配指定範圍外的任意單個字符,[^abc]除了abc以外的任意單個字符
[:alnum:]字母和數字
[:alpha:]全部字母
[:lower:]小寫字母
[:upper:]大寫字母
[:black:]空白字符
[:space:]水平和垂直的空白字符
[:cntrl:]不可打印的控制字符
[:digit:]十進制數字[:xdigit:]十六進制數字
[:graph:]可打印的非空的字符
[:print:]可打印字符
[:punct:]標點符號

匹配次數

*匹配前面的字符任意次,包括0次
.*任意長度任意字符
\?匹配其前面的字符0或1次
\+匹配其前面的字符至少1次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次
\{n,\}匹配前面的字符至少n次

位置錨定

^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行
^$ 空行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定,用於單詞模式的右側
\<PATTERN\> 匹配整個單詞
分組
\(root\) 將一個或多個字符捆綁在一起,當作一個整合處理
分組括號中的模式匹配到的內容會被正則表達式引擎記錄於內部的變量中,命名爲\1,\2,\3,...
\1表示從左側起第一個分組匹配到的字符
後向引用
引用前面的分組括號中的模式所匹配字符,而非模式本身
或者
\|
a\|b 表式a或者b

如果需要匹配\ . (){}[]^$等符號,要在前面加一個\進行轉義,如 \.表示匹配點(.)這個字符,而不是表式匹配任意個字符

egrep擴展的正則表達式
gerep=grep -E
與正則表達式相同,只是符號前不用加\,(){}
\< \>同樣表式詞首詞尾

vim簡介

vi:Visual Interface 文本編輯器
vim FILE 用vim打開一個文本文件
vim +# FILE 打開文件後,讓光標處於第#行,+默認行尾
+/PATTER 讓光標處於第一個被 PATTERN匹配到的行的行首
-b FILE 二進制方式打開文件
-d FILE1 FILE2...比較多個文件
-m FILE 只讀打開文件
vim是一個模式編輯器
三種主要模式:
命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本
插入(Insert)或編輯模式:修改文本
擴展命令(extended command )模式:保存,退出等
ESC鍵退出當前模式,並返回到命令模式

模式轉換

命令模式——>插入模式
i insert在光標所在處前輸入 I 在當前光標所在行的行首輸入
a append在光標所在處後輸入 A 在當前光標所在行的行尾輸入
o ...在光標所在行的下方新開一行 O 在當前光標所在行的上方新開一行
插入模式——>命令模式
ESC鍵
命令模式——>擴展命令模式
:冒號
擴展命令模式——>命令模式
ESC,enter

關閉文件

擴展命令模式
:q 退出
:q! 不保存修改退出
:wq!保存退出
:x 保存退出
命令模式
ZZ 保存退出
ZQ 不保存退出,不推薦使用

擴展命令模式

:進入Ex模式
w 寫磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存盤退出
r FILENAME 讀取文件到當前文件中
w FILENAME 將當前文件寫入FILENAME文件中
!command 執行命令
r!commane 讀入命令的輸出

命令模式光標跳轉


字符間跳轉:
h:左 l:右 j:下 k:上
#command:跳轉指定的個數的字符


單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
#command: 由#指定一次跳轉的單次數


當前頁跳轉:
H:頁首 M:頁中間行 L:頁底
zt:將光標所在當年行移到屏幕頂端
zz:將光標所在當前行移至屏幕中間
zb:將光標所在當前行移到屏幕底端


行首行尾跳轉:
^ 跳轉至行首的第一個非空白字符
0 跳轉至行首
$ 跳轉至行尾


行間移動:
#G 跳轉至第#行 與:相同
G 最後一行
1G,gg第一行


句間移動:
) 下一句; ( 上一句


段落間移動:
} 下一段; { 上一段


命令模式翻屏操作

CTRL+f 向文件尾部翻一屏
CTRL+b 向文件首部翻一屏
CTRL+d 向文件尾部翻半屏
CTRL+u 向文件首部翻半屏


命令模式操作

字符編輯:
x 刪除光標處的字符
#x 刪除光標處起始的#個字符
xp 交換光標所在處的字符及其後面字符的位置
~ 轉換大小寫
J 刪除當前行後的換行符
替換命令(r,replace)
r 替換光標所在處的字符
R 切換成REPLACE模式 (一直替換到按ESC時結束)
刪除命令
d 刪除命令,可結合光標跳轉字符,實現範圍刪除
d$ 刪除到行尾
d^ 刪除到非空行首
d0 刪除到行首
dw
de
db
#COMMADN 刪除#行
dd:刪除泡棉所在的行
#dd 多行刪除
D :從當前光標位置一直刪除到行尾,等同於d$
複製命令(y,yank):
y 複製,行爲與d命令相似
y$ 複製到行尾
y0
y^
ye
yw
yb
#yy 複製多行
Y 複製整行
粘貼命令(p,paste)
p 緩衝區存的如果爲整行,則粘貼當前光標所在行的下方;否則,則粘 貼至當前光標所在處的後面
P 緩衝區存的如果爲整行,則粘貼當前光標所在行的上方;否則,則粘 貼至當前光標所在處的前面

100izhangESC 粘貼“wang” 100次

命令模式:查找
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當年光標所在處向文件首部查找
n與命令相同方向
N與命令相反方向
命令模式:撤消更改
u 撤消最近的更改
#u 撤消之前多次更改
U 撤消光標落在這行後所有些行的更改
Ctrl-r 重做最後的"撤消"更改
.重複前一個操作
#.重複前一個操作#次

擴展命令模式:查找並替換
:%s/ABC/123/g 將全部ABC替換成123 /可以是其他字符如#$@等
:%s/ABC/123/gc 將全部ABC替換成123,每次替換時詢問

使用多個"窗口"
vim -o|-O FILE1 FILE2...
-o 水平分割 -O垂直分割
在窗口間切換:CTRL+w
單文件窗口分割
Ctrl+w,s:split, 水平分割
Ctrl+w,v:vertical, 垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o:取消全部窗口
:wqall 退出

定製vim的工作特性

配置文件:永久有效
全局:/etc/vimrc
個人:~/.vimrc
擴展命令模式:當前vim進程有效
(1) 行號
顯示行號:set number |set nu
取消顯示:set nonumber |set nonu
(2) 忽略字符的大小寫
啓用:set ignorecase| set ic
不忽略:set noic
(3) 自動縮進
啓用:set autoindent| set ai
禁用:set noai
(4) 複製保留格式
啓用:set paste
禁用:set nopate
(5) 顯示Tab和換行符
啓用:set list
禁用:set nolist
(6) 高亮搜索
啓用:set hlsearch
禁用:set nohlsearch
(7) 語法高亮
啓用:syntax on
禁用: syntax off
(8) 文件格式
啓用windows格式:set fileformat=dos
啓用unix格式:set fileformat=unix 簡寫 set ff=dos|unix
(9) 設置文本寬度
set textwidth=65 (vim only)
set wrapmargin=15
(10) 設置光標所在行的標識線
啓用:set cursorline,簡寫 set cul
禁用:set nocursorline

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章