Linux常用命令總結

命令使用求助[1]

命令名 --help

查看命令的使用方法。
如:date --help

管道操作[2]

-|

管道,配合其他命令使用。將上一條命令的輸出作為下一條命令的輸入。
如:ps -ef | grep java

信息分析處理[3]

#awk  #sed  #grep  #wc  #echo  #cut  #sort

  • awk:文本分析工具。awk 會把每行進行一個拆分,用相應的命令對拆分出來的“段”進行處理。
  1. 行工作模式,讀入文件的每一行,會把一行的內(nèi)容,存到$0里
  2. 使用內(nèi)置的變量FS(段的分隔符,默認用的是空白字符),分割這一行,把分割出來的每個段存到相應的變量$(1-100)
  3. 輸出的時候按照內(nèi)置變量OFS(out FS),輸出
  4. 讀入下一行繼續(xù)操作

語法:awk ‘匹配模式+行為’ filename
示例:
provins=($(awk '{print $2}' provinsInfo.txt)) 將文本provinsInfo.txt中每行按空格分隔后的第2個(從1開始)。字符串放入數(shù)組provins中。
echo "String:number" | awk -F':' ‘{print $2}’ 將字符串"String:number"按‘:’進行分隔,并取第2部分。

  • sed:文本處理工具,配合不同的參數(shù)執(zhí)行刪除、修改、獲取等操作。

語法:sed -參數(shù) '行為'
示例:
sed -i ‘/linux/d’ log.txt 直接在log.txt文件中刪除包含linux的行
sed ‘$d’ log.txt 刪除log.txt文件的最后一行
sed -n ‘3p’ log.txt 打印log.txt文件中的第3行

  • grep:文本的條件篩選工具
    語法:cat filename | grep '篩選條件'
    示例:
    cat xferlog | grep ‘20170915’ 篩選出文件xferlog中包含字符‘20170915’的記錄(行)。
    grep -v 篩選出不包含篩選條件的記錄(行)。
    grep -c 輸出匹配行的條數(shù)
    grep -n 輸出匹配行所在的行號
    cat xferlog | egrep ‘20170915|20170916’ 篩選出文件xferlog中包含字符‘20170915’或‘20170916’的記錄(行)。

  • wc:文本信息統(tǒng)計工具
    語法:wc filename
        -l:列出文本行數(shù)
        -w:列出文本字數(shù)(英文單字)
        -m:列出字符數(shù)
    示例:
    wc -l config.txt 顯示config文件的行數(shù)。(其他寫法:grep -n “” 文件名)
    wc config.txt 顯示結果為:n1 n2 n3 config.txt  n1為文本行數(shù),n2為文本字數(shù),n3為文本字符數(shù)

  • echo:文本打印或控制臺輸出

語法: echo XXX
示例:
echo “${username}=vike” 在控制臺打印。
echo -n "first line" 不打印換行符,后續(xù)內(nèi)容將與“first line”同行顯示

  • cut:按條件截取字符串

語法:cat filename | cut -b n-m 截取文件的第n-m行字符
   echo String | cut -d '分隔符' n 根據(jù)自定義分隔符截取第n段
示例:
cat config.txt | cut -b 2-8 截取config.txt文件中的2-8行。
echo config | cut -b 3 截取config字符串的第三個字符。

  • sort:將文本內(nèi)容按ASCII碼值進行排序,升序打印。

語法:sort filename
示例:
sort config.txt 以文件的各行為單位,按ASCII碼排序打印輸出,原文本未做修改。

系統(tǒng)信息查詢[4]

#du (disk usage)  #df  #stat

作用:顯示目錄(或文件)所占磁盤空間的大小。
示例:
du -ah --max-depth=1 查看目錄下的所有文件的大小,以K、M、G的單位顯示。
-a 表示目錄中每個文件顯示各自磁盤使用情況
-h 以K,M,G為單位,提高信息的可讀性。
--max-depth=n 表示只深入到第n層目錄,此處設置為1,即表示只深入到第一層子目錄

df -h 顯示磁盤分區(qū)上的可使用的磁盤空間。默認顯示單位為KB。

stat -c 格式代碼 文件名 獲取關于文件的額外信息,包括文件系統(tǒng)和文件。

用戶及權限操作[5]

#chmod #chown  #passwd

  • chmod:修改文件(夾)權限

語法:chmod mode file
其中mode是指:owner+[rwx]
  owner: u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
  此外mode也可以是數(shù)字:r=4,w=2,x=1。

示例:
  chmod ugo+r file.txt 將文件 file.txt 設為所有人添加讀取的權限。
  chmod 777 file.txt 將文件file.txt 設為所有人皆可讀可寫可執(zhí)行。

  • chown:修改文件(夾)所屬的用戶或用戶組

語法:chown own:group file
  其中own指文件所屬用戶,group指文件所屬的群組

示例:
  chown root: file.txt 改變文件file.txt的擁有者和群組
  chown :aiusr file.txt 改變文件file.txt的組群

  • passwd:修改系統(tǒng)用戶的密碼

語法:passwd username
  回車后再依次輸入舊密碼和兩遍新密碼即可修改完成
  (先登錄root,獲得root權限) passwd aiusr :修改用戶aiusr的密碼。

文件操作[6]

#mkdir  #cd  #cp  #scp  #mv  #rm  #touch  #cat  #head  #tail  #vi

  • mkdir:創(chuàng)建文件夾

語法:mkdir [mode] dirname

示例:
  mkdir 760 data 創(chuàng)建名為data的文件夾,權限為創(chuàng)建者可讀可寫可執(zhí)行,同組的可讀可寫,普通用戶無任何權限。

  • cd:進入某個路徑下的文件夾

語法: cd filepath

示例:
  cd /home/data 進入目錄/home/data

  • cp:復制文件

語法:cp filepath1/filename1 filepath2/filename2

示例:
  cp /home/data/1.txt /home/data/backup/2.txt 復制/home/data/目錄下的文件1.txt到目錄/home/data/backup/下,命名為2.txt。

  • scp:復制文件至遠程服務器

語法:scp filepath1/filename1 remote_username@remote_ip:filepath2/filename2

示例:
  scp home/vike/data/1.txt universal@192.168.1.246:/home/zw/data/1.txt 復制當前主機下/home/data/目錄下的文件1.txt到遠程主機universal(ip:192.168.1.246)的/home/zw/data/目錄下。

  • mv:移動文件(重命名文件)

語法:mv filepath1/filename1 filepath2/filename2

示例:
  mv /home/data/1.txt /home/data/backup/2.txt 移動/home/data/目錄下的文件1.txt到目錄/home/data/backup/下,命名為2.txt。
  mv /home/data/1.txt /home/data/2.txt 將/home/data/目錄下的文件1.txt重命名為2.txt。

  • rm:刪除文件

語法:rm filepath/filename

示例:
  rm /home/data/1.txt 刪除/home/data/目錄下的文件1.txt
    -f 強制刪除文件或者文件夾,不提示
    -r 遞歸處理,將目錄下的文件及其子文件夾全部刪除
    -i 刪除文件或目錄前先詢問用戶(輸入y或n后再進行操作)

  • touch:創(chuàng)建文件

語法:touch filepath/filename

示例:
  touch /home/data/2.txt 在/home/data/目錄下創(chuàng)建文件2.txt

  • cat:打開文件

語法:cat filepath/filename

示例:
  cat /home/data/1.txt 打開/home/data/目錄下的文件1.txt
  cat -n filename 打開文件,并顯示行號。

  • head,tail:查看文件前/后n行(不填寫參數(shù)時默認顯示10行)

語法:head [-n] filepath/filename
   tail [-n] filepath/filename

示例:
  head /home/data/1.txt 打印/home/data/目錄下文件1.txt的前10行
  tail -50 /home/data/1.txt 打印/home/data/目錄下文件1.txt的后50行

  • vi,vim:編輯文件(打開文件后--i(輸入),:q!(退出),:wq(保存退出))

語法:vi filepath/filename

示例:
  vi /home/data/1.txt 編輯/home/data/目錄下的文件1.txt

搜索[7]

#find #locate #whereis

進程[8]

  • ps -ef  查看進程
  • crontab -l  查看當前定時任務
  • crontab -e  編輯當前定時任務
    crontab格式
命令行

* :所有取值  / :每  X-Y:從X連續(xù)到Y  X,Y:離散的X和Y

停止運行[9]

  • 篩選出需要的腳本,獲取進程ID

ps -ef | grep '腳本名'

  • 強行終止腳本

kill -9 進程ID

其他[10]

整數(shù)比較:
    -eq 等于,如:if [ "a" -eq "b" ]
    -ne 不等于,如:if [ "a" -ne "b" ]
    -gt 大于,如:if [ "a" -gt "b" ]
    -ge 大于等于,如:if [ "a" -ge "b" ]
    -lt 小于,如:if [ "a" -lt "b" ]
    -le 小于等于,如:if [ "a" -le "b" ]
    < 小于(需要雙括號),如:(("a" < "b"))
    <= 小于等于(需要雙括號),如:(("a" <= "b"))
    > 大于(需要雙括號),如:(("a" > "b"))
    >= 大于等于(需要雙括號),如:(("a" >= "b"))

字符串比較:
    = 等于,如:if [ "a" = "b" ]
    == 等于,如:if [ "a" == "b" ], 與=等價
  注意:==的功能在[[]]和[]中的行為是不同的,如下:
    1 [[ a == z* ]] # 如果a以"z"開頭(模式匹配)那么將為true
     2 [[ a == "z*" ]] # 如果a等于z(字符匹配),那么結果為true
    3 [ a == z* ] # File globbing 和word splitting將會發(fā)生     4 [ "a" == "z
" ] # 如果$a等于z*(字符匹配),那么結果為true

!= 不等于,如:if [ "a" != "b" ], 這個操作符將在[[]]結構中使用模式匹配.
    < 小于,在ASCII字母順序下.如:
   if [[ "a" < "b" ]]
   if [ "a" \< "b" ] 在[]結構中"<"需要被轉義.
    > 大于,在ASCII字母順序下.如:
       if [[ "a" > "b" ]]
       if [ "a" \> "b" ] 在[]結構中">"需要被轉義.
    -z 字符串為"null".就是長度為0.
    -n 字符串不為"null"

假設有變量 var=http://www.aaa.com/123.htm.

  1. # 號截取,刪除左邊字符,保留右邊字符。

echo ${var#*//}

其中 var 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符

即刪除 http://,結果是 :www.aaa.com/123.htm

  1. ## 號截取,刪除左邊字符,保留右邊字符。

echo ${var##*/}

##*/ 表示從左邊開始刪除最后(最右邊)一個 / 號及左邊的所有字符

即刪除 http://www.aaa.com/,結果是 123.htm

  1. %號截取,刪除右邊字符,保留左邊字符

echo ${var%/*}

%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符

結果是:http://www.aaa.com

  1. %% 號截取,刪除右邊字符,保留左邊字符

echo ${var%%/*}

%%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符

結果是:http:

  1. 從左邊第幾個字符開始,及字符的個數(shù)

echo ${var:0:5}

其中的 0 表示左邊第一個字符開始,5 表示字符的總個數(shù)。

結果是:http:

  1. 從左邊第幾個字符開始,一直到結束。

echo ${var:7}

其中的 7 表示左邊第8個字符開始,一直到結束。

結果是 :www.aaa.com/123.htm

  1. 從右邊第幾個字符開始,及字符的個數(shù)

echo ${var:0-7:3}

其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數(shù)。

結果是:123

  1. 從右邊第幾個字符開始,一直到結束。

echo ${var:0-7}

表示從右邊第七個字符開始,一直到結束。

結果是:123.htm

注:(左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示)

目錄


  1. 命令使用求助 ?

  2. 管道操作 ?

  3. 信息分析處理 ?

  4. 系統(tǒng)信息查詢 ?

  5. 用戶及權限操作 ?

  6. 文件操作 ?

  7. 搜索 ?

  8. 進程 ?

  9. 停止運行 ?

  10. 其他(字符處理) ?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容