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

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