最近常用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