最新的Linux命令大全

自助命令:ls –help?? man ls? info ls

文件屬性:ls -al??顯示當前目錄下文件/目錄擁有者,所屬組,其他人的寫讀執行權限 ?文件或目錄下屬文件數?擁有者?群組?內容大小(byte)?最后修改日期?文件/目錄名??注意:對于目錄,如何沒有x權限,則進不去目錄?【顯示別的目錄下的文件:ls -al /,表示顯示根目錄下的文件?】

改變組權限:chgrp eg>chgrp users -R test.txt? 【-R表示遞歸持續更新,users組應在/etc/group里存在】

改變擁有者:chown?eg>chown [-R]?賬號名[:組名] 文件或目錄??【賬號名在/etc/passwd里,cp復制命令會將文件或目錄的屬性權限一起復制,這時就需要更改權限】

改變文件權限:chmod?eg>chmod [-R] 777?文件或目錄,或者chmod u=rwx,go=rx?文件或目錄,或者chmod a+w【rwx分別對應數字421,a+w表示對所有人提供讀權限】

新建目錄:mkdir?【-p建立多層目錄,-m修改目錄屬性eg:mkdir -m 755 test】

新建空白文件:touch【新建隱藏文件,在文件名前加.】【修改文件日期eg touch -d “2 days ago”?文件名。或者touch -t 201706091111?文件名】

刪除文件:?rm?【如果文件名前有-,則刪除應該用rm ./test】

刪除目錄:rmdir?[-p] 【刪除空目錄,要刪除有內容的目錄:rm -r】

移動文件:mv?【常作更名】

復制文件或目錄:cp?【-s 復制為快捷方式,-p?常做備份復制屬性,而非默認屬性,-a 復制所有屬性,-u?當兩文件不同時才復制】

當前目錄:.?或者./?【在執行shell腳本時,通常用./run.sh 其實是指定該目錄下的run文件】

上一層目錄:..?或者../

前一個工作目錄:

當前用戶的家目錄:~?【~root,表示該賬號的家目錄】

顯示當前目錄:pwd?【對于鏈接文件,采用pwd -P,可以定位實際目錄結構】

得到路徑的文件名:basename?文件路徑

得到路徑的目錄名:dirname?目錄路徑

查看文件內容:

  cat:從第一行開始顯示?-n顯示行號包括空白行,-b 顯示不包括空白行行號

  tac:從最后一行開始顯示

  nl:顯示時輸出行號,不顯示空白行行號,-b可以顯示空白行行號,【nl可以對行號進行設計eg:nl -b a     -n rz -w 3 test,行號顯示為001,002…】

  more:一頁一頁顯示?空格鍵下翻一頁,enter鍵下翻一行,/要搜索的字符串,q退出顯示,b往上翻頁,:f顯示文件名及顯示的行數

  less:一頁一頁顯示并可往前翻頁?pageup上翻頁,pagedown下翻頁,空格鍵下翻頁,/字符串?向下查找,?字符串 向上查找,n查找下一個,N反向查找下一個,g到第一行,G到最后一行,q退出less

  head:只看頭幾行?-n接數字,表示顯示幾行

  tail:只看末尾幾行?常用在查看不斷更新的日志,-n接數字,表示顯示幾行,-f持續顯示,按Ctrl+c停止

  od:以二進制形式讀取?讀取數據格式的文件或二進制文件,-t后面接數據類型【a 默認字符輸出,c 用ASCII輸出,d 十進制,o 八進制,x 十六進制,f 浮點數】

?  eg顯示test文件的第11行到20行

    head -n 20 test | tail -n 10?【|管線:前面的輸出要經過后面的命令才顯示】?eg echo pwd | od -t oCc,將pwd以八進制的ASCII碼輸出

文件種類:

  -:普通文件:通過cat讀取文件,但數據格式文件(如一些登錄日志文件),應該用last去讀

  d:目錄

  l:快捷鍵

  設備與裝置文件

    b:區塊設備(如硬盤)

    c:字符設備(如鍵盤鼠標)

  s:資料接口文件

  p:數據輸送文件 

文件擴展名:

  .sh shell腳本語言

  .Z,.tar,.tar.gz,.zip,.tgz?壓縮文件

文件與目錄的默認權限:

  umask:查看當前用戶新建文件或目錄時權限,如0022?對應為u=rwx g=rx o-rx?【nmask -S將得到這種結果】,對于新建文件對應的默認權限為?-rw-r–r–【文件默認拿掉x權限,然后當前用戶查到的默認權限為022,即組和其他人拿掉為2的讀權限】,對于新建目錄,對應的默認權限是drwxr-xr-x【目錄默認有x權限,同樣拿掉了為2的讀權限】

文件或目錄的隱藏屬性:

  chattr: +/-a?? +/-i?【+i可以讓一個文件不被更改,只能root用戶能設定,+a讓文件只能增加內容,不能更改原有內容】

  lsattr:顯示文件或目錄的隱藏屬性

查看文件類型:file?文件名

指令和文件搜索命令:

  which:搜索命令位置

  whereis:找特定目錄下的文件,-l?列出可以查找的目錄,-b找二進制文件

  locate:利用linux內建數據庫查找?-i:忽略大小寫,-c輸出找到文件數量,-l輸出幾行,如-l 5,-r接正則表達式【locate查找的為/var/lib/mlocate】

  find:直接搜索硬盤【很慢】,可以用*通配符,find?[路徑] [操作]?[狀態] eg ?find / -mtime 0?【找當天內更改過的文件】 find / -mtime +1?【找大于等于一天前的更改過的文件】 find / -mtime?-1【找小于等于1天前的更改過的文件】,find?/home -user?用戶名?【找某個路徑下某位用戶的文件】find -size [+/-]?大小【找符合大小的文件】,find -name analysisTeleInfo -exec ls -l {} ;【加了額外動作的find,find -name analysisTeleInfo會輸出該文件所在的路徑,然后exec?以ls -l(不支持別名)執行該路徑】

eg:有兩位開發人員,在不同的群組,現在要一起開發一個項目,要求該項目內的人員都有開發權,但其他人不能進入查閱

  首先新增群組:groupadd project

  將這兩位開發人員加入該群組:useradd -G project name1? useradd -G project name2

  建立項目的開發環境:mkdir /svn/ahome

  更改該環境所在的群組:chgrp project /svn/ahome

  更改所在環境的權限:chmod 770 /svn/ahome??【錯誤:因為即使這樣分配權限,當name1進入工作目錄,新建的文件是以自己所在組的,不是項目所在組,顧,權限應該為2770,即給予工作目錄SGID權限,這樣,name1和name2新建的文件都是以所在工作組為組名的,具有共同開發的權限。補充SUID,表示該文件在被另一個擁有執行權但不能訪問的人在訪問時,可以暫時擁有該文件擁有者的權限】

linux文件系統類型:EXT2,是一種索引式文件系統,window現在基本為NTFS

linux壓縮命令:

  *.Z?compress程序壓縮

  *.zip?zip程序壓縮

  *.gz gzip程序壓縮(常用)

    壓縮后源文件會被刪除,如果原文件是文本文件,可用zcat/zmore/zless讀取,解壓縮:gzip -d?*.gz,搜索壓縮文件中的關鍵字字符串:zgrep -n ‘String’?*.gz,-c?輸出壓縮數據到屏幕

  *.bz2 bzip2程序壓縮(常用,是gzip的升級,-k?保留源文件)

  *.xz xz程序壓縮(常用,-k?保留源文件),可以查看壓縮文件壓縮前后的容量,

  *.tar tar程序打包,并沒有壓縮(常用)

    壓縮:tar -jpcv -f filename.tar.bz2?文件/目錄

    查詢:tar -jtv -f filename.tar.bz2

    解壓縮:tar -jxv -f filename.tar.bz2?[-C?解壓縮目錄]

  *.tar.gz?tar程序打包,經過gzip壓縮

  *.tar.bz2?tar程序打包,經過bzip2壓縮

  *.tar.xz tar程序打包,經過xz壓縮

?eg:備份某時間后更新的數據

?  ?tar -jcv -f ./filename.tar.bz2 . –newer-mtime=’2017/06/13′ .?表示打包并壓縮當前目錄下20170613000000時間后更改的文件成filename.tar.bz2文件

  備份時不希望備份某個文件或目錄,用–exclude=目錄(可用通配符*)

  備份工具:dd if=’input_file’ of=’output_file’ bs=’block_size’ count=’number’,eg:dd if=/test of=/test2.back

  備份工具:cpio -ovcB > file/device?備份

       cpio -ivcdu?

       cpio -ivct?


vi 編輯器:

  使用vi新建或打開一個文件:vi filename??【有可能vi要帶上絕對路徑,如user/vi filename】

  進入編輯模式:按i /o /a等

  退出編輯:esc

  保存文件:wq 【強制保存:wq!】,不保存:q

  vi打開文件常用操作:hjkl分別代表上下左右鍵,也可以用方向鍵,配合數字,可以一次移動多行或多列光標eg 3+k往左移三位,PgDn下移一頁,PgUp上移一頁,0/home移動到該列的第一列,$/end移動到最后一列,gg移動到文件第一行,G移動到文件最后一行,/字符串 向下查找字符串,?字符串 向上查找字符串,帶上n表示一直查找,N反向查找,:1,$s/字符串1/字符串2/g?全文替換字符串1為字符串2,:1,$s/字符串1/字符串2/gc?全文詢問替換,:n1,n2s/字符串1/字符串2/g??替換你行到n2行之間的字符串,X?刪除光標前的字符,?x刪除光標后的字符,nx?連續刪除多個字符,dd刪除整行,ndd光標往下刪n行,yy復制光標所在行,nyy復制光標往下多行,p將復制的數據在光標下一行粘貼,P在上一行粘貼,u?重復前一個動作,Ctrl+r?重做前一個動作,.?重復前一個動作

  vi進入編輯常用操作:i /I定位在當前光標處/該行口頭,r/R?進入替換模式,r替換光標處字符一次,R替換多次

  vi編輯完離開常用操作::w寫入文件,:q離開(有更改時,離不開),:q!強制離開,:wq存完離開,ZZ未改動直接離開,改動保存離開,:w filename?另存為filename,:r filename?將filename里的數據追加到光標后面,:n1,n2 w filename?將n1行到n2行存儲到filename,:set nu?顯示行號,:set nonu?取消行號

查看當前vi是否是vim:alias?會出現alias?vi=‘vim’,?【命令別名:alias,取消別名 unalias

  vi單個選擇和區塊選擇:用vi打開文件后,v字符選擇,V行選擇,ctrl+v區塊選擇,可以結合上下左右完成選擇,y復制選擇,p粘貼選擇,d刪除選擇

  vi多文件編輯:vi test.txt test2.txt?同時打開多個文件,將test.txt中復制4行(4yy),然后:n,回車,編輯test2.txt,p粘貼,:file查看當前vi打開的文件,:n編輯下一個文件,:N編輯上一個文件

  vi多窗口查看:gg到文件第一行,然后:sp,G到文件最后一行,此時的文件會顯示上下兩個窗口,上面是文件末尾數據,下面是文件開頭數據,:sp filename?表示當前窗口加一個filename窗口,Ctrl+w+↑進入上一個窗口

  vi自動補全功能:ctrl+x? + ctrl+n?選取當前文件中的字符串作為提示信息

          ctrl+x? + ctrl+f?以當前文件名為提示信息

          ctrl+x? + ctrl+o?以該文件的擴展名的語法作提示信息?如html.html文件,style=“b” 按ctrl+x? + ctrl+o會出現很多提示信息

  vi中環境設置:可以新建?~/.vimrc環境設置文件,set backspace=2 “用退格鍵刪除,set autoindent?自動縮排,set nu?顯示行號,syntax?on語法檢查顏色顯示

  中文編碼問題:1,linux默認語系,2,文件編碼,3,啟動的終端接口 要統一

  window和linux下回車換行符的問題:window是?nr(換行回車)結束一行,linux是n結束一行,所以,window轉linux時,回車r可能會顯示為^M符號,linux轉window時,顯示為一行,需要用dos2nuix?或者nuix2dos轉換下


bash:Bourne Again SHell簡稱bash。

  bash?shell:1.命令存儲功能,可以上下翻看已輸入的命令

        2.安裝bash-completion可在使用tab鍵時進行選項/參數補齊

        3.命令別名設置 alias lm=’ls -al’

        4.前臺后臺命令設置

?       ? 5.shell?scripts?程序化腳本

        6.通配符?eg ls -l /usr/bin/X*

查詢指令是否為bash?shell內建指令:type?ls?不是,?type cd?是

指令換行?/enter 

快速編輯指令:ctrl+u?光標處向前刪除整個指令串??ctrl+k向后刪除,ctrl+a光標到指令串開頭,ctrl+e光標到指令串結尾

shell?變量:

  變量設定與修改?name=Myname

    規定:=兩邊不能有空格,內容中不能有空格【可用“可以存變量”,‘不能存變量,以字符形式顯示’】,變量名不能以數字開頭。

    用法:用跳脫字符/表示特殊字符如?$,`?,空格,用反單引號包含內容中的指令?eg?name=`ls -l` echo $name,變量內容增加:”$name”直接接新加內容,或者${name}直接接新加內容,將該變量作為環境變量:export?name,取消該變量:unset name

    eg:個性化工作目錄

   ? ?將自己常用的工作目錄設為變量work:work=”servser/analysis”,然后在~/.bashrc文件中添加個性化設置:work=”servser/analysis”???export?work?,下次登錄系統,可以用?cd $work?直接進入工作目錄

  變量的取用echo?$name??或者?${name}

  環境變量:nuv?或?export?查看所有環境變量

       set?查看所有的環境變量和自定義變量

    生成0~9間的隨機數:declare -i number=$RANDOM*10/32768; echo $number

    變量,只與上一個命令有關,上一個命令執行成功,則echo $? 輸出0,否則輸出錯誤碼

    locale??查看linux下默認語系,-a?查看linux下支持的語系

    變量的讀取與申明:

      read 變量??將用戶輸入的內容作為該變量的內容,?-p?接提示字符,-t?接等待時間秒數

      declare?或?typeset?列出所有的變量和內容

        declare?-a?變量?定義變量為數組類型,-i?變量?為整數類型,-x?將變量改為環境變量,-r?設定變量為只讀,且不能unset,+x為取消環境變量設置,數組設定:var[index]=content

ulimit?限制文件和程序

  ulimit?[-SHacdfltu] 配額【單位為k】,-a?查看當前用戶的限制情況

歷史命令:history?列出當前內存中所有的命令歷史,接n?查最近n個命令,?-c?清除歷史命令,-w?更新記錄文件

?  !number?執行第number個指令,!!執行上一個指令,!al?執行以al開頭的最近的指令

linux的開機歡飲界面設定:cat /etc/issue,開機提示信息:/etc/motd文件

讀入環境配置文件:source?配置文件名?或者?.?文件名

終端機的環境設定:linux下的文字接口終端機即tty1~tty6

  stty:-a?列出所有的setting?tty?內容,intr?中斷,quit退出,erase向后刪除,kill刪除指令Ctrl+u,eof?結束輸入,start?重新啟動程序的outputCtrl+q,stop?停止屏幕輸出Ctrl+s,susp給一個定時停止,可以結合按鍵更改這些終端命令。

  set:設定終端機輸入輸出環境,set -u?使用未定義的變量時,顯示錯誤消息

通匹配和特殊符號:

  * 0到多個字符

  ??一定有一個

  [abcd]?abcd任一個

  [0-9] 0-9之間任意一個

  [^abc]?非abc的任一個

  #?批注符號

  ?跳脫符號,將特殊字符或通匹符還原成一般字符

  |?管線

  ;?連續指令分割符

  ~?用戶家目錄

  $?取變量

  &?工作控制符,將指令變成在后臺工作

  !?邏輯運算中的非

  /?目錄符號

  >?,>> 數據流重導向,表示取代,累加

  <,

  ‘ ’ 單引號,不具有變量置換功能

  “ ” 雙引號,具有變量置換功能

  ` ` 反引號,可以執行指令

  ( ) 中間為shell的開始于結束

  { }?命令區塊

數據流重導向:把應該出現在屏幕上的數據重導向到其他位置

  分為:標準輸入? ,>>,標準錯誤輸出:2>,2>>

  linux?下的垃圾回收站:/dev/null?導入此文件的數據將被自動清除

  2>&1?或者?&>!?將正確的輸出和錯誤輸出同時導向到一個文件

  數據寫入:eg?cat > test

    鍵盤寫入123,按ctrl+d結束寫入,然后cat?test有剛才輸入的內容

    cat?> test?

    eg:?將echo?“message” 作為標準錯誤輸出

      echo “message” 2>/dev/null 1>&2

強制將緩存區數據更新到磁盤:sync

命令執行判斷:;,&&,||

  ;?eg?sync;shutdown?-h now?關機前強制同步數據

  命令1?&&?命令2?前面正確執行($?=0),后面才執行。

  命令1 || 命令2 前面執行正確,2不執行,前面錯誤,執行2

  eg:命令1?&&?命令2?||?命令3?常作為判斷用,即命令1成功執行命令2,否則執行命令3

管線命令:

  eg:ls -al /etc | less?將管線前的輸出(錯誤的輸出不處理)作為管線后命令的輸入

  截取命令:cutgrep? (以行為單位)

    eg:echo $PATH | cut -d “:” -f 5?取path變量中以:分割的第五個,取多個,-f 3,5

      export | cut -c 12-?取export打印出的變量中第12個字符后的內容

      last | cut -d ” ” -f 1?取最近登錄情況中的用戶名

    eg:grep [-acinv]?[–color=auto]?‘要搜索的字符串’?filename

      -a?將二進制文件以text文件的方式搜索,-c?計算搜索到的次數,-i?忽略大小寫,-n?顯示行號,-v?反向搜索,–color=auto加顏色顯示

排序命令:sortwcuniq

  sort:-f?忽略大小寫,-b?忽略前面的空格,-M?以月份排序,-n?以數字排序,-r?反向排序,-u?排序后相同的數據中只出現一行,-t?分隔符,-k?以哪個區間來排序

  uniq:去重,-i?忽略大小寫,-c?計數

  wc:-l??顯示文件列數,-w?顯示字數,-m?顯示字符數?直接wc?依次顯示這三個

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享