Linux新手命令

來源:互聯網
上載者:User

給老婆寫了一份速成培訓教材——最常用的命令及解釋。當然每個人工作內容不同,常用命令也不同,這隻是我的個人經驗,而且要考慮到接受者的基礎。

ls:列出目錄下的內容,類似於dos下的dir。

常用參數有:

ls –l,逐行顯示詳細內容;

ls –a,  顯示隱藏的檔案或目錄;——linux下,首碼為.的檔案名稱和目錄名即被預設為是隱藏檔案

參數也可以組合ls –al ,詳細顯示包含隱藏檔案在內的內容。

當加上-a時,會看到兩個特殊的目錄.  和.. ,.表示目前的目錄;..表示父目錄

cd :切換目錄

那麼可以想象,cd . 不會有任何變化,因為切換到目前的目錄等於沒說對吧;cd .. 切換到父目錄(此時可以看到命令提示字元前面的路徑是有變化的)

有關cd使用還有幾個常見用法:

cd /   直接一步到“根”(linux檔案系統雷根就類似windows的c:  d:  等等,只不過無論多少塊硬碟和分區,linux只有唯一的根/),那麼就不用一次一次的cd ..往上退了對麼

cd ~  一步到“家”目錄。什麼是家目錄呢?在linux下,每建立一個使用者會自動為這個使用者安排一個家目錄,使用者對自己的家目錄擁有完全的讀寫權限,使用者登入之後的預設工作目錄也是在自己的“家”裡(windows也一樣,不信你用一個新帳號登入,馬上會看到c盤的“使用者”檔案夾下多出一個和這個帳號名相同的檔案夾,裡面是“我的文件”“我的圖片”“我的視訊”之類的東西)

普通用法就是cd a/b/c 這樣了,當然此時的a/b/c三級目錄是在目前的目錄下的,這就是相對路徑;如果恰好不在目前的目錄下,那就找不到了。只能從“根”寫起cd /xxx/a/b/c ,這就是絕對路徑。

上面說了,無論有多少塊硬碟多少個分區,都只有一個根,那麼如果加一塊硬碟,它會放到哪去呢?——答案是你愛放哪就放哪。操作是這樣的,首先

mkdir : 建立目錄

使用mkdir建立目錄,用起來相當簡單,很少加參數。mkdir xxx 就是在目前的目錄下建立一個xxx目錄,如果不在目前的目錄下建立呢?一種方法是用cd切換過去;一種方法是用絕對路徑mkdir /xxx/a/b/c/xxx

下一步:把這個新硬碟的某個分區“附加”到我們剛才建立的目錄下去

mount:掛載裝置

mount /dev/sdb1 /xxx/a/b/c/xxx (目錄好深啊,還真不容易找呢),以後再進到這個目錄cd /xxx/a/b/c/xxx ,ls看到的就是新硬碟的內容了。(當然此處我假定新硬碟的編號是/dev/sdb1,至於為什麼是這個編號,由於複雜度問題在此就不解釋了)

那麼如果細點心,你會提出這樣的疑問——假設我原來的目錄/xxx/a/b/c/xxx 不是一個新目錄,而且裡面有內容。那麼當我在這個目錄下掛載新硬碟的時候,原來的東西怎麼辦呢?——答案是“確實看不見了”。不用吃驚,因為並沒有丟,只是看不見了而已。當我們卸載這個裝置,它們就又回來了

umount: 卸載裝置

umount /dev/sdb1 ,卸載掉了,簡單吧。

所以可以有這樣一個加密小技巧,對要加密的目錄掛載一個裝置(不過為了加密一個目錄買塊硬碟,這個代價有點高。而且別人一但發現了,umount一下就暴露了)

也許有人說幹嘛弄這麼複雜,象windows那樣自動識別,一塊硬碟(分區)一個盤符不挺好的嗎?事實上這種多根目錄可能會更麻煩。Linux“繼承”了unix的傳統,多用於伺服器上,在伺服器上增加、替換(壞)、乃至交換硬碟都很平常。想像一下,如果在這台機器上是d:盤,拿到另外一台機器變e:盤了,很多程式跑不起來了,那怎麼辦?即便是我們個人電腦,如果你經常裝機做系統的話,也不少有這些困擾呢。而掛載到目錄下就容易多了,只要把分類樹搞一致了,隨便怎麼增、刪、換硬碟都沒關係。

想象一下這個情境,/xxx/a/b/c/xxx目錄是存放某資料庫檔案的,據觀察增長很快,硬碟空間告急。不用擔心,可以這樣做,先把新硬碟mount到某個臨時目錄下mount /dev/sdb1 /temp ,拷貝或移動原有檔案(當然為了保持資料一致性,這會兒停一下資料庫)cp/xxx/a/b/c/xxx/* /temp –R ,拷貝完成後,把硬碟重新mount一個位置mount /dev/sdb1 /xxx/a/b/c/xxx ,啟動資料庫,喔,新硬碟用上了,而且對所有的程式、使用者完全感知不到變化。如果是windows得折騰好久吧:)所以還是單根目錄簡單好用。君不見微軟現在也提倡磁碟單分區了嗎:)

提到拷貝和移動了——

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

最常用的參數–R ,表示迴圈遞迴操作下面所有子目錄,大寫字母

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

不變目錄,那就是改名字(因為在同一個目錄下移動嘛)

發現拷貝錯了或者拷貝多了,刪除唄

rm: 刪除檔案或目錄

rm a.sh 刪除目前的目錄下的檔案a.sh

rm * -R 刪除目前的目錄下所有內容,包括迴圈遞迴子目錄(-R一定要慎用啊,否則悔之晚矣)

前面提到,別人很容易發現你新載入的硬碟,那麼是如何發現的呢?df命令

df: 顯示檔案系統

df一下,看,哪塊硬碟掛在哪個目錄下,佔用多少空間,剩餘多少空間,一目瞭然。如果想細緻瞭解倒底那個目錄或檔案佔用了我們寶貴的磁碟空間呢,du命令

du: 查看檔案磁碟空間

讓我們cd / 來到根目錄,du一下,哇,這哪看的清。逐級列出所有檔案和目錄,好敬業啊。但我們不需要看這麼多,只需要知道某一級目錄佔了多少空間就行了,加個參數--max-depth=1 是顯示1級,=2那就是顯示兩級了。再細緻的用法就看協助吧。順便提一句,大部分命令後面加參數--help,就可以其協助資訊了。

這麼多檔案,如果想找其中某一個怎麼辦?find搜尋

find:  尋找檔案

find尋找可以按名稱、按類型、按日期等等,總之強大到讓人無法直視。同樣,深入學習請看協助。最常用的按名稱尋找:find–name xxx.sh ,目前的目錄及子目錄下尋找xxx.sh檔案

為什麼我一再拿.sh的檔案作樣本呢?因為按照習慣,xxx.sh的檔案是一個shell檔案(類似於dos裡的批次檔.bat)能夠被執行。但它倒底是不是個真的sh檔案呢?——等等,這話什麼意思,難道還有假的shell檔案嗎?當然有可能。Linux裡不是按照副檔名來區分檔案類型的,甚至都不應該用副檔名這個概念。之所以寫成xxx.xxx是為了迎合windows使用者的表示方法(當然這種表示方法也確實不錯)。系統是不限制你要不要“副檔名”、寫什麼字母的。當然,如果硬要把鳳凰傳奇.mp3  改名成haha.sh ,你肯定是執行不起來的。反過來說,如果把一個a.sh 改名成a.xxoo,一樣是可以執行的。那麼豈不是檔案類型亂作一團?所以嘛,採用大家約定俗成的命名方法還是利人利己的。另外,還可以用命令file來查看其真實的檔案類型。

file: 查看檔案類型

file a.sh ,如果確實是一個shell檔案,會顯示類型為:ASCII text——是個文字檔(批處理本來就是文字檔,bat也一樣)。那麼可以用命令cat來查看檔案內容

cat: 查看檔案內容

cat a.sh 即可顯示內容。如果是用鳳凰傳奇.mp3改名改成的a.sh,那肯定就亂碼了。

當然我們還可以用編輯命令編輯它

vi: 編輯檔案——vi實際上是個編輯軟體,限於篇幅不詳細介紹,自行google

好了,說了不少了,做個小例子吧

cd ~  ——來到自己的家目錄

vi a.sh ——建立並編輯一個a.sh檔案。按一下字母i,進入編輯狀態。此時可以輸入了。輸入echo $PATH (注意大小寫),好,加上空格就輸入這10個字元就行。按ESC鍵,接著輸入:wq

ls –l  ——看看是否已經存在a.sh這個檔案了,如果存在就對了,如果沒有,把電腦砸了並大聲質問它

這樣,我們第一個shell指令檔就寫好了。試著運行一下,輸入a.sh  顯示“未找到命令”。這是怎麼回事呢?明明在的嘛,先別急著砸電腦並質問它。這是因為在windows下,系統預設的情況是——先在目前的目錄下尋找並執行檔案,如果沒有,那麼就依次到path環境變數指定的目錄去尋找並執行。而linux因為安全的原因,不在目前的目錄下尋找,僅到PATH環境變數指定的目錄去尋找。所以,眼看著在這裡還顯示“未找到命令”。現在我們要執行了,怎麼辦呢?當然第一種方法就是把目前的目錄加到PATH環境變數裡,不過這也太麻煩了。第二種方法就是指定絕對路徑(你找不到我就告訴你確切位置),可以這樣  /home/xxx/a.sh ,xxx就是目前使用者名對應的家目錄了;還可以這樣,~/a.sh,別忘了~就是我們的家目錄;還可以這樣./a.sh,別忘了.就是指目前的目錄(忘了往前翻翻)

這回提示不一樣了,顯示“許可權不夠”,至少說明找到檔案了。但許可權又是怎麼回事呢?還是來看一下現有什麼許可權吧。Ls-l  ,列出詳細資料。注意看a.sh一行,最前面的字元

-rw-rw-r-- ,去除迴轉一個-,剩下是9個,分三組來看分別是 rw- 、rw- 、r-- ,這表示針對三種角色的許可權。三種角色是所有者、同組人、其他人(角色劃分的確有點不夠精細,但也基本夠用,關鍵是角色多了老麻煩了,有興趣參考windows的檔案系統的各類角色)。r表示讀,w表示寫,x表示執行。那麼綜合來看,許可權是這樣劃分的:所有者擁有讀和寫(rw-)許可權,同組人擁有讀和寫(rw-)許可權,其他人擁有讀許可權(r--)。看看,大家都沒有執行許可權。那麼怎麼加上執行許可權呢?命令chmod

chmod: 改變檔案許可權

執行chmod +x a.sh ,表示為a.sh檔案加上執行許可權。這次再看一下ls -l ,許可權變成了rwxrwxr-x,分三組就是自己讀、寫、可執行,同組人讀、寫、可執行,其他人讀、可執行。每個角色都加上可執行許可權了。實際上這樣不太安全,相當於所有人都可以執行它,如果想更精細的控制,那麼看協助瞭解chmod詳細用法。

現在再來執行一下  ./a.sh ,應該可以顯示一串字元了。我們輸入的命令是echo $PATH,所以執行結果是顯示PATH環境變數裡的目錄,注意是用:分隔的,windows裡是;分隔的。可以檢查一下,目前的目錄肯定不在裡面,否則就不會“未找到命令”了

正在啟動並執行程式在系統裡叫做進程。查看有哪些程式在運行中呢?

ps: 查看進程

ps  aux  詳細顯示所有使用者進程,PID表示進程號。當某個進程佔用資源太多或陷入失控,我們可以殺掉它,kill

kill: 殺死進程

kill PID

ps顯示的資源資訊是靜態,如果想即時觀測一下系統資源佔用情況,使用top命令監控

top: 監控系統資源,顯示各進程cpu佔用,記憶體佔用等資訊。預設5秒重新整理一次,按q退出。

好了,這篇粗略+速成教程就到此為止了。之所以介紹的不很詳細,命令也不多,而且沒有按部就班,是希望看的人知其然更要知其所以然。至於命令的具體操作,其實協助是最好的參考資料。何況還有這個更強大man命令,想看某個命令的詳細解釋和用法:man xxx 。


有時候命令記不清楚了怎麼辦?——如果只記起命令的前幾個字母,按tab鍵系統會自動補齊;如果補齊的命令不是我們想要的,連續按兩次tab鍵,會把這幾個字母開頭的命令全列出來,這個時候差不多也該想起來了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.