[原]那些年整理的Linux常用命令,簡單明瞭

雨知發表於2015-02-12

查詢相關

find

按規則查詢某個檔案或資料夾,包括子目錄

  • find . -name '*.sh' -- 以.sh結尾的檔案
  • find . -name '*channel*' -- 包含channel字元的檔案
  • find . -name 'build*' -- 以build開頭的檔案
  • find . -name 'abc??' -- abc後面有兩個字元的檔案

grep

查詢內容包含指定的範本樣式的檔案,Global Regular Expression Print

  • grep -n pattern files -- 規則 -n表示顯示行號
  • grep -n 'PostsActivity' AndroidManifest.xml
  • grep -n '\d' AndroidManifest.xml
  • grep 'aapt' build-channel.xml -- 檔案中包含字串的所有地方
  • grep -n 'aapt' build-channel.xml -- 檔案中包含字串的所有地方,並顯示行號
  • ps -e | grep java -- 所有java程式
  • ps -e | grep -i qq --所有qq程式,不區分大小寫
  • find . -name '*channel.xml' | xargs grep -n 'aapt' -- 在以channel.xml結尾的檔案中查詢包含‘aapt’關鍵字的地方
  • ls | grep 'channel' -- 包含channel關鍵字的檔案

which

在PATH變數指定的路徑中,搜尋某個系統命令的位置,並且返回第一個搜尋結果

  • which zip
  • which grep

檢視命令

tail

tail [-f] [-c Number | -n Number | -m Number | -b Number | -k Number] [File]

從指定點開始將檔案寫到標準輸出。使用tail命令的-f選項可以方便的查閱正在改變的日誌檔案,tail -f filename會把filename裡最尾部的內容顯示在螢幕上,並且不斷重新整理,使你看到最新的檔案內容。

  • tail -f test.log,迴圈檢視檔案內容,Ctrl+c來終止
  • tail -n 5 test.log,顯示檔案最後5行內容
  • tail -n +5 test.log,從第5行開始顯示檔案

more

more [-dlfpcsu] [-num] [+/ pattern] [+linenum] [file...]

more命令和cat的功能一樣都是檢視檔案裡的內容,但有所不同的是more可以按頁來檢視檔案的內容,還支援直接跳轉行等功能。

  • more +3 test.log,顯示檔案中從第3行起的內容
  • more -5 test.log,設定每屏顯示行數
  • ls -l | more -5,每頁顯示5個檔案資訊
  • more +/day3 test.log,查詢第一個出現"day3"字串的行,並從該處前兩行開始顯示輸出

less

less [options] [file...]

與more命令一樣,less命令也用來分屏顯示檔案的內容。但是二者存在差別:less命令允許使用者向前或向後瀏覽檔案,而more命令只能向前瀏覽。用less命令顯示檔案時,用PageUp鍵向上翻頁,用PageDown鍵向下翻頁。要退出less程式,應按Q鍵。

  • less test.log,檢視檔案
  • ps -ef | less,檢視程式資訊並通過less分頁顯示
  • history | less,檢視命令歷史使用記錄並通過less分頁顯示
  • less test1.log test2.log,瀏覽多個檔案,n和p切換檔案

watch

watch [options] command

每隔一段時間重複執行一個命令,預設間隔時間是2秒。要執行的命令直接傳給shell(注意引用和轉義特殊字元)。結果會展示為全屏模式,這樣你可以很方便的觀察改變

  • watch -n 60 date,執行date命令每分鐘一次,輸入^C 退出
  • watch -d ls -l,檢視目錄變化
  • watch -d ’ls -l | fgrep joe’,想找joe使用者的檔案
  • watch -d 'ls -l|grep scf',監測當前目錄中 scf' 的檔案的變化
  • watch -n 10 'cat /proc/loadavg',10秒一次輸出系統的平均負載
  • watch -n 1 -d netstat -ant,每隔一秒高亮顯示網路連結數的變化
  • watch -n 1 -d 'pstree | grep http',每隔一秒高亮顯示http連結數的變化

檔案相關

vi

vi file

  • 按i鍵,進入編輯模式
  • 按esc鍵,進入命令模式

    :w   儲存檔案但不退出vi 
    :w file 將修改另外儲存到file中,不退出vi
    :w!   強制儲存,不推出vi
    :wq  儲存檔案並退出vi
    :wq! 強制儲存檔案,並退出vi
    q:  不儲存檔案,退出vi
    :q! 不儲存檔案,強制退出vi
    :e! 放棄所有修改,從上次儲存檔案開始再編輯

chmod

change mode,變更檔案或目錄的讀、寫、執行許可權

chmod [-cfvR] [--help] [--version] mode file...

  • mode:許可權設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...]
  • u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是
  • + 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
  • r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
  • chmod也可以用數字來表示許可權,語法為:chmod abc file,如chmod 777 file
  • 其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。 r=4,w=2,x=1
  • chmod 777 file,等同於 chmod a=rwx file
  • chmod ug=rwx,o=x file,等同於 chmod 771 file
  • chmod 4755 filename,可使此程式具有root的許可權
  • ls -l 可以檢視列出當前使用者的檔案許可權

zip

zip -r filename.zip filesdir

  • zip -r test.zip ./*,把當前所有檔案壓縮到test.zip
  • zip -r test.zip test,把test檔案所有檔案及目錄,要是到test.zip
  • zip -d test.zip test.txt,刪除壓縮檔案中test.txt檔案
  • zip -m test.zip ./test.txt,向壓縮檔案中test.zip中新增test.txt檔案
  • zip -r test.zip file1 file2 file3 filesdir,處理多個檔案和目錄,空格隔開

unzip

  • unzip zip-file,解壓到當前目錄
  • unzip -d dst-dir zip-file,解壓到指定的目錄,-d後為指定目錄
  • unzip -n zip-file,不覆蓋已經存在的檔案,-n為不要覆蓋原有的檔案
  • unzip -n -d dst-dir zip-file,解壓到指定的目錄,不覆蓋已經原有的檔案
  • unzip -o -d dst-dir zip-file,-o不必先詢問使用者覆蓋原有檔案
  • unzip -l zip-file,僅檢視壓縮檔案內所包含的檔案

tar

  • tar cvf test.tar test,把test下所有檔案和目錄做備份
  • tar czvf test.tar.gz test,把test下所有檔案和目錄做備份並進行壓縮
  • tar xzvf test.tar.gz,把這個備份檔案還原解壓縮
  • tar tvf test.tar | more檢視備份檔案的內容,並以分屏方式顯示在顯示器上
  • tar czvf test.tar.gz test --exclude=test/svn備份壓縮排除目錄

touch

記憶體相關

ps

顯示瞬間行程(process)的動態,ps [options] [--help]

  • ps -A,列出所有的程式
  • ps -w,顯示加寬可以顯示較多的資訊
  • ps -au,顯示較詳細的資訊
  • ps -aux,顯示所有(包含其他使用者)的程式
  • ps命令詳解
  • ps命令介紹

linux上程式有5種狀態:

  1. 執行(正在執行或在執行佇列中等待)
  2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
  3. 不可中斷(收到訊號不喚醒和不可執行, 程式必須等待直到有中斷髮生)
  4. 僵死(程式已終止, 但程式描述符存在, 直到父程式呼叫wait4()系統呼叫後釋放)
  5. 停止(程式收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行)

top

動態觀察程式的變化,top [-d] | top [-bnp]

  • top -d 2,每兩秒鐘更新一次
  • top -b -n 2 > /tmp/top.txt,將top的資訊進行2次,然後將結果輸出到/tmp/top.txt
  • top -d 2 -pid 10604,僅觀察PID=10604的程式
  • top命令介紹

free

free [options]

free命令可以顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一

  • free -m,以MB為單位顯示記憶體使用情況
  • free -g,以GB為單位顯示記憶體使用情況
  • free -s 10,週期性的查詢記憶體使用資訊

kill

kill [-s signal_name] pid...

傳送指定的訊號到相應程式,The kill utility sends a signal to the processes specified by the pid operand(s)

  • kill -l,列出所有訊號名稱
  • kill -l SIGKILL,得到指定訊號的數值,SIGKILL=9
  • kill -9 pid,強行中止程式,強大和危險的命令迫使程式在執行時突然終止,程式在結束後不能自我清理。危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。
  • kill -HUP PID,停止和重啟程式,該命令讓Linux和緩的執行程式關閉,然後立即重啟。在配置應用程式的時候,這個命令很方便,在對配置檔案修改後需要重啟程式時就可以執行此命令。
  • kill -l PID,以優雅的方式結束程式,-l選項告訴kill命令用好像啟動程式的使用者已登出的方式結束程式。當使用該選項時,kill命令也試圖殺死所留下的子程式。但這個命令也不是總能成功--或許仍然需要先手工殺死子程式,然後再殺死父程式。
  • ps -ef | grep vim,查詢程式

網路相關

ping

ping [引數] [主機名或IP地址]

確定網路和各外部主機的狀態;跟蹤和隔離硬體和軟體問題;測試、評估和管理網路。

  • ping -b 192.168.1.1,ping閘道器
  • ping -c 10 192.168.1.2,ping指定次數
  • ping -c 10 -i 0.5 192.168.1.2,時間間隔和次數限制的ping
  • ping -c 5 www.baidu.com,通過域名ping公網上的站點

netstat

netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]

用於顯示與IP、TCP、UDP和ICMP協議相關的統計資料,一般用於檢驗本機各埠的網路連線情況。

  • netstat -a,列出所有埠
  • netstat -nu,顯示當前UDP連線狀況
  • netstat -apu,顯示UDP埠號的使用情況
  • netstat -i,顯示網路卡列表
  • netstat -g,顯示組播組的關係
  • netstat -s,顯示網路統計資訊
  • netstat -l,顯示監聽的套介面
  • netstat -n,顯示所有已建立的有效連線
  • netstat -e,顯示關於乙太網的統計資料
  • netstat -r,顯示關於路由表的資訊
  • netstat -at,列出所有 tcp 埠
  • netstat -ap | grep ssh,找出程式執行的埠
  • netstat -pt,在 netstat 輸出中顯示 PID 和程式名稱
  • netstat -anpt | grep ':16064',找出執行在指定埠的程式

telnet

telnet[引數][主機]

執行telnet指令開啟終端機階段作業,並登入遠端主機。

  • telnet 192.168.120.206
  • service xinetd restart,啟動telnet服務

ifconfig

ifconfig [網路裝置] [引數]

ifconfig 命令用來檢視和配置網路裝置。當網路環境發生改變時可通過此命令對網路進行相應的配置。

  • ifconfig -a 顯示全部介面資訊
  • ifconfig -s 顯示摘要資訊(類似於 netstat -i)

工具命令

svn

  • svn co path --username name --password password
  • svn co -path -dirname
  • svn add file
  • svn update -r m path
  • svn update -r 200 test.php,更新到某個版本

cvs

  • cvs history -ca | grep username | grep 01-01
  • cvs history -ca | grep username | grep kp | grep 2012-10-'[1 2][0-9]'

ant

Ant -arguments [target1,target2,target3,target4......]

Ant構建檔案能夠將專案編譯,打包,測試。若沒有指定任何引數, Ant會在當前目錄下檢索build.xml檔案,如果找到了就執行該檔案,如果沒有找到了會,會提示沒有找到相關的build.xml檔案。

  • ant -h,表示提供ant命令引數任務
  • ant -projecthelp | -p,顯示當前build.xml的主要任務,例如顯示clean、release
  • ant -version,顯示當前ant版本
  • ant -diagnostics,診斷當前ant的所有的配置
  • ant -debug | -d,檢索當前構建檔案配置情況
  • ant -quiet | -q,顯示當前構建檔案無依賴任務
  • ant -emacs | -e,呼叫編輯當前構建檔案編輯器
  • ant -lib [path],呼叫當前專案中jar,class檔案
  • ant -logfile |-l,呼叫執行當前專案中*.log檔案
  • ant -buildfile |- f | -file,呼叫執行類似build.xml的檔案
  • ant -propertyfile [name],呼叫執行指定的屬性檔案
  • ant -find | -s file,檢索執行指定的構建檔案
  • ant -autoproxy,使用系統自動代理構建檔案
  • ant-main class,設定系統類庫檔案中主要類
  • ant -nice number,設定主類執行緒允許的執行緒數

maven

  • mvn archetype:create,建立 Maven 專案
  • mvn compile,編譯原始碼
  • mvn test-compile,編譯測試程式碼
  • mvn test,執行應用程式中的單元測試
  • mvn site,生成專案相關資訊的網站
  • mvn clean,清除目標目錄中的生成結果
  • mvn package,依據專案生成 jar 檔案
  • mvn install,在本地 Repository 中安裝 jar
  • mvn eclipse:eclipse,生成 Eclipse 專案檔案
  • mvn -Dmaven.test.skip=true,忽略測試文件編譯

adb

  • adb kill-server
  • adb start-server
  • adb devices
  • adb uninstall file
  • adb uninstall -k file,-k 引數,為解除安裝軟體但是保留配置和快取檔案
  • adb push <本地路徑> <遠端路徑>,可以把本機電腦上的檔案或者資料夾複製到裝置(手機)
  • adb pull <遠端路徑> <本地路徑>,可以把裝置(手機)上的檔案或者資料夾複製到本機電腦
  • adb reboot,重啟adb

相關文章