Linux命令學習篇0——由來
昨天在用curl發送簡單的HTTP請求做測試的時候發現自己每次使用的時候都是在網路上查看別人的樣本才能想起來怎麼用,這樣效率太低了,雖然有網路依然在,但是總感覺不是被自己掌握著,心裡不踏實,回想起來自己使用Linux也差不多有三四年了,從最開始接觸就是用一本Linux基礎教程的書籍(不是鳥哥的書),開始接觸的就是linux的各種各樣的命令一些關於簡單的shell編程的知識,但是當時僅僅掌握了一些常用的命令,對於大多數的命令還是在使用的時候遇到再翻資料查看,可能處於對英文文檔的畏懼或是感到乏味,通過man命令查看的過程中總是不能夠全部掌握一個命令的使用,而僅僅是該命令的某一個參數,以後都這樣使用,其實可能還存在另外一種更簡單有效方案,而自己完全不知道。
鑒於以上的問題,我覺得還是有必要靜下心來好好的學習一下經常使用到的linux命令,這樣以後自己說出“熟悉Linux作業系統”(當然這句話不是僅僅掌握一些命令就可以了)的時候心裡更有底氣了,另外也讓自己能把一些片段時間收集起來,堅持做一件事情,鍛煉一下自己對一件事情的堅持,這點是以前自己最欠缺的。
Linux命令有上百個,我們常用的也就那幾十個,首先就從這幾十個開始吧,主要參考man命令的描述,這樣順便能鍛煉一下自己的英文文檔的閱讀能力,每個命令儘可能的通過執行個體配合講述每個參數的使用以及組合的使用,當然可能有一些命令會非常複雜,需要一段時間的學習才能真正的吃透,不過現在時間還算充足,收集一下片段時間,只要自己能夠堅持,肯定能夠戰勝的。
Linux命令一般儲存在/usr/local/sbin,/usr/local/bin,/usr/sbin,/usr/bin,/sbin,/bin這些目錄下,我們一般使用的時候並不需要輸入命令的絕對路徑,而僅僅輸入命令名就可以了,這是因為在shell中(經常用的bash)會根據根據環境變數PATH的配置,在所有PATH下的目錄中尋找是否存在輸入的命令,如果存在則使用該檔案,如果不存在則報錯:-bash: ls: 沒有那個檔案或目錄,我們可以通過which命令後面跟著bash的命令查看命令的執行檔案具體存放在那個目錄下,例如which ls輸出/bin/ls。
其實每一個命令只是一個linux的可執行檔,這個可執行檔可以是二進位檔案、指令檔等,當我們運行它們的時候和執行一些我們編譯串連完成之後的程式一樣的,對於指令檔我們可以通過查看該檔案內容的方式查看具體執行過程,而二進位檔案一般是ELF格式的二進位檔案,類似於C語言寫出來的程式編譯串連產生的可執行檔,可以通過strace命令跟蹤一個命令執行過程中使用的系統調用,在分析問題的時候這是一個很棒的方法。當我們啟動執行一個命令的時候,其實我們是處於另外一個進程的上下文中,這個進程就是我們使用的bash進程,它始終在等待著使用者的輸入,然後根據輸入的命令列的第一個參數從PATH(如果只是一個參數名會從PATH中尋找,如果包含絕對路徑或者相對路徑則根據當前路徑尋找)中尋找該檔案,如果找到之後再啟動一個新進程(exec系統調用),這個子進程執行命令,而bash進程則根據是否該命令的是否以後台進程執行決定是否等待子進程執行完成。
好了,經過以上的介紹算是拉開了全面學習Linux命令的序幕,接著就認真的學習每一個命令,堅持下來。