給老婆寫了一份速成培訓(xùn)教材——最經(jīng)常使用的命令及解釋。當(dāng)然每一個(gè)人工作內(nèi)容不同,經(jīng)常使用命令也不同,這僅僅是我的個(gè)人經(jīng)驗(yàn),并且要考慮到接受者的基礎(chǔ)。
ls :列出文件夾下的內(nèi)容,類似于 dos 下的 dir 。
經(jīng)常使用參數(shù)有:
ls –l ,逐行顯示具體內(nèi)容;
ls –a, ? 顯示隱藏的文件或文件夾;—— linux 下,前綴為 . 的文件名稱和文件夾名即被默覺得是隱藏文件
參數(shù)也能夠組合 ls –al? ,具體顯示包括隱藏文件在內(nèi)的內(nèi)容。
當(dāng)加上 -a 時(shí),會(huì)看到兩個(gè)特殊的文件夾 . ? 和 ..? , . 表示當(dāng)前文件夾; .. 表示父文件夾
cd? :切換文件夾
那么能夠想象, cd .? 不會(huì)有不論什么變化,由于切換到當(dāng)前文件夾等于沒說對(duì)吧; cd ..? 切換到父文件夾(此時(shí)能夠看到命令提示符前面的路徑是有變化的)
有關(guān) cd 使用還有幾個(gè)常見使用方法:
cd / ?? 直接一步到“根”( linux 文件系統(tǒng)里根就類似 windows 的 c: ?d: ? 等等,僅僅只是不管多少塊硬盤和分區(qū), linux 僅僅有唯一的根 / ),那么就不用一次一次的 cd .. 往上退了對(duì)么
cd ~ ? 一步到“家”文件夾。什么是家文件夾呢?在 linux 下,每創(chuàng)建一個(gè)用戶會(huì)自己主動(dòng)為這個(gè)用戶安排一個(gè)家文件夾,用戶對(duì)自己的家文件夾擁有全然的讀寫權(quán)限,用戶登錄之后的默認(rèn)工作文件夾也是在自己的“家”里( windows 也一樣,不信你用一個(gè)新帳號(hào)登錄,立即會(huì)看到 c 盤的“用戶”文件夾下多出一個(gè)和這個(gè)帳號(hào)名同樣的文件夾,里面是“我的文檔”“我的圖片”“我的視頻”之類的東西)
普通使用方法就是 cd a/b/c? 這樣了,當(dāng)然此時(shí)的 a/b/c 三級(jí)文件夾是在當(dāng)前文件夾下的,這就是相對(duì)路徑;假設(shè)恰好不在當(dāng)前文件夾下,那就找不到了。僅僅能從“根”寫起 cd /xxx/a/b/c? ,這就是絕對(duì)路徑。
上面說了,不管有多少塊硬盤多少個(gè)分區(qū),都僅僅有一個(gè)根,那么假設(shè)加一塊硬盤,它會(huì)放到哪去呢?——答案是你愛放哪就放哪。操作是這種,首先
mkdir ?:? 創(chuàng)建文件夾
使用 mkdir 創(chuàng)建文件夾,用起來相當(dāng)簡(jiǎn)單,非常少加參數(shù)。 mkdir xxx? 就是在當(dāng)前文件夾下創(chuàng)建一個(gè) xxx 文件夾,假設(shè)不在當(dāng)前文件夾下創(chuàng)建呢?一種方法是用 cd 切換過去;一種方法是用絕對(duì)路徑 mkdir /xxx/a/b/c/xxx
下一步:把這個(gè)新硬盤的某個(gè)分區(qū)“附加”到我們剛才創(chuàng)建的文件夾下去
mount :掛載設(shè)備
mount /dev/sdb1 /xxx/a/b/c/xxx? (文件夾好深啊,還真不easy找呢),以后再進(jìn)到這個(gè)文件夾 cd /xxx/a/b/c/xxx? , ls 看到的就是新硬盤的內(nèi)容了。(當(dāng)然此處我假定新硬盤的編號(hào)是 /dev/sdb1 ,至于為什么是這個(gè)編號(hào),因?yàn)閺?fù)雜度問題在此就不解釋了)
那么如果細(xì)點(diǎn)心,你會(huì)提出這種疑問——如果我原來的文件夾 /xxx/a/b/c/xxx? 不是一個(gè)新文件夾,并且里面有內(nèi)容。那么當(dāng)我在這個(gè)文件夾下掛載新硬盤的時(shí)候,原來的東西怎么辦呢?——答案是“確實(shí)看不見了”。不用驚訝,由于并沒有丟,僅僅是看不見了而已。當(dāng)我們卸載這個(gè)設(shè)備,它們就又回來了
umount :? 卸載設(shè)備
umount /dev/sdb1? ,卸載掉了,簡(jiǎn)單吧。
所以能夠有這樣一個(gè)加密小技巧,對(duì)要加密的文件夾掛載一個(gè)設(shè)備(只是為了加密一個(gè)文件夾買塊硬盤,這個(gè)代價(jià)有點(diǎn)高。并且別人一但發(fā)現(xiàn)了, umount 一下就暴露了)
或許有人說干嘛弄這么復(fù)雜,象 windows 那樣自己主動(dòng)識(shí)別,一塊硬盤(分區(qū))一個(gè)盤符不挺好的嗎?其實(shí)這樣的多根文件夾可能會(huì)更麻煩。 Linux “繼承”了 unix 的傳統(tǒng),多用于server上,在server上添加、替換(壞)、乃至交換硬盤都非常尋常。想像一下,假設(shè)在這臺(tái)機(jī)器上是 d :盤,拿到另外一臺(tái)機(jī)器變 e :盤了,非常多程序跑不起來了,那怎么辦?即便是我們個(gè)人電腦,假設(shè)你常常裝機(jī)做系統(tǒng)的話,也不少有這些困擾呢。而掛載到文件夾下就easy多了,僅僅要把文件夾樹搞一致了,隨便怎么增、刪、換硬盤都沒關(guān)系。
想象一下這個(gè)場(chǎng)景, /xxx/a/b/c/xxx 文件夾是存放某數(shù)據(jù)庫文件的,據(jù)觀察增長(zhǎng)非常快,硬盤空間告急。不用操心,能夠這樣做,先把新硬盤 mount 到某個(gè)暫時(shí)文件夾下 mount /dev/sdb1 /temp? ,拷貝或移動(dòng)原有文件(當(dāng)然為了保持?jǐn)?shù)據(jù)一致性,這會(huì)兒停一下數(shù)據(jù)庫) cp/xxx/a/b/c/xxx/* /temp –R? ,拷貝完畢后,把硬盤又一次 mount 一個(gè)位置 mount /dev/sdb1 /xxx/a/b/c/xxx? ,啟動(dòng)數(shù)據(jù)庫,喔,新硬盤用上了,并且對(duì)全部的程序、用戶全然感知不到變化。假設(shè)是 windows 得折騰好久吧 :) 所以還是單根文件夾簡(jiǎn)單好用。君不見微軟如今也提倡磁盤單分區(qū)了嗎 :)
提到拷貝和移動(dòng)了——
cp : 拷貝命令
cp a.sh /tmp? 拷貝當(dāng)前文件夾下的 a.sh 文件到 /tmp 文件夾下一份
cp /tmp/a.sh /xxx/a/b/c/c.sh? 拷貝 /tmp 文件夾下的 a.sh? 到 /xxx/a/b/c 下,而且改名成 c.sh
最經(jīng)常使用的參數(shù) –R? ,表示循環(huán)遞歸操作以下全部子文件夾,大寫字母
mv : ? 移動(dòng)命令
mv /tmp/a.sh /xxx/a/b/c? 移動(dòng) /tmp 下的文件 a.sh? 到 /xxx/a/b/c? 文件夾下,不改名字
mv 的另外使用方法,改名字: mv a.sh b.sh? 把 a.sh 改名為 b.sh
不變文件夾,那就是改名字(由于在同一個(gè)文件夾下移動(dòng)嘛)
發(fā)現(xiàn)拷貝錯(cuò)了或者拷貝多了,刪除唄
rm :? 刪除文件或文件夾
rm a.sh? 刪除當(dāng)前文件夾下的文件 a.sh
rm * -R? 刪除當(dāng)前文件夾下全部?jī)?nèi)容,包含循環(huán)遞歸子文件夾( -R 一定要慎用啊,否則悔之晚矣)
前面提到,別人非常easy發(fā)現(xiàn)你新載入的硬盤,那么是怎樣發(fā)現(xiàn)的呢? df 命令
df :? 顯示文件系統(tǒng)
df 一下,看,哪塊硬盤掛在哪個(gè)文件夾下,占用多少空間,剩余多少空間,一目了然。假設(shè)想仔細(xì)了解倒底那個(gè)文件夾或文件占用了我們寶貴的磁盤空間呢, du 命令
du :? 查看文件磁盤空間
讓我們 cd /? 來到根文件夾, du 一下,哇,這哪看的清。逐級(jí)列出全部文件和文件夾,好敬業(yè)啊。但我們不須要看這么多,僅僅須要知道某一級(jí)文件夾占了多少空間即可了,加個(gè)參數(shù)-- max-depth=1? 是顯示 1 級(jí), =2 那就是顯示兩級(jí)了。再仔細(xì)的使用方法就看幫助吧。順便提一句,大部分命令后面加參數(shù)-- help ,就能夠其幫助信息了。
這么多文件,假設(shè)想找當(dāng)中某一個(gè)怎么辦? find 搜索
find : ? 查找文件
find 查找能夠按名稱、按類型、按日期等等,總之強(qiáng)大到讓人無法直視。相同,深入學(xué)習(xí)請(qǐng)看幫助。最經(jīng)常使用的按名稱查找: find–name xxx.sh? ,當(dāng)前文件夾及子文件夾下查找 xxx.sh 文件
為什么我一再拿 .sh 的文件作演示樣例呢?由于依照習(xí)慣, xxx.sh 的文件是一個(gè) shell 文件(類似于 dos 里的批處理文件 .bat )可以被運(yùn)行。但它倒底是不是個(gè)真的 sh 文件呢?——等等,這話什么意思,難道還有假的 shell 文件嗎?當(dāng)然有可能。 Linux 里不是依照擴(kuò)展名來區(qū)分文件類型的,甚至都不應(yīng)該用擴(kuò)展名這個(gè)概念。之所以寫成 xxx.xxx 是為了迎合 windows 用戶的表示方法(當(dāng)然這樣的表示方法也確實(shí)不錯(cuò))。系統(tǒng)是不限制你要不要“擴(kuò)展名”、寫什么字母的。當(dāng)然,假設(shè)硬要把 鳳凰傳奇 .mp3 ? 改名成 haha.sh? ,你肯定是運(yùn)行不起來的。反過來說,假設(shè)把一個(gè) a.sh? 改名成 a.xxoo ,一樣是能夠運(yùn)行的。那么豈不是文件類型亂作一團(tuán)?所以嘛,採(cǎi)用大家約定俗成的命名方法還是利人利己的。另外,還能夠用命令 file 來查看其真實(shí)的文件類型。
file :? 查看文件類型
file a.sh? ,假設(shè)確實(shí)是一個(gè) shell 文件,會(huì)顯示類型為: ASCII text ——是個(gè)文本文件(批處理本來就是文本文件, bat 也一樣)。那么能夠用命令 cat 來查看文件內(nèi)容
cat :? 查看文件內(nèi)容
cat a.sh? 就可以顯示內(nèi)容。假設(shè)是用 鳳凰傳奇 .mp3 改名改成的 a.sh ,那肯定就亂碼了。
當(dāng)然我們還能夠用編輯命令編輯它
vi :? 編輯文件—— vi 實(shí)際上是個(gè)編輯軟件,限于篇幅不具體介紹,自行 google
好了,說了不少了,做個(gè)小樣例吧
cd ~ ? ——來到自己的家文件夾
vi a.sh? ——新建并編輯一個(gè) a.sh 文件。按一下字母 i ,進(jìn)入編輯狀態(tài)。此時(shí)能夠輸入了。輸入 echo $PATH? (注意大寫和小寫),好,加上空格就輸入這 10 個(gè)字符即可。按 ESC 鍵,接著輸入 :wq
ls –l ? ——看看是否已經(jīng)存在 a.sh 這個(gè)文件了,假設(shè)存在就對(duì)了,假設(shè)沒有,把電腦砸了并大聲質(zhì)問它
這樣,我們第一個(gè) shell 腳本文件就寫好了。試著運(yùn)行一下,輸入 a.sh ? 顯示“未找到命令”。這是怎么回事呢?明明在的嘛,先別急著砸電腦并質(zhì)問它。這是由于在 windows 下,系統(tǒng)默認(rèn)的情況是——先在當(dāng)前文件夾下查找并運(yùn)行文件,假設(shè)沒有,那么就依次到 path 環(huán)境變量指定的文件夾去查找并運(yùn)行。而 linux 由于安全的原因,不在當(dāng)前文件夾下查找,僅到 PATH 環(huán)境變量指定的文件夾去查找。所以,眼看著在這里還顯示“未找到命令”。如今我們要運(yùn)行了,怎么辦呢?當(dāng)然第一種方法就是把當(dāng)前文件夾加到 PATH 環(huán)境變量里,只是這也太麻煩了。另外一種方法就是指定絕對(duì)路徑(你找不到我就告訴你確切位置),能夠這樣 ??/home/xxx/a.sh? , xxx 就是當(dāng)前username相應(yīng)的家文件夾了;還能夠這樣, ~/a.sh ,別忘了 ~ 就是我們的家文件夾;還能夠這樣 ./a.sh ,別忘了 . 就是指當(dāng)前文件夾(忘了往前翻翻)
這回提示不一樣了,顯示“權(quán)限不夠”,至少說明找到文件了。但權(quán)限又是怎么回事呢?還是來看一下現(xiàn)有什么權(quán)限吧。 Ls-l ? ,列出具體信息。注意看 a.sh 一行,最前面的字符
-rw-rw-r--? ,去除掉頭一個(gè) - ,剩下是 9 個(gè),分三組來看各自是 ?rw-? 、 rw-? 、 r--? ,這表示針對(duì)三種角色的權(quán)限。三種角色是全部者、同組人、其它人(角色劃分的確有點(diǎn)不夠精細(xì),但也基本夠用,關(guān)鍵是角色多了老麻煩了,有興趣參考 windows 的文件系統(tǒng)的各類角色)。 r 表示讀, w 表示寫, x 表示運(yùn)行。那么綜合來看,權(quán)限是這樣劃分的:全部者擁有讀和寫 (rw-) 權(quán)限 ,同組人擁有讀和寫 (rw-) 權(quán)限,其它人擁有讀權(quán)限 (r--) 。看看,大家都沒有運(yùn)行權(quán)限。那么怎么加上運(yùn)行權(quán)限呢?命令 chmod
chmod :? 改變文件權(quán)限
運(yùn)行 chmod +x a.sh? ,表示為 a.sh 文件加上運(yùn)行權(quán)限。這次再看一下 ls -l? ,權(quán)限變成了 rwxrwxr-x ,分三組就是自己讀、寫、可運(yùn)行,同組人讀、寫、可運(yùn)行,其它人讀、可運(yùn)行。每一個(gè)角色都加上可運(yùn)行權(quán)限了。實(shí)際上這樣不太安全,相當(dāng)于全部人都能夠運(yùn)行它,假設(shè)想更精細(xì)的控制,那么看幫助了解 chmod 具體使用方法。
如今再來運(yùn)行一下 ??./a.sh? ,應(yīng)該能夠顯示一串字符了。我們輸入的命令是 echo $PATH ,所以運(yùn)行結(jié)果是顯示 PATH 環(huán)境變量里的文件夾,注意是用 : 分隔的, windows 里是 ; 分隔的。能夠檢查一下,當(dāng)前文件夾肯定不在里面,否則就不會(huì)“未找到命令”了
正在執(zhí)行的程序在系統(tǒng)里叫做進(jìn)程。查看有哪些程序在執(zhí)行中呢?
ps :? 查看進(jìn)程
ps ?aux ? 具體顯示全部用戶進(jìn)程, PID 表示進(jìn)程號(hào)。當(dāng)某個(gè)進(jìn)程占用資源太多或陷入失控,我們能夠殺掉它, kill
kill :? 殺死進(jìn)程
kill PID
ps 顯示的資源信息是靜態(tài)的,假設(shè)想實(shí)時(shí)觀測(cè)一下系統(tǒng)資源占用情況,使用 top 命令監(jiān)控
top :? 監(jiān)控系統(tǒng)資源,顯示各進(jìn)程 cpu 占用,內(nèi)存占用等信息。默認(rèn) 5 秒刷新一次,按 q 退出。
好了,這篇粗略 + 速成教程就到此為止了。之所以介紹的不非常具體,命令也不多,并且沒有按部就班,是希望看的人知其然更要知其所以然。至于命令的具體操作,事實(shí)上幫助是最好的參考資料。何況還有這個(gè)更強(qiáng)大 man 命令,想看某個(gè)命令的詳解和使用方法: man xxx? 。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
