大部分前端應用都部署在linux上,若想全局hold住一個項目,linux命令是一項必不可少的技能。許多前端對linux命令並不重視,其實這是一個學習性價比很是高的知識點,沒有太多須要理解的地方,大部分靠「記憶+使用」便可掌握,掌握後可解決許多問題,也能提升平常效率,還能成爲面試的加分項。
linux命令很是多,有時參數也挺複雜,所有學習挺枯燥,本文主要從實際的場景和問題出發,總結幾條經常使用的命令,但願能對你們學習linux有所幫助。css
# 首先要學會查看文件屬性 ls -l # 目錄遞歸的查詢 ls -Rl
顯示結果如上圖。第一列十個字符,第一個表示文件類型(-爲文件,d爲目錄,l爲軟鏈),後九位分三組,分別表明用戶、用戶組、其餘用戶對文件的的讀(r)寫(w)執行(x)權限;第二列表示文件數;第三列表示所屬用戶;第四列表示所屬用戶組;第五列表示文件大小;第六七八列分別表示文件最後修改的月、日、時間;最後一列爲文件名。html
查看文件內容有許多命令,以下:前端
# 查看一個文件的內容 cat a.txt # cat支持多個文件鏈接顯示,並可輸出到文件 cat a.txt b.txt > c.txt # tac就是cat反過來寫,做用和cat相反,是從末尾開始向前顯示 tac a.txt # tail只顯示文件的最後若干行,-n 指定顯示的行數 tail test.log -n 100 # 實時顯示內容,看日誌時很是有用 tail test.log -f
# 同時修改用戶和用戶組 chown zhangsan:app # 只修改用戶 chown zhangsan # 只修改用戶組 chown :app
# 權限主體有三種,用戶(u)、用戶組(g)、其餘(o),權限有讀(r)、寫(w)、執行(x)三種 # +表示賦予權限,-表示回收權限 chmod ug+rw test.js # 給用戶、用戶組賦予讀寫權限 # 遞歸改變目錄需加-R chmod -R go-wx ./src # 回收用戶組和其它的寫和執行權限 # 數字表示法也比較經常使用。4:讀,2:寫,1:執行,其和可組合出全部權限。數字是三位數,對應三個主體,用戶、用戶組、其餘。 chmod 751 test.js # 用戶具有讀寫執行權限、用戶組具有讀和執行權限、其餘用戶具有執行權限
linux下修改文件主要用vi或vim,vim是vi發展過來的,最基本的命令是同樣的。vim編輯器命令很是強大,掌握最最基本的就能夠解決問題了。node
# 在編輯器裏打開文件 vim test.txt
學習vim最重要的是掌握三種模式
普通模式:剛進入編輯器時爲普通模式,普通模式下全部的輸入都看成命令,當即執行且不在終端顯示。通常esc可回到普通模式。
編輯模式:普通模式下按i進入編輯模式。編輯模式下可對內容進行修改。
命令模式:普通模式下輸入「shift」 + 「:」 進入命令模式。命令模式下接受命令輸入且顯示在終端,回車生效。常見的命令有,q退出,q!強制退出,w保存,wq保存並退出。linux
# 第一個參數是一個正則表達式,第二個參數是一個文件 grep "html" src/index.html # 在目錄中搜索時須要加-R參數 grep -R "var" ./src # 其餘命令能夠管道鏈接到grep命令進行結果篩選 ls -R ./src | grep ".test"
# 列出src目錄下的全部文件 find ./src # 列出src目錄下文件名爲index.js的文件 find ./src -name index.js # 經過正則過濾 find ./src | grep 'scss'
# 基本的文件複製 cp a.txt ./test/a.txt # 複製目錄時需加-R參數 cp -R ./src ../test/src # 大多時候不須要文件copy,軟鏈也是一種選擇,能用軟鏈就用軟鏈,開銷小 ln -s ./bin/run.js ~/.bin/run.js # 移動一個文件 mv abc.txt ~/test/abc.txt
# 將本地文件同步到遠程機器,相對於cp命令,就多了一個ip而已 scp ./conf/nginx.conf 10.9.188.2:/opt/nginx/conf # 反之從遠程向本地同步亦可 10.9.188.2:/opt/nginx/conf/nginx.conf ./conf # 須要ssh登陸時,請加上用戶名 scp ./conf/nginx.conf user@10.9.188.2:/opt/nginx/conf # scp只能同步普通文件,rsync能同步文件夾,並且是增量同步 # -a表示保持文件的屬性不變,-v顯示進度信息,-z傳輸中進行壓縮 rsync -avz logs/ 10.9.166.19:/data/users/liwei/logs # rsync一樣支持方向同步 rsync -avz 10.9.166.19:/data/users/liwei/logs ./logs
# 查出全部在內存中的進程,結果顯示可看到到pid,用戶,啓動命令等信息,grep用做篩選 ps aux | grep node # 殺進程 kill pid # 強殺進程 kill -9 pid
# -a顯示全部選項,-p顯示創建相關連接的程序名 # 顯示出程序名以後就可以使用前面的方法找到pid netstat -ap | grep 9000
# -X 可設置請求方法,GET POST PUT DELTE ...,-i能打印返回頭 curl 'http://cn.bing.com' -X GET -i # -H 可設置請求頭 curl 'http://cn.bing.com/' -H 'Customer-Header: helo' # -d 可設置請求body curl 'http://cn.bing.com/' -d 'a=1&b=2'
# -c代表抓多少個包就中止,能夠缺省 # -i指定網絡設備 # host 指定ip地址 # port 指定端口 # src|dst 限定host、port是源地址仍是目標地址 # 能夠經過邏輯運算符連接 and or not # -w 能夠把抓包結果寫到文件 sudo tcpdump -c100 -i eth0 dst host 10.9.96.32 -w test.cap
對於http請求,tcpdump的可讀性比較差。能夠將抓包結果寫到文件後,下載到本地用wireshark查看,一目瞭然。nginx