登錄
- 完整的遠程登錄方式:ssh -p 端口號 用戶名:用戶密碼@服務(wù)器地址
注:其中的端口號默認是22,默認值可以省略,服務(wù)器地址也可以是域名或者主機名
注:ssh服務(wù)的全局配置文件 /etc/ssh/ssh_config;
對應(yīng)的服務(wù)名是sshd(以d結(jié)尾的一般都是守護進程); - 切換用戶
su [用戶名] : 切換用戶,不跟用戶名表示切換到root用戶;- 用戶名,表示切換用戶的同時目錄切入到用戶家目錄。
linux系統(tǒng),一切皆文件。
shell快捷鍵
ctrl + c : 取消當前操作
ctrl + a : 移動光標至行首
ctrl + e : 移動光標至行尾
ctrl + l : 清屏操作,相當于clear
ctrl + h : 往前刪除一個字符
ctrl + w : 往前刪除一個單詞
ctrl + u : 刪除至行首
ctrl + d : 退出當前用戶登錄,相當于logout
系統(tǒng)目錄
系統(tǒng)安裝好后自動創(chuàng)建的一些有專門作用的目錄
bin:(binary)用戶命令,(普通用戶就)可以執(zhí)行的一些二進制文件;
sbin:(super binary),管理命令,需要超級用戶權(quán)限才能運行的二進制文件;
usr:(universal shared read-only)核心功能程序,以及用戶自己安裝的軟件默認都會安裝與此。類似于windows下的program files;
dev:(device),該目錄中主要存放的是一些外接設(shè)備,比如優(yōu)盤、其他光盤等,在其中的設(shè)備是不能直接被使用的,需要掛載到某個文件下(類似windows下的分配盤符);
home:家目錄,除了root用戶以外的其他用戶的家目錄,是用戶的相對獨立的操作空間(類似windows下的user/用戶目錄);
proc:(progress),進程目錄,在進程運行的過程中,產(chǎn)生代表這些進程的文件,偽文件系統(tǒng),映射系統(tǒng)內(nèi)核。
sys:偽文件系統(tǒng),跟硬件設(shè)備相關(guān)的屬性映射文件(常用來對設(shè)備調(diào)優(yōu)等);
root:root用戶的家目錄;
tmp:系統(tǒng)和軟件在運行中產(chǎn)生的臨時文件;
var:存放系統(tǒng)或者程序的經(jīng)常修改的文件,比如日志文件等,另外如mysql安裝好后會該目錄下創(chuàng)建一個目錄---/var/lib/mysql,用來存放mysql數(shù)據(jù)庫;所以這里東西一般是服務(wù)運行過程中自己產(chǎn)生的數(shù)據(jù),一般不要手動修改。
mnt:設(shè)備掛載目錄,額外的臨時文件系統(tǒng),比如額外新增的硬盤等。
media:設(shè)備掛載目錄,長用于掛載移動設(shè)備,比如光驅(qū)、優(yōu)盤等。


文件--增刪改查
文件夾:
mkdir -p 文件夾名 --------- 創(chuàng)建文件夾,-p表示遞歸創(chuàng)建多級文件夾;
rmdir 文件夾名 ---------- 刪除文件夾-
文件:
touch 目錄名/目錄名/文件名 ------ 創(chuàng)建文件;(其實該命令原本目的不是用來創(chuàng)建文件的,而是用來改變文件的時間戳的,可以用man命令查看一下),-c不創(chuàng)建文件(文件存在就修改其修改時間戳--ctime, change time,沒有也不創(chuàng)建文件),-a修改文件的訪問時間戳(atime, access time,同時改變文件的修改時間戳),-m修改文件的改變時間戳(mtime, modify time ,同時改變文件的修改時間戳),-t修改文件的時間戳為指定時間。linux文件的三種時間屬性分別為:
atime,為access time(訪問時間)的縮寫,顯示的是文件中的數(shù)據(jù)最后被訪問的時間,讀一次這個文件的內(nèi)容,這個時間就會更新,比如被系統(tǒng)的進程直接使用或者通過一些命令和腳本間接使用。(執(zhí)行一些可執(zhí)行文件、腳本)或?qū)@個文件運用 more、cat等命令。ls、stat命令都不會修改文件的訪問時間mtime,為modify time(修改時間)的縮寫,顯示的是文件的內(nèi)容被改變時的最后時間,比如用vi編輯時就會改變(也就是Block的內(nèi)容),ls -l列出的時間就是這個時間。
ctime,為change time(狀態(tài)改動時間)的縮寫,顯示的是文件的權(quán)限,擁有者,所屬的組,鏈接數(shù)發(fā)生改變時的時間。當然當內(nèi)容改變時,也會改變。(也就是Inode內(nèi)容發(fā)生改變和Block內(nèi)容發(fā)生改變時),通過chmod、chown命令修改一次文件屬性,這個時間就會更新。
rm -rf 目錄名或者文件名 ------- 刪除文件夾或者文件,(其中-r參數(shù)表示可以遞歸刪除多級目錄和文件,-f表示若文件夾或文件不存在,忽略錯誤提示)
查看:
ls -lah [文件名或目錄名] --------- 查看文件或目錄里的文件,省略文件或目錄名,表示查看當前文件夾下的文件列表;-l 表示以列表的形式顯示,-a表示查看全部文件(包含隱藏文件,隱藏文件的名稱以.開頭),-A顯示全部(但不包含當前目錄的.和父目錄..),-h (human)表示以高可讀性方式顯示文件大?。@示kb等),-i 文件的索引節(jié)點號(index node,如同用戶編號一樣,每個文件在文件系統(tǒng)都有一個唯一編號),-r逆序顯示(reverse),-R遞歸顯示(recursive)。復制剪切:
目錄
cp -r 原目錄名 新目錄名 -------- 復制目錄,如果新目錄已存在,則將原目錄復制到新目錄下,如果新目錄不存在,則將原目錄復制為新目錄,-r表示遞歸復制;-p保留源文件或目錄的屬性,包括所有者、所屬組、權(quán)限與時間(默認的話,用戶復制的文件的屬主和屬組都會是該用戶),注意當原文件的屬主和屬組是root的時候,普通用戶-p需要sudo。
mv -r 原目錄名 新目錄名 -------- 剪切目錄,如果新目錄已存在,則將原目錄剪切到新目錄下,如果新目錄不存在,則將原目錄剪切為新目錄,-r表示遞歸剪切
文件
cp 原文件名 新目錄名或文件名 ------- 復制文件,如果新的是個目錄,則將原文件復制到該目錄下,若不存在,則將文件復制為該新文件;-p保留源文件或目錄的屬性,包括所有者、所屬組、權(quán)限與時間(默認的話,用戶復制的文件的屬主和屬組都會是該用戶),注意當原文件的屬主和屬組是root的時候,普通用戶-p需要sudo。
mv 原文件名 新目錄名或文件名 ------- 剪切文件,如果新的是個目錄,則將原文件剪切到該目錄下,若不存在,則將文件剪切為該新文件
注:cp、mv命令源可以是多個,但是目標只能是最后一個,即可以同時復制(剪切)多個文件到一個位置,所以復制(或剪切)多個文件(或目錄)時最后一個參數(shù)一定要是一個存在的目錄,而不能是文件。
mv默認可以遞歸,所以沒有-r選項,這一點同cp命令不一樣。
文本文件編輯查看
編輯
三種模式:命令模式、編輯模式(插入模式)、尾行模式
-
模式切換:首先通過vi或vim 文件名,剛進入文件就是命令模式;
命令模式-->編輯模式:
?i鍵,進入編輯模式,光標定位在當前光標位置
?a鍵,進入編輯模式,光標定位在當前光標下一個字符位置
?A鍵,進入編輯模式,光標定位在行尾位置
?o鍵,進入編輯模式,光標進入當前光標所在行的下一行行首
?O鍵,進入編輯模式,光標進入當前光標所在行的下一行行首
命令模式-->尾行模式: :(冒號鍵)注:尾行模式和編輯模式之間不能直接切換,二者都通過命令模式切換
編輯模式-->命令模式:esc鍵
尾行模式-->命令模式:esc鍵 -
各模式功能
命令模式:快捷復制刪除文本內(nèi)容,快速移動光標位置
定位(光標移動)——
0 光標移動到行首
^ 光標移動到行首(確切的說是第一個非空白字符處); $ 光標移動到行尾
b 光標移動到詞首(begin); e 光標移動到詞尾(end); w 移動到后一個單詞
h: 向前移動一個字符
j: 向下移動一行
k: 向上移動一行
l: 向后移動一個字符
gg 移至首行;
G 光標移動到文件尾行;
H 光標移動到屏首;
L 光標移動到屏尾;
M 光標移動到屏中;
C 刪除當前至行尾字符并進入編輯模式;
ctrl + b:向上(back)翻屏;
ctrl + f:向下(forword)翻屏;
ctrl + u:向上(up)翻半屏;
ctrl + d:向下(down)翻半屏;
# G : 移動到第#行;
# ↑ :向上移動#行;
# ↓ :向下移動#行;
# → :向右移動#個字符;
# ←:向左移動#個字符;命令模式下的查找:
/ 要查找的內(nèi)容:向下查找,n移動到下一個
? 要查找的內(nèi)容:向上查找,n移動到上一個
參考文章
h或退格: 左移一個字符;
l或空格: 右移一個字符;
j: 下移一行;
k: 上移一行;
gj: 移動到一段內(nèi)的下一行;
gk: 移動到一段內(nèi)的上一行;
+或Enter: 把光標移至下一行第一個非空白字符。
-: 把光標移至上一行第一個非空白字符。
w: 前移一個單詞,光標停在下一個單詞開頭;
W: 移動下一個單詞開頭,但忽略一些標點;
e: 前移一個單詞,光標停在下一個單詞末尾;
E: 移動到下一個單詞末尾,如果詞尾有標點,則移動到標點;
b: 后移一個單詞,光標停在上一個單詞開頭;
B: 移動到上一個單詞開頭,忽略一些標點;
ge: 后移一個單詞,光標停在上一個單詞末尾;
gE: 同 ge ,不過‘單詞’包含單詞相鄰的標點。
(: 前移1句。
): 后移1句。
{: 前移1段。
}: 后移1段。
fc: 把光標移到同一行的下一個c字符處
Fc: 把光標移到同一行的上一個c字符處
tc: 把光標移到同一行的下一個c字符前
Tc: 把光標移到同一行的上一個c字符后
;: 配合f & t使用,重復一次
,: 配合f & t使用,反向重復一次
上面的操作都可以配合n使用,比如在正常模式(下面會講到)下輸入3h, 則光標向左移動3個字符。
注:這里的光標移動和下面的編輯命令可配合使用,比如:
dgg:表示從當前行刪除(剪切)至首行;
dG: 表示從當前行刪除(剪切)至尾行;
d2G:表示從當前行刪除(剪切)至第2行(含當前行)
d2↑:表示從當前行向上刪除(剪切)3行(含當前行);
y命令同理,其它以此類推;
注:c命令同d命令一樣的作用,只不過c命令在操作完成后,會自動進入編輯模式
復制 ——
?yy 復制當前行
?#yy 復制當前行至下面#行內(nèi)容
?yw 復制光標至詞尾
?p 將緩沖區(qū)內(nèi)容粘貼到光標后面或下一行;
?P 將緩沖區(qū)內(nèi)容粘貼到光標前面或上一行;
刪除(實際上是剪切)——
?dd刪除當前行(下行上移)
?D刪除至行尾(行不會被刪除)
?#dd 刪除當前行至下面#行內(nèi)容
?de 刪除光標至詞尾
?db 刪除光標至詞首
?[#]x 刪除光標后面#個字符
?[#]X 刪除光標前面#個字符
?[#]s 刪除光標后面#個字符,并進入編輯模式
?[#]S 刪除當前#行,并進入編輯模式
替換——
? r 替換當前字符
? R 連續(xù)替換,直至按下esc鍵取消
撤銷操作——
? [#]u 撤銷上(#)次操作
? ctrl + r:恢復撤銷
重復操作——
? . 重復上次操作
可視化模式(visual模式)——
? v:進入字符可視化模式---移動光標可以選擇代碼區(qū)域(以字符為單位),然后對區(qū)域復制(y)或刪除(d)等
? V:進入行可視化模式---移動光標可以選擇代碼區(qū)域(以行為單位),然后對區(qū)域復制(y)或刪除(d)等
? ctrl + v:進入塊狀可視化模式---移動光標可以選擇塊狀代碼區(qū)域,然后對區(qū)域復制(y)或刪除(d)等
快速保存并退出文件編輯——
命令行模式下
? shift + zz(即ZZ),保存退出
? shift + zq(即ZQ),不保存退出
編輯模式
? 常用快捷鍵:
? alt + s:向前刪除一個字符
? ctrl + h:向前刪除一個字符
? ctrl + w :向前刪除一個單詞
? ctrl + u :向前刪除至行首
? ctrl + j :回車
? ctrl + m :回車
? ctrl + e :復制下一行同位置的字符
? alt + u:撤銷并退出到命令行模式
? ctrl + c :功能類似esc,退出到命令行模式(alt + e、w...等很多鍵都能起到類似效果)
尾行模式
- ? # 定位到第#行;
- ? set nu 顯示行號; set nonu取消行號顯示;set nu! 切換行號顯示隱藏
- ? syntax on 啟用語法高亮;syntax off 關(guān)閉語法高亮
- ? set ts=4 設(shè)置制表符的寬度為4個空格寬度
- ? set expandtab 設(shè)置自動將tab轉(zhuǎn)換為4個空格
- ? set autoindent 自動縮進
- ? set nohls 設(shè)置搜索不高亮
- ? set ruler 在右下角動態(tài)顯示光標當前所在位置;set noruler 不在右下角動態(tài)顯示光標當前所在位置
- ? .,$d ,將當前行至尾行刪除(剪切);1,.y,從第1行到當前行復制;3,+2d ,將3,4,5三行刪除;
- ? u:撤銷上次操作
-
? wq或者x保存退出文件; q 不保存文件直接退出;q!不保存強制退出。(建議使用x來進行保存,一是簡單,二是在沒有更改文件的情況下退出,它是不會修改文件的的‘最后修改時間的’(編輯模式下直接shift+z+z退出也是這種效果),大寫X表示對文件加密,一般不建議使用,加密后忘記密碼就會打不開,加密后撤銷加密的方式就是再次用X加密,密碼設(shè)置空)
image.png
- 查找替換:
1、:s/要搜索的關(guān)鍵詞或正則/要替換成的詞 ---- 替換光標所在行的查找到的第一處
2、:s/要搜索的關(guān)鍵詞或正則/要替換成的詞/g ---- 替換光標所在行查找到的所有處
3、:%s/要搜索的關(guān)鍵詞或正則/要替換成的詞 ----- 替換所有行查找到的第一處
4、:%s/要搜索的關(guān)鍵詞或正則/要替換成的詞/g ----- 替換所有行查找到的所有處
注:%控制全行(也可以指定行,‘.’表示當前行,比如.,$表示當前行到尾行),g控制全列。如:
:5,$-3s/a/b/ig:表示將第5行至倒數(shù)第3行之間的所有大小寫a替換成b;
注:最后的是控制器,有4個字母,igce:i--ignore忽略大小寫,g--global全局,c--confirm逐個確認,e--error忽略錯誤
5、刪除對應(yīng)行、%和g的區(qū)別
:! 命令 :可在編輯文本文件的過程中,臨時執(zhí)行命令,命令執(zhí)行完成后(按任意鍵)會回到文本編輯界面。
-
另外,不通過 ‘:’ ,通過‘/’或‘?’同樣可以進入尾行模式,但是,這只用于查找文檔中的關(guān)鍵詞(‘?’是向上查找,‘/’是向下查找),類似于notepad中的查找功能,查找結(jié)果會以高亮顯示(其實是添加了一個背景色,所以退出之前要用‘:nohl’,來取消高亮背景色,否下次再編輯該文件發(fā)現(xiàn)還會有高亮色),并且通過N/n來切換查到的上一個/下一個(光標移動)。如:
image.png 多文件編輯
vim 命令后面跟多個文件可以同時打開多個文件
:ls :顯示同時打開文件的列表
:b 編號:切換編輯文件多窗口編輯模式
:vs:垂直拆分窗口
:sp:水平拆分窗口
ctrl + w + w :切換窗口
:qa:退出關(guān)閉全部窗口
:xa:保存并退出關(guān)閉全部窗口配置
vim是一款編輯器,也是有配置文件的。
vim配置有三種情況:
①、在文件打開的時候在尾行模式下輸入的配置,這種是臨時配置。
②、個人配置文件 ~/.vimrc,沒有可以自建(比如編寫python文件時,通常會將set autoindent等含set的配置寫進該文件中)。
③、全局配置文件(自帶), /etc/vimrc 。異常退出
vim軟件在編輯文件的時候,會在當前文件夾中產(chǎn)生一個以 .swp結(jié)尾的同名隱藏文件(臨時文件)。正常退出vim的時候,該文件會被自動刪除,而如果沒有正常退出的話,該文件會被殘留,比如在用vim編輯文件的時候,突然關(guān)閉終端。當再次vim該文件的時候,會有錯誤提示(即該臨時文件已存在),解決辦法就是直接刪除該臨時文件。sed:(stream editor),流式編輯器,功能也很強大,參考文章
查看
cat -n 目錄名/文件名 : 查看文本文件內(nèi)容,-n 顯示行號;-b 顯示行號(空白行不顯示行號),-E顯示行尾的換行符;
注:cat 后面如果沒有跟文件的話,則是等待用戶輸入文本內(nèi)容。單行輸入也可以(backspace需要按ctrl鍵;通過ctrl + d 結(jié)束輸入)。批量輸入也可以,批量輸入需要借助 << ,<< 稱為此處文檔,通常后面要跟一個開始結(jié)束標記(相同的標記),比如EOF(非固定,可以自定義,只要開始結(jié)束標記一致就可以了),在標記中間是文檔內(nèi)容。比如:

cat > 文件名:新創(chuàng)建一個文件,并將接下來的寫的文本內(nèi)容輸入進該文件;cat >> 文件名表示將接下來寫的的文本內(nèi)容追加到該文件。(結(jié)束輸入使用ctrl + d)

nl 文本文件:同cat類似都是輸出文本文件內(nèi)容,并且會自動在非空行前面加上行號;
tac 目錄名/文件名:同cat功能一致,只是從尾巴處開始倒過來顯示;
rev #反向(從右往左)文件中的內(nèi)容
more 目錄名/文件名 : 分頁顯示文本文件內(nèi)容,(f鍵,向前翻頁;b鍵,向后翻頁; 空格鍵,向后翻頁; enter鍵,顯示下行),翻到最后一行,自行退出;
less 目錄名/文件名: 查看文件內(nèi)容,但是操作用法同man類似(man實際上就是用less命令打開的手冊文檔),空格鍵向下翻頁,b鍵向上翻頁,回車鍵向下一行,k鍵向上一行,而且即便翻到最后也不會自動退出,在任意地方按q鍵都能退出;所以less比more更易用常用。
head -n 文件名: 查看文本文件頭部內(nèi)容前n行,不加-n選項是默認前10行
tail -n 文件名:查看文本文件底部n行,不加-n選項默認后10行。-f(follow, 表示追蹤新增刷新,比如像日志文件新增內(nèi)容)
wc 文件名:統(tǒng)計文件內(nèi)容信息,-l表示lines行數(shù),-w表示words單詞數(shù),-c表示bytes字節(jié)數(shù)。不加選項的話,這三項都輸出。(注:常結(jié)合管道 | 對查詢結(jié)果進行統(tǒng)計,比如ls -l | wc -l)
cut 文件名:字符分割命令,以行為單位,-d 指定分割字符(默認是空格),-f顯示分隔后的列號(可以跟多列);注:-d,-f一般同時使用,-d 是指定分割字符,另外-b是按字節(jié)分割,-c是按字符分割;在使用cut命令時,分割方式,-b,-c,-d必須指定其一。參考文檔
sort 文件名:字符排序命令,以行為單位,-n以數(shù)值大小排序(默認按照字符編碼排序),-f忽略大小寫差別,-r倒序排序,-t指定分割字符(要和-k結(jié)合用,-k指定按照分割后的第幾列進行排序),-u重復行只顯示一行。參考文檔
uniq 文件名:顯示文本,相鄰重復行只顯示一行;-c顯示文本,相鄰重復行只顯示一次,并在行首顯示重復次數(shù);-d只顯示相鄰重復行(也是只顯示為一行);-D只顯示相鄰重復行(顯示多行);
tr 字符替換:(translate),從標準輸入中替換、縮減和/或刪除字符,并將結(jié)果寫到標準輸出;單個字符的替換,比如tr 'ab' 'AB' 標準輸入,會將輸入中的字符串中的a和b分別替換為A和B;-d 要刪除的字符,用來刪除字符;
tee 文件:一個標準輸入,兩個標準輸出(可以同時輸出到shell和文件,可以跟多個文件;如果不想輸入shell ,可以重定向到黑洞文件> /dev/null,當然也可以管道流到下一個處理對象);-a表示追加到文件;
? 比如,ls | tee a.txt b.txt > /dev/null;
文本內(nèi)容再次處理
程序:指令 + 數(shù)據(jù);
?? 讀入數(shù)據(jù):input;
?? 輸出數(shù)據(jù):output;
?? 打開的文件都有一個fd:file descriptor(文件描述符)
?? linux給程序提供三種I/O設(shè)備:
???標準輸入(stdin)- 0:默認接受來自鍵盤的輸入;
???標準輸出(stdout)- 1:默認輸出到終端窗口;
???標準錯誤(stderr)- 2:默認輸出到終端窗口;
??I/O重定向:改變默認輸入輸出位置;
">和>>": 輸出重定向,后面跟個文件,將標準輸出重定向至該文件中,比如 “echo '打印這些內(nèi)容,并寫入文件中' > echoin.txt” 會將內(nèi)容寫入echoin.txt文件中(如果不存在表示創(chuàng)建),> 會覆蓋文件中原有內(nèi)容, >>表示在原文件中新起一行追加。(tee命令可以把數(shù)據(jù)流同時重定向到文件和屏幕,-a表示追加)
注:>和>>只能重定向標準輸出,不能重定向錯誤輸出;2>和2>>可以重定向錯誤輸出,所以二者結(jié)合才可以根據(jù)實際情況定向輸出,比如:ls /home > data.txt 2> err.log,如果沒有錯誤,則是標準輸出到data.txt文件,如果發(fā)生錯誤就錯誤輸出到err.log;另外還有一個&>和&>>,不管是標準輸出還是錯誤輸出,都重定向輸出到文件。
?? set - c:禁止重定向>覆蓋功能;(該模式下要覆蓋需用 >| 進行重定向的覆蓋,否則提示錯誤)
?? set - c:啟用重定向>覆蓋功能;
“<”:輸入重定向,后面跟個文件,將文件內(nèi)容作為標準輸出的入口;
?? 如:tr 'ab' 'AB' < a.txt;將a.txt文件中的內(nèi)容輸出出來,然后將其中的a和b用A和B替換,顯示在終端上。
grep: 通過正則表達式,對文本進行過濾,過濾出符合條件的行。用法“ grep 文本文件 規(guī)則”,比如 “grep 張 a.txt”,表示過濾出a.txt文件中含有‘張’的行。-n 表示顯示行號,-v表示取反(過濾出不符合規(guī)則的行),-i表示忽略大小寫。
| : 管道,前面命令的執(zhí)行結(jié)果會作為后面命令的執(zhí)行對象,常和grep聯(lián)合使用,如‘ls -l | grep right’,表示顯示列表中的right那一行;又如“rpm -qa | grep rz”,用來查看是否安裝了rz程序,這個用法常用來查看是否安裝了某個軟件程序。
"echo": 命令行打印文本內(nèi)容,如echo“ 這些內(nèi)容會被打印出來”,會顯示“這些內(nèi)容會被打印出來”,一般結(jié)合重定向使用。
清空文件內(nèi)容:
1、echo > 文件 (但是文件里會留下一個空行)
2、> 文件
3、利用黑洞文件, cat /dev/null > 文件cmd <<< cmds
把命令語句和后面的換行作為輸入提供給cmd去執(zhí)行。
[zhang@zhang ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=2
5/3
1.66
quit
[zhang@zhang ~]$ echo "scale=2;5/3" | bc
1.66
[zhang@zhang ~]$ bc <<< "scale=2;5/3"
1.66
-
:查找文件,-name 文件名,指定要查找的文件名;-type 類型(f表示文件,d表示目錄)注:find命令的查找功能異常強大,幾乎可以根據(jù)文件的任何屬性查找,比如屬主和屬組、文件權(quán)限、文件改變時間、文件大小等等,甚至還有動作參數(shù),來指定查找到對應(yīng)的文件后進行什么樣的操作
模板命令,符號 ``(同$(代碼內(nèi)容),功能一樣)
可以嵌套在其他命令中,將執(zhí)行結(jié)果作為其他命令的參數(shù)使用;
比如刪除目錄下的文件,不刪除目錄:rm -rf `find \home\zhang\ -type -f`;
比如刪除除了01.js、01.py之外的其它文件: rm -rf `ls | egrep -v '(01.js | 01.py)'`
文件權(quán)限
查看
ls -lha 文件或文件夾:查看目錄或文件,-l列表形式顯示;-a顯示所有文件(包含隱藏文件);-h以高可讀性顯示文件大?。?d查看當前目錄。
此命令并可以看出用戶或組(相當于角色),對該文件所擁有的權(quán)限。

以“drwxrwx---. 2 zhang zhang 4096 2月 22 14:53 test” 為例:
1、 “drwxrwx---”,第一個字母d 表示該文件是一個文件夾(d代表文件夾,-代表文件,l代表鏈接),后面9個字符分別分三組,每3個一組,第一組表示該文件的所有者對該文件所具有的權(quán)限;第二組表示文件所屬組(角色)對該文件所具有的權(quán)限;第三組表示其它用戶對該文件所具有的權(quán)限。(r可讀權(quán)限,w可寫權(quán)限,x可執(zhí)行權(quán)限;對于文件目錄而言,可讀表示可以查看其內(nèi)的文件列表,可寫表示可以增刪其內(nèi)的文件,可執(zhí)行表示可以對其使用命令,所以可執(zhí)行權(quán)限是其他兩項權(quán)限的前提)
2、“2”,表示該文件的硬鏈接數(shù),即通過其它文件目錄訪問到該文件的路徑數(shù)。
3、“zhang zhang”, 前一個‘zhang’表示該文件的所有者,后一個‘zhang’表示該文件所屬組
4、‘4096’表示該文件(夾)大?。ㄗ止?jié))
5、‘2月 22 14:53’表示該文件(夾)最后一次編輯時間
6、‘test’文件(夾)名(含路徑)
修改權(quán)限
chmod : 兩種模式,數(shù)字或字母。(給文件夾設(shè)置權(quán)限時,-R表示遞歸給其內(nèi)的所有文件夾和文件設(shè)置相同權(quán)限)
? 數(shù)字:4 + 2 + 1 --- 可讀r + 可寫w + 可執(zhí)行x
? 比如 chmod 764 test/,表示給test文件夾設(shè)置,所有者rwx權(quán)限,組rw-權(quán)限,其他用戶r--權(quán)限;
? 字母 : r可讀,w可寫,x可執(zhí)行; +增加權(quán)限,-減少權(quán)限,=設(shè)置權(quán)限; u給用戶權(quán)限,g給組權(quán)限,a給所有用戶、組權(quán)限,o給其他用戶權(quán)限。
? 比如: chmod u-xr right 表示在原權(quán)限基礎(chǔ)上,將所有者對該文件(right)的xr權(quán)限去掉; chmod g=rw right ,表示將所屬組對該文件(right)的權(quán)限設(shè)置為rw-;chmod o+rx right ,表示對其它用戶新增對該文件(right)的rx權(quán)限。當然用a的時候表示對文件的所有者所屬組其它用戶,同時設(shè)置權(quán)限,而且a可以省略。
注:同時分別給u、g、o設(shè)置不同權(quán)限時,可用‘,’連接。
chmod --reference=某文件 文件,表示將目標文件的權(quán)限修改為跟該參考文件一樣;
修改文件所有者和所屬組
chown 用戶名 目錄名或文件名 -R :只有管理員有此操作的權(quán)限,修改文件所有者為指定用戶,-R表示同時遞歸修改目錄和其內(nèi)的文件所有者。(chown 用戶名:組名 文件名 或者 chown 用戶名.組名 文件名,可以同時修改文件的所有者和所屬組,注:chown :組名 文件名,表示只修改文件的屬組);--reference=某文件,表示將目標文件的屬主和屬組修改為跟該參考文件一樣;
chgrp 組名 目錄名或文件名 -R :只有管理員有此操作的權(quán)限,修改文件所屬組為指定組,-R表示同時遞歸修改目錄和其內(nèi)的文件所屬組。
高級權(quán)限
- 注:通過vim命令,編輯別人的只讀文件時,如果提示文件是只讀的,需要通過‘!’強制保存,如果我們編輯完后,通過尾行模式:‘wq!’是可以保存成功的,但是保存完成后,該文件的屬主(所有者)和屬組都會被修改成當前用戶?。。?/li>
- 文件或文件夾的權(quán)限除了有rwx外,還有冒險位(s或S)、強制位(s或S)、粘滯位(t或T)。(添加這些特殊權(quán)限后,該文件或目錄的u或g或o的最后一個權(quán)限,如果之前有x,則顯示小寫s或t,如果之前沒有x,則顯示大寫S或T)
冒險位:通常是給可執(zhí)行文件命令文件加的(只能給u加,方式是chmod u+s 文件,或chmod 4### 文件,即當用數(shù)字時,第一位4表示給文件設(shè)置冒險位),比如chmod u+s /usr/bin/vim (注vim命令的可執(zhí)行文件可以用which查找),設(shè)置后通過ll命令可以看到該文件的u的可執(zhí)行位變成了s;這樣用戶在用vim命令編輯其他文件時,即使沒有該文件權(quán)限,也可以臨時行使該文件的所有者權(quán)限,對文件編輯修改。(注:passwd命令的二進制文件就具有冒險位!:當用戶在通過執(zhí)行一個可執(zhí)行文件來啟動一個進程時,因為這個可執(zhí)行文件本身是有屬主、數(shù)組和其它用戶對應(yīng)的權(quán)限的,如果當前用戶有該可執(zhí)行文件的執(zhí)行權(quán)限,那么可以執(zhí)行并創(chuàng)建一個進程,并且這個進程的所有者是啟動它的用戶,而非可執(zhí)行文件本身的屬主;那么當前這個進程所擁有對其他文件的權(quán)限,是該啟動用戶對其它文件所具有的權(quán)限,而不是這個二進制文件本身的屬主對其它文件所具有的權(quán)限。而冒險位其實是改變了這種規(guī)則,進程的擁有者仍然是可執(zhí)行文件本身的屬主,即進程執(zhí)行起來后對其他文件所具有的權(quán)限仍然是其二進制文件的屬主對其它文件所具有的權(quán)限。)
image.png
image.png
強制位:通常是給目錄添加的(所以設(shè)置方式是chmod g+s 目錄 ,或chmod 2###,即當用數(shù)字時,第一位2表示給該目錄設(shè)置強制位),設(shè)置了之后通過ll命令可以看到該目錄的可執(zhí)行位變成了s。設(shè)置了強制位的目錄,不管任何用戶,在其內(nèi)創(chuàng)建的文件的所屬組都是該目錄的所屬組。
粘滯位:通常也是給公共目錄設(shè)置的(設(shè)置方式是chmod o+t 目錄,或chmod 1###,即當用數(shù)字時,第一位的1表示給該目錄設(shè)置粘滯位),設(shè)置了粘滯位的目錄,其內(nèi)的文件,只能被root用戶和文件的所有者刪除,其他人無法刪除(即便是該文件的所屬組的成員)。而且其它用戶即便強制修改也不能修改只讀文件了(但是可以強制修改后另存為一份其它文件)。
image.png
注:另外百度一下反掩碼umask;
-
umask遮罩碼
umask:也叫反向掩碼,它是用來削去新創(chuàng)建的文件的默認權(quán)限的。該命令可以查看umask,后面如果跟上權(quán)限值,表示設(shè)置umask。管理員和普通用戶的默認umask是不同的(都可以修改)。
新創(chuàng)建的文件的權(quán)限 = 666 - umask,(但是不管權(quán)限是啥,新創(chuàng)建的文件默認是不能有執(zhí)行權(quán)限x的,當計算出來的默認權(quán)限上有執(zhí)行權(quán)限x的時候,自動在其權(quán)限基礎(chǔ)上加1);
新創(chuàng)建的目錄的權(quán)限 = 777 - umask;
文件軟鏈接和硬鏈接
ln -s 目錄/文件名 鏈接文件名: 創(chuàng)建鏈接文件,-s表示創(chuàng)建軟鏈接,不加-s表示創(chuàng)建硬鏈接。
軟鏈接就類似window系統(tǒng)的文件鏈接,硬鏈接就像一個人有兩個身份證。

用戶和組
??由于某些操作比較重要,所以需要管理員用戶來操作,或者普通用戶通過sudo來臨時行使管理員權(quán)限??梢酝ㄟ^sudo行使權(quán)限的用戶,必須是加入了sudo組的用戶。命令:
sudo 命令 ;
sudo -l :查看當前用戶可以借助sudo行使哪些管理員權(quán)限;
組
sudo groupadd 組名: 新建組,-g gid 設(shè)置自定義gid;-r 添加為系統(tǒng)組;
sudo groupdel 組名:刪除組
sudo gpasswd 密碼:修改組的密碼
組信息保存在/etc/group文件中,可編輯可查看-
用戶
sudo useradd -m -g 組名或組id 用戶名:新增用戶,-m表示同時創(chuàng)建用戶的同名家目錄(通常和-k結(jié)合使用,-k是指在創(chuàng)建用戶的同時,將/etc/skel/目錄下的所有文件拷貝到用戶家目錄下,相當于給用戶裝修了家目錄。注:centOS中即使不加該參數(shù)也會創(chuàng)建同名家目錄),-g表示給用戶設(shè)置主組(不加該參數(shù),會自動創(chuàng)建一個跟用戶名同名的組,并將其設(shè)置為該用戶的主組)。-G,表示給用戶設(shè)置附加組;-u id號表示自己設(shè)置用戶id;-c給用戶添加注釋;-s指定用戶的默認shell(注:該命令的默認配置在/etc/default/useradd文件中);-r添加為系統(tǒng)用戶(系統(tǒng)用戶沒有家目錄,且分配的uid在1-499之間,一般是為用來運行某個服務(wù),所以最好設(shè)置bash為nologin,不允許登錄)
注:用戶分為管理員和普通用戶,普通用戶又分為 系統(tǒng)用戶和一般用戶,管理員具有所有權(quán)限,uid為0;系統(tǒng)用戶常是一些守護進程的程序創(chuàng)建的用戶,uid為0-499之間;一般用戶為用戶創(chuàng)建的普通用戶,uid在500-56636之間;
sudo passwd 用戶名:給用戶設(shè)置(修改)密碼(會提示輸入密碼);-l鎖定用戶(禁用用戶);-u解鎖用戶;-d刪除用戶密碼;
echo 密碼內(nèi)容 | passwd --stdin 用戶名:直接給用戶設(shè)置(修改)密碼(注,密碼中不要含‘!’等字符);
用戶密碼信息存儲在/etc/shadow文件中
用戶信息都保存在/etc/passwd文件中,可查看可編輯
image.png
pwck 用戶名:檢查用戶賬號完整性;
change 用戶名:-d 修改用戶密碼的最近一次修改時間;-E修改用戶密碼的過期時間;-I 修改用戶的非活動時間;-m 修改用戶密碼的最短使用時間;-M 修改用戶密碼的最長使用時間;-W 密碼過期提前警告時間;sudo userdel -r 用戶名: 刪除用戶,-r可以同時刪除用戶家目錄,如果用戶的主組和用戶同名的話,默認會同時刪除該組,-f會忽略錯誤提示,強制刪除用戶(f表示force)。
sudo usermod -G 組名 用戶名: 給用戶設(shè)置附加組(則該用戶會擁有該組的所擁有的權(quán)限),-G是添加附加組(通常和-a一起使用,表示追加附加組,否則會覆蓋之前的附加組),-g是設(shè)置主組,-c修改注釋,-l修改登錄名(login)即用戶名,-d(重新指定家目錄,一般和-m一起使用,move home搬家,將原家目錄內(nèi)容搬到指定新家目錄);-L鎖定用戶(lock,即禁用用戶);-U解鎖用戶(passwd -S 用戶名,可以查看用戶是否被鎖定,另外,passwd -l 用戶名 和 passwd -u 用戶名 也可以用來加鎖和解鎖用戶)。用戶鎖定和解鎖
?? 比如 通過root管理員賬戶,“usermod -G sudo zhang” ,給用戶zhang設(shè)置附加組sudo,則會將zhang加入sudo組內(nèi),用戶zhang可以通過sudo臨時行使管理員權(quán)限(ubuntu系統(tǒng)默認是有sudo組的,centOS系統(tǒng)沒有該組,需要通過visudo命令修改etc/sudoers文件的方式,來將用戶加入sudo)。
?? newgrp 組名:該用戶臨時登入指定組,并臨時指定該組為其主組(需要新組的密碼),退出登錄后即失效。
?? usermod -s /bin/bash 用戶名: 設(shè)置用戶使用的終端軟件(默認是dash)(echo $shell:可以查到當前用戶使用的shell)
?? groups [用戶名]:查看用戶加入的所有組,不加用戶名的話,是查看當前用戶的所有組。
?? id [用戶名] : 查看用戶的詳細信息,包括用戶id、所屬組、組組等,不加用戶名的話,則是查看當前用戶的。-u代表uid,-g代表gid,-G代表附加組id,-un代表用戶名。
?? finger 用戶名:查看用戶的賬戶信息;(新版可能廢除了該命令)
?? gpasswd 組名:給組設(shè)置密碼;-r 刪除組密碼; -d 用戶名 組名 : 將用戶從組中刪除;-a 用戶名 組名,表示將用戶添加進組;
用戶、權(quán)限、文件的關(guān)系
我們通過執(zhí)行二進制文件來開啟一個進程,進程都是有一個發(fā)起用戶的;一個二進制文件本身也是有權(quán)限的,所以它并不是任何用戶都可以執(zhí)行的。所以一個用戶執(zhí)行可執(zhí)行文件時,能否執(zhí)行取決于該用戶是否對該文件有執(zhí)行權(quán)限,但是假如擁有執(zhí)行權(quán)限,而且權(quán)限已經(jīng)執(zhí)行起來后,如果該進程需要操作另外一個文件,那么該文件是否允許該進程操作則也取決于該用戶是否對該文件有相應(yīng)的操作權(quán)限。
文件位置
which 命令名稱: 在PATH變量指定的路徑中查詢可執(zhí)行文件所在的位置(通常在/bin、/sbin、/sur/bin、/sur/sbin下)
whereis :主要用于定位可執(zhí)行文件、源代碼文件、幫助文件在文件系統(tǒng)中的位置。-b 定位可執(zhí)行文件,-B 指定搜索可執(zhí)行文件的路徑;-m 定位幫助文件,-M 指定搜索幫助文件的路徑;-s 定位源代碼文件, -S 指定搜索源代碼文件路徑
locate 檢索文件名稱:同whereis類似,且它們使用的是相同的數(shù)據(jù)庫,但whereis只能查找可執(zhí)行文件、源代碼文件、幫助文件等;想要獲取更全面結(jié)果,使用locate,檢索對象可用通配符匹配。-q 安靜輸入,不顯示錯誤信息;-n 顯示n行信息;-r 使用正則匹配;-v 顯示版本信息;(功能類似find,但是沒有find強大,所以一般使用find命令)
日期時間、磁盤大小、進程管理
date : 查看當前系統(tǒng)時間;“+%Y-%m-%d”和“+%F”等價;“+%F-%m-%d %H:%M:%S”和“+%F %T”等價,用來設(shè)置日期的顯示格式。-s 時間 ,選項用來設(shè)置時間。
cal : (calendar)日歷,查看當月日歷,-y查看一整年日歷
df : (disk free)查看磁盤使用和剩余情況,-h以高可讀性顯示大小;
du [目錄或文件名]:(disk usage)查看目錄或文件占用空間大小,不跟目錄或文件名,則為查看當前目錄占用空間大小,-h以高可讀性顯示大小,-s(sumarry)匯總顯示文件夾整體大小。
ps aux 或ps auxf:(progress state)查看進程情況,不跟選項的話,表示查看當前用戶通過終端開啟的程序進程,選項a表示查看所有用戶通過終端開啟的進程,選項u顯示詳細信息,選項x查看所有進程(比較多,不止包括通過終端開啟的),注意:ps命令的這幾個選項不加‘-’。-e和a差不多,都是顯示全部進程,-f顯示全部列。

top : 動態(tài)顯示進程情況,按占用資源大小排列

在顯示過程中,按鍵:
M:按內(nèi)存占用大小降序排列進程;
P:按cpu占用大小降序排列進程;
q:退出top顯示
打包、壓縮
-
打包
tar -cvf 打包后的文件名 待打進包內(nèi)的文件1 待打進包內(nèi)的文件2:打包??赏瑫r將多個文件打進一個tar包內(nèi)(可使用通配符匹配多個文件),打包后的總文件一般用一個.tar的后綴名。-c (create)打包,-v(verbose)顯示詳細過程,-f (file)指定文件;-p保留文件的原來屬性;tar -xvf 待解包的包文件:解包,選項-C 目錄名,可將文件解包到指定目錄中。-x解包,-v顯示過程,-f指定文件。
tar -tvf 包文件:不解包的情況下,預(yù)覽包內(nèi)容(對應(yīng)壓縮包文件也適用)。
參考文章 壓縮 gzip
gzip 要壓縮的文件:gzip對文件壓縮后,原文件會消失,會生成一個文件名為原文件名后面加上.gz的文件。因為gzip不具有打包功能,所以其只能壓縮文件,不能壓縮目錄,如果是目錄的話,要加-r,表示遞歸壓縮目錄內(nèi)的所有文件,每個文件被壓縮后都會變成一個.gz的壓縮文件。-d表示對文件解壓縮(同樣的,解壓后壓縮文件也會消失)。
注:默認tar命令只有打包功能,不具備壓縮功能,但用tar打包時加上-z選項,可以同時調(diào)用gzip壓縮工具,比如“tar -zcvf py.tar.gz 01.py 02.py”;
同樣的解壓解包tar.gz文件用tar -zxvf 待解文件,如“tar -zxvf py.tar.gz ”,選項-C 目錄名,可將文件解包到指定目錄中。
注:還有一個壓縮軟件bzip2,用法以及配合tar命令的用法,都和gzip一樣,只不過壓縮文件名的后綴bz2,是將-zcvf換成了-jcvf,-k表示壓縮的是保留原文件;壓縮軟件xz,文件后綴名是.xz,配合tar的命令是-Jcvf。
zcat 壓縮的文本文件:可以查看gzip壓縮后的文本文件。
bzcat 壓縮的文本文件:可以查看bzip2壓縮后的文本文件。
xzcat 壓縮的文本文件:可以查看xz壓縮后的文本文件。


下載
wget 網(wǎng)址:從網(wǎng)絡(luò)下載文件,- O 同時重命名下載文件





