標準輸入-0 鍵盤
標準輸出-1 當前終端窗口
標準錯誤-2 當前終端窗口 git
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 刪除 二者一塊兒使用結果以下:shell
[root@centos7 ~]# echo abc123 | tr -dc '123' 123[root@centos7 ~]#
-s 壓縮,將連續相同的字符壓縮爲一個 vim
[root@centos7 ~]# echo aaabbbccc |tr -s 'abc' abc
-t 替換字符 windows
[root@centos7 ~]# echo aaabbbccc | tr -t 'abc' '123' 111222333
hexdump 查看文件二進制編碼的十六進制centos
讀r、寫w、執行x三種權限
與用戶、組、權限相關的文件
/etc/passwd 用戶及其屬性信息
此文件中各字段以冒號分隔 bash
字段名 | 含義 |
---|---|
name | 用戶名 |
password | 密碼(用x佔位) |
UID | 用戶ID |
GID | 用戶組ID |
GECOS | 用戶描述信息 |
directory | 用戶家目錄 |
shell | 用戶默認shell |
/etc/group組及其屬性信息 app
字段名 | 含義 |
---|---|
group_name | 組名 |
passwd | 組密碼 |
GID | 組ID |
user_list | 用戶列表 |
/etc/shadow用戶密碼及其相關屬性 less
字段名 | 含義 |
---|---|
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
文件查看命令
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
grep:文本過濾(grep,egrep,fgrep)
sed:文本編輯工具
awk:Linux上的實現gawk,文本報告生成器
-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
與正則表達式相同,只是符號前不用加\,(){}
\< \>一樣表式詞首詞尾
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 退出
配置文件:永久有效 全局:/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