天天看點

常用Ubuntu指令介紹

最近常用Ubuntu,備注一下常用指令,。

1.      擷取Ubuntu版本号:  /etc/issue 或 lsb_release -a

2.         檢視Ubuntu系統位數:uname  -ar 或 getconf LONG_BIT

3.         檢視Ubuntu機器的處理器架構,結果為i686或x86_64:arch 或uname  -m

4.         顯示目前目錄内容(目錄清單),(如果按檔案改動時間順序來排序,則可用ls  -lt): ls

5.         顯示目前目錄下檔案的詳細資訊,包括讀寫權限,檔案大小,檔案生成日期等(若想按照更改的時間先後排序,則需加-t參數,ll  -t或ll  -t  |tac,後者為最新修改的時間排在最後):ll

6.         改變目前工作目錄位置,(若進入系統根目錄,可直接使用cd  /) :cd  directory_name ,若檔案夾有空格,則需用引号括起來,如進入目錄名為a b的目錄,則為:cd  “a b”

7.         删除目前目錄中指定檔案,如删除.xxx的所有檔案,(對于連結檔案,隻是删除了連結,原有檔案均保持不變;如果沒有使用-r選項,則rm不會删除目錄;如果想删除前再次擷取确認,可使用-i選項,如rm  -i  xxx):rm  *.xxx

8.         删除空目錄,一個目錄被删除之前必須是空的,删除某目錄時也必須具有對父目錄的寫權限:rmdir  xxx

9.         移動檔案(若将檔案xx.yy移動到目錄tt中,則為mv  xx.yy tt)或将檔案改名(若将檔案名xx.yy改為aa.bb,則為mv  xx.yy aa.bb):mv  源檔案或目錄  目标檔案或目錄

10.       複制檔案(可同時有多個檔案)或目錄到指定的目錄(若将目錄aa複制到bb目錄中,則為:cp  -a aa  bb):cp  源檔案或源目錄  目的目錄

11.       建立新目錄,要求建立目錄的使用者在目前目錄中具有寫權限,并且指定的目錄名不能是目前目錄中已有的目錄,(如果建立權限為777的目錄,可用mkdir  -m 777  filename):mkdir  filename

12.       檢視某個指令的詳細說明,如檢視rm指令:man  rm

13.       建立靜态庫,如使用目前目錄中的所有.o檔案建立libxx.a靜态庫:ar  -r  libxx.a *.o

14.       建立動态庫,如使用目前目錄中的所有.o檔案建立libxx.so動态庫(若有兩個在不同目錄的.cpp檔案直接生成動态庫,則為:gcc  -shared/home/spring/gdbtest/src/add/add.cpp/home/spring/gdbtest/src/subtract/subtract.cpp -o  libtest.so)(若從靜态庫b1.a,b2,a直接生成動态庫b.so,則相應指令為:gcc-shared -fPIC -Wl,--whole-archive b1.a 

b2.a  -Wl,--no-whole-archive -o  b.so):gcc  -shared –o  libxx.so  *.o

15.       檢視目前所處路徑(完整路徑):pwd

16.       需要提示權限執行的指令,如果你不是root使用者,那麼在執行一些指令做一些操作的時候有時是不允許的,此時可以在指令前面加上sudo:sudo

17.       檢視靜态庫是否含有某個函數,如檢視xx.a靜态庫中是否有fun1函數(也可以檢視某個庫所有包含的函數,如nm  xx.a >fun.txt):nm  xx.a | grep fun1

    檢視動态庫是否含有某個函數,如檢視yy.so動态庫中是否有fun2函數(也可以檢視某個庫所有包含的函數,如 nm yy.so > info.txt):nm yy.so | grep fun2

            如果僅導出已定義的符号,則加上"-D"選項,如nm -D yy.so | grep fun2

18.       檢視cpuinfo相關資訊:cat  /proc/cpuinfo

19.       顯示系統日期:date

20.       cal指令用于檢視公曆(陽曆)月曆,可以檢視指定年份的,如cal  -y 2013, 也可以檢視目前月的,直接用cal,無需帶任何參數。

21.       關閉系統(若非root,則shutdown前需加sudo):shutdown  -h  now

22.       重新開機系統(若非root,則shutdown前需加sudo):shutdown  -r  now

24.       建立一個指向檔案或目錄的軟連接配接(當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們隻要在某個固定的目錄,放上該檔案,然後在其它的目錄下用ln指令連結(link)它就可以,不必重複的占用磁盤空間)。格式,ln  -s  源檔案 目标檔案。檔案保持同步變化。目錄隻能建立軟連結,目錄建立連結必須用絕對路徑,在連結目标目錄中修改檔案都會在源檔案目錄中同步變化。如給源目錄/home/spring/aa建立一個新的目錄/usr/local/aa:ln 

-s /home/spring/aa  /usr/local/aa

25.       更改檔案或目錄的日期時間,包括存取時間和更改時間(若有兩個檔案a.b,c.e,将c.e的檔案的日期修改成a.b的日期,則為touch  a.b c.e),或者建立一個不存在的檔案(若将已存在的aa.x檔案建立成一個bb.y檔案(bb.y檔案原始是不存在的),并且保持與aa.x檔案的内容、建立修改時間一緻,則touch  aa.x bb.y):touch  源檔案名  目的檔案名

    每個檔案都有時間戳,這個時間戳包括通路時間和修改時間,而touch指令主要就是用來修改檔案的通路時間和修改時間。如将檔案a.txt的時間戳改為目前時間,則執行:$ touch a.txt 

26.       顯示檔案内容(若顯示aa.txt的檔案内容,則為cat  aa.txt),或者将幾個檔案連接配接起來顯示:cat  filename

27.       将輸出的檔案内容自動的加上行号:nl  filename

28.       以一頁一頁的方式顯示檔案的内容,按空格鍵(space)為顯示下一頁;按b鍵會往回(back)一頁顯示;按q鍵退出more:more  filename

29.       分頁顯示檔案的内容,類似于more,但比more功能更強大;按q鍵退出less;若搜尋檔案中某個字元串xxx,可使用/xxx來做到;通過加入-N參數來顯示每行的行号:less  參數  filename

30.       用來顯示檔案的開頭内容:head  filename

31.       用來顯示檔案的末尾内容:tail  filename

32.       檢視某個系統指令是否存在或者檢視某個可執行檔案的位置,若查找ls指令的位置,則which  ls, 會傳回/bin/ls,若找不到該指令(或該執行檔案),則不會有任何傳回結果:which  commandname

33.       在目前目錄查找檔案名字尾為txt的所有檔案(若從系統根目錄查找,則為find  / -name  “*.txt”;若從你的$HOME目錄查找,則為find  ~ -name  “*.txt”;在/etc目錄查找,則為find  /etc -name  “*.txt”;若要在目前目錄查找檔案名以一個小寫字母開頭,最後是4到9加上.log結束的檔案,則為find  .  –name  “[a-z]*[4-9].log”):find  .  -name  “*.txt”

   在目前目錄查找此目錄下所有檔案内包含的指定關鍵字"ab",則執行:$ find . -type f -print -exec grep ab {} \;

34.       chmod指令用于改變linux系統檔案或目錄的通路權限。Linux系統中的每個檔案和目錄都有通路許可權限,用它來确定誰可以通過何種方式對檔案和目錄進行通路和操作。檔案或目錄的通路權限分為隻讀、隻寫和可執行三種。有三種不同類型的使用者可對檔案或目錄進行通路,檔案所有者(一般是檔案的建立者),同組使用者,其他使用者。每一檔案或目錄的通路權限都有三組,每組用三位來表示,分别為檔案屬主的讀、寫和執行權限;與屬主同組的使用者的讀、寫和執行權限;系統中其他使用者的讀、寫和執行權限。當用ls 

-l指令顯示檔案或目錄的詳細資訊時,最左邊的一列為檔案的通路權限。第一列共有10個位置,第一個字元指定了檔案類型。在通常意義上,一個目錄也是一個檔案。如果第一個字元是橫線,表示是一個非目錄的檔案。如果是d,表示是一個目錄。從第二個字元開始到第十個共9個字元,3個字元一組,分别表示了3組使用者對檔案或者目錄的權限。權限字元用橫線代表空許可,r代表隻讀,w代表寫,x代表可執行。确定了一個檔案的通路權限後,使用者可以利用chmod指令來重新設定不同的通路權限。權限代号:r:讀權限,用數字4表示;w:寫權限,用數字2表示;x:執行權限,用數字1表示;-:删除權限,用數字0表示;s:特殊權限。如對目錄test及其子目錄所有檔案添加可讀可寫可執行權限,則為:chmod 

-R 777  test

35.       可以用tar指令進行壓縮、解壓縮、打包、解包等。打包是指将一大堆檔案或目錄變成一個總的檔案;壓縮則是将一個大的檔案通過一些壓縮算法變成一個小檔案。使用tar程式打出來的包常稱為tar包,tar封包件的指令通常都是以.tar結尾的。生成tar包後,就可以用其它的程式來進行壓縮。常用參數:-c:建立新的壓縮檔案;-x:從壓縮的檔案中提取檔案;-z:支援gzip解壓檔案;-j:支援bzip2解壓檔案;-Z:支援compress解壓檔案;-v:顯示操作過程;-f:指定壓縮檔案。如,有個目錄test1,将其打包則為:tar 

cvf test1.tar  test1;若将其打包并以gzip壓縮,則為:tar  zcvf  est1.tar.gz  test1; 若解包或解壓縮,則相應的把cvf和zcvf換成xvf和zxvf即可,如把test2.tar.gz解壓縮,則為:tar  xvf est2.tar.gz ,則會在目前目錄下生成一個test2檔案。

36.       檢視檔案或目錄磁盤使用的空間大小,可以用du指令,如顯示test目錄大小,則将終端定位到test目錄後,輸入:du  -s

37.       diff能比較單個檔案或者目錄内容.如果指定比較的是檔案,則隻有當輸入為文本檔案時才有效.以逐行的方式,比較文本檔案的異同處。如果指定比較的是目錄的時候,diff指令會比較兩個目錄下名字相同的文本檔案。列出不同的二進制檔案、公共子目錄和隻在一個目錄出現的檔案。如比較1.txt和2.txt兩個文本檔案,可為:diff  -c 1.txt  2.txt ,會将内容不同的地方在行之前用”!”标出。

38.       grep指令是一種強大的文本搜尋工具。如從test.txt檔案中查找android關鍵詞,則為:grep  -n  ‘android’  test.txt . 也可以同時從多個檔案中查找關鍵詞,如:grep  -n  ‘android’  test1.txt test2.txt

如果要在目前目錄下所有檔案查找"AB"字元串:$ grep -rn "AB" *

39.       wc指令用于統計指定檔案中的行數、字數、位元組數,并将統計結果顯示輸出。如:wc  test.txt ,輸出為8  9 10  test.txt , 其中8表示行數,9表示字數,10表示位元組數,test.txt表示檔案名。如果統計目前目錄下帶有字尾名為frm、asp、bas的代碼行數,則指令為find  . -name  “*.frm”  -or -name “*.bas”  -or -name “*.asp”  | xargs wc  -l > result.txt

,執行完此指令後會在目前目錄下生成一個result.txt檔案,裡面包含了每個檔案(frm/bas/asp)的代碼行數以及總的代碼行數。

40.       free指令可以顯示Linux系統中空閑的、已用的實體記憶體及swap記憶體,及被核心使用的buffer.如:free  -m ,則會以MB為機關顯示記憶體使用情況。

41.       可以使用apt-get指令來安裝/更新一個deb包,如安裝g++,則:apt-get  install g++

42.       c++filt指令:C++函數在Linux系統下編譯之後會變成類似這樣:_ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi,乍一看并不知道函數的原始名稱,此時可以用c++filt指令:c++filt  _ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi,即可顯示原始函數名稱CBC_EAN13::RenderBitmap(CFX_DIBitmap*&,int&)

2 >/home/spring/1.txt ,将2寫入到1.txt檔案中

44.       rar指令可以解壓縮在windwos下生成的rar檔案,如test.rar,則可以執行:$rar  x test.rar

45.       ps -ef指令用來檢視Linux系統所有程序,如果想檢視包含指定名字(如 test)的程序,則可以執行:$ ps -ef | grep test

46.       殺死指定的程序可以用kill指令,如殺死程序PID為30732的程序,則可以執行:$ kill -9 30732 ,若需要批量殺死程序,則可執行:$ ps aux | grep test | awk ‘{print $2}’ | xargs kill -9

47.       檢視Linux系統CPU和記憶體使用率,可以通過top指令:即先在終端輸入top指令回車,然後再按1即可

48.      通過指令打開顯示圖像:$ eog  /images/a.jpg

49.        遠端拷貝檔案: 可以通過"scp"指令,如從遠端伺服器傳某個指定目錄或檔案到本地指定目錄,則執行:$ scp -r  xxx  [email protected]:/home/spring/yyy/   ;若存放到本地根目錄,可以執行:$ scp -r  a.jpg  [email protected]:~/     ;執行以上指令時會要求輸入本地機子的密碼,若不想每次都輸入,可以執行:$ ssh-copy-id  [email protected]  ,這樣下次在傳檔案時就不用重複輸入密碼了;若從本地傳檔案到遠端伺服器,則執行:$

scp -r  b.jpg  [email protected]:/home/autobuild/fbc/

50.        檢視機子ip和MAC位址:$ ifconfig

51.      安裝SSH-SERVER:$ sudo  apt-get install -y openssh-server

可以通過ssh指令通路指定的ubuntu主機,假設要通路的ubuntu主機名為spring, ip為10.0.1.1,又知道此主機的密碼,則執行:ssh [email protected] ,回車,再收入這台主機的密碼即可

53.解決彈出對話框"System program problem detected Do you want to report the problem now?"的問題,在終端輸入:$

sudo rm /var/crash/* 

54. 在Ubuntu上檢視指定檔案是采用何種編碼方式可以使用file指令,如查找test目錄下所有的.cpp檔案的編碼格式,則執行:$ file test/*.cpp

55. 在Ubuntu上安裝.deb檔案指令,如code_1.13.0-1496940180_amd64.deb: $ sudo  dpkg  -i  code_1.13.0-1496940180_amd64.deb