Linux下C/C++/彙編/內核編程與調試(02)

1章 linux命令行入門    

對於初學者而言,命令行可能有些晦澀難懂。確實,對於一個早已適應windows下鼠標點點就完成一切的用戶來說,在一個比dos好不了多少的終端裏輸入一堆不知道怎麼放到到一塊的字符,的確不是一個很舒服的事情。但是,至少對於看這本書的讀者而言,以後將要從事的工作和計算機都是分不開的。如果你把電腦當作很簡單的工具的而不下功夫瞭解的話,估計一輩子都學不好計算機。所以,雖然命令行看似很古董,看似很落後,它是你瞭解計算機最好的窗口,當你有一天入門之後,你會發現,哇,原來計算機是這個樣子啊。

 

 

我在學習linux的過程發現,很多講授命令行的書,會把大量平時很少用到(僅僅指linux下編程,系統運維除外)或者新手不可能接觸的命令一一羅列出來,這就如同學英語一樣,拿一本牛津詞典讓你從頭到尾背到尾,可能你的英語水平會因此提高很多,但這絕不是學習的最佳手段。況且,在初期,你只需要記住最常用的命令,在以此爲基礎慢慢拓展。當你遇到不熟悉的命令時,你只需要man一下,或者利用搜索引擎找到相關用法就可以了。

 

 

因此,我下面所羅列的命令,基本上屬於最常用的,而且相對比較容易理解。可能這些內容既少又簡單,不能讓你感受到命令行的強大和魅力,但是當你熟悉了這些基本的命令之後,會更容易接受其它相對複雜的命令。因爲不管做什麼事情,都有一個循序漸進的過程,一口吃個大胖子的想法不僅不現實,還有可能造成厭食症。況且事物之間都是有聯繫的,當你熟悉一些東西之後,會幫助你更好的理解其它的問題。(以下命令均在終端輸入)

 

 

1.1聯機文檔

 

 

開始就講聯機命令的目的,是幫助你培養一種習慣:當你遇到不熟悉的命令或功能時,隨時可以在終端輸入man/info + 命令進行查詢。雖然多數的幫助文檔是英文的(我在ubuntu下遇到的基本全是),它們的閱讀難度都很小,既沒有複雜的語法,也不會故意設置長難句考察你的英語閱讀能力。所以,剛開始可能你不會太適應,但是慢慢的你就會習慣了,並且,在這個過程中,你的英語閱讀水平會不斷的提高,這也是一種進步和收穫。

 

 

聯機命令的作用,就是可以幫助你查看每一個命令的所有功能選項,能幫助你更好地理解和應用。linux下的聯機命令有man,infohelp,其中最常用的就是man,用法就是在它們後面直接加上命令。相比於man,info命令具有更強的交互性,並且更詳細;而help則比較簡潔。

下面是一個典型的應用:

 

lishuo@lishuo-Rev-1-0:~$ man ls

LS(1)                            User Commands                           LS(1)

NAME

       ls - list directory contents

SYNOPSIS

       ls [OPTION]... [FILE]...

DESCRIPTION

       List  information  about  the FILEs (the current directory by default).

       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  specified.

       Mandatory  arguments  to  long  options are mandatory for short options

       too.

       -a, --all

              do not ignore entries starting with .

       -A, --almost-all

              do not list implied . and ..

       --author

........

........

 

 

1.2文件系統

 

 

文件系統這個詞聽着很嚇人,但我不會羅列一大堆晦澀的概念放在那裏讓你消化,下面要講的僅僅是一個實用的命令,這些命令在平時用到的比較多,基本上都是對文件目錄的操作。這也是我開始就講文件系統的原因,我們在進行某項工作的時候都是在特定的目錄下,如果不熟悉文件系統的話,你可能連你操作的文件都找不到。linux的文件系統和windows差別比較大,你無法找到D.E.F盤去存儲或打開你需要的文件,尤其是使用一些命令行工具時,鼠標不能再幫你找到你所需要的文件或路徑。因此,只有當你熟悉linux的基本文件系統之後,你才能更好的開展其它的工作。

 

 

下面是一個典型的linux文件系統的目錄層次,熟悉它會幫助你理解後面的講解。

 

 

 

 

 

例如我自己的桌面的目錄是: /home/lishuo/桌面

注:lishuo是我的用戶名,後面可能會涉及到

 

 

1pwd : 顯示當前的工作目錄

 

2ls/dir:顯示當前目錄下所有文件名

 

3cat顯示文本文件的內容

   less/more:分屏顯示文件內容,適合超過一屏的文件

 

4cd更改工作目錄。

    例如: cd 絕對路徑: cd /home/lishuo/桌面

           cd 相對路徑: cd 桌面

           cd ..:進入上一級

           cd ~ :進入主目錄

 

5cp複製文件或目錄

         cp 源文件 目標文件

                cp -R dir1 dir2

       例如:cp test.txt 001.txt      test複製一份生成001

             cp hic    /home/文檔     把當前目錄下的hic複製到文檔中

 

6mv移動或重命名文件或目錄

         mv 存在文件 新文件

                mv file_lists  directory

  例如:mv a.txt b.txt       把a重命名爲b

 

7rm : 刪除文件或目錄(加選項-r刪除目錄)

   rmdir:刪除目錄。通常情況加上-i實現交互,防止誤刪。

   例如:rm -i test.txt

                      rm -i -r test

 

8touch創建新文件或改變文件的訪問和修改時間。

    例如:touch test.txt 如果不存在test,則在當前目錄下創建它。

 

9:mkdir創建目錄

    例如:mkdir  test 在當前目錄下創建目錄test

                                                                                        10diff對兩個文件進行比較,顯示兩者的不同之處,但是不會改變文件內容。

 

11file: 查看文件的狀態和信息

 

12ls -l:顯示訪問權限

 

13find在用戶指定的目錄下查找指定的文件或目錄

 

     語法格式:

      find  [起始目錄]  [搜索條件]  [操作]

      例如:

              find . -name '*.txt' -print

        會在當前目錄下查找所有的以.txt結尾的文件並顯示出來。

 

14 head:顯示文件的頭部信息

 

15 tail:顯示文件的尾部信息

 

16wc命令:統計給動文件中的字節數,字數和行數。

 

          wc -m filename : 顯示一個文件的字符數。

          wc -l filename : 顯示一個文件的行數

          wc -L filename : 顯示一個文件中最長行的長度。

          wc -w filename : 顯示一個文件的字數。

 

17 sort命令:對文件中的各行進行排序

 

18: chmod 命令:修改文件的權限

 

19mount/unmount:加載或卸載文件系統

 

   下面是三種比較常用的命令:

     mount  -v -t auto /dev/hdb3  mnt/dir

   自動檢測文件系統並加載/dev/hdb3到目錄mnt/dir下,執行時顯示詳細信息

     umount -v /mnt/dir

   卸載當前掛載在mnt/dir中的文件系統,執行時顯示詳細信息

      mount  -o loop a.img /mnt/floppy_img

   將鏡像文件a.img掛載到/mnt/floppy_img

 

 

 

1.3其它常用命令      

1:定位命令

whereis:在標準路徑下搜索,與用戶設定的路徑無關,它會顯示所有搜索到的文件。

which在設定的搜索路徑下按順序搜索目錄,定位命令並執行。

 

2:顯示日期和時間

date:設定系統時間

cal顯示日曆

 

3:顯示文本

echo      

echo工具可將其後的任何內容顯示在屏幕上。它在解釋shell變量的工作機制以及在屏幕上顯示shell腳本時非常有用。

 

4:格式轉換

unix2dos  test.txt   將其轉換爲dos格式的文本文件

dos2unix  test.txt   將其轉換爲linux格式的文本文件

 

5:系統信息

cat /proc/meminfo:查看內存使用

cat /proc/cpuinfo:CPU使用率

top:顯示所有進程信息

ps:顯示進程的PID

free顯示內存信息

kill殺死進程

time顯示進程的執行時間

&:將命令放在後臺執行

 

 

6:終端

       打開終端:Ctrl + Alt + T(或着是Ctrl + Shirt + T)

       關閉終端:Ctrl + Shift + Q

       複製:Ctrl + Shift + C

       粘貼:Ctrl + Shift + V

    clrear:清屏(會保留以前輸入的命令)

 

    reset重新初始化終端,效果和clear差不多

 

小技巧:在輸入的時候,TAB鍵可以幫你補全命令,兩次TAB會列出所有的可能。

 

 

7:重定向和管道

 

1:重定向:改變shell標準輸入來源和標準輸出去向的各種方式。

通過重定向符號(>)可以將shell命令的輸出重定向到指定的文件而非屏幕。

例如: commmand > filename

通過重定向符號(<)可以將shell命令的輸入重定向到指定的文件而非鍵盤。

例如:command < filename

 

 

2:管道:管道的功能類似於下面的過程:將一個命令的標準輸出重定向到

一個文件,然後將該文件作爲另一個命令的標準輸入。

命令行語法格式:commandA | commandB

其類似與:commandA > temp

              commandB < temp

              rm temp   

 

 

8:備份與壓縮

 

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

 

.gz

解壓:gunzip FileName.gz

壓縮:gzip FileName

 

.tar.gz 和 .tgz

解壓:tar zxvf FileName.tar.gz

壓縮:tar zcvf FileName.tar.gz DirName

 

.bz2

解壓:bunzip2 FileName.bz2

壓縮: bzip2 -z FileName

 

.tar.bz2

解壓:tar jxvf FileName.tar.bz2

壓縮:tar jcvf FileName.tar.bz2 DirName

 

.bz

解壓:bzip2 -d FileName.bz

 

.tar.bz

解壓:tar jxvf FileName.tar.bz

 

.Z

解壓:uncompress FileName.Z

壓縮:compress FileName

 

.tar.Z

解壓:tar Zxvf FileName.tar.Z

壓縮:tar Zcvf FileName.tar.Z DirName

 

.zip

解壓:unzip FileName.zip

壓縮:zip FileName.zip DirName

 

 

8:安裝卸載軟件:aptdpkg 

 

APT

1.apt-get install 軟件包名稱:安裝或者升級指定軟件包

2.apt-get remove 軟件包名:移除指定軟件包 

3.apt-get upgrade:對系統的軟件全面升級 

5.apt-get clean:清理apt-get 後下載下來的包和未完成的包(安裝源程序被清理)

 

 

dpkg:底層一些的包管理工具,用上apt(高級包管理工具)之後,一般是不需要處理單個的deb文件的。如果需要,就要用dpkg命令 

1.dpkg -i gedit-2.12.1.deb:安裝gedit-2.12.1.deb 

2.dpkg -r gedit:卸載gedit,但不刪除配置文件 

3.dpkg -P gedit:這會連同gedit的配置文件一起刪除,只用-r的話是不刪除配置文件的 

 

 

9dd:轉換並複製文件

 

dd主要用來像在磁帶或者軟盤驅動器之間複製文件。dd可以在不同的操作系統之間傳遞信息而其它方法都不行。

例如:將test.bin文件寫入a.img軟盤中。

dd if=test.bin of=a.img bs=1 count=512 comv=notrunc

具體用法請使用聯機命令。

 

 

11:開關機

 

由於關機重啓之類的命令需要root權限,所以需要在命令前面加上sudo提權,或者輸入sudo -s -E和密碼進入root然後執行相關命令。

關機:

sudo halt

sudo shutdown now

重啓:

sudo reboot

sudo shutdown -r

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章