Linux常用命令詳解

来源:http://www.cnblogs.com/x-jingxin/archive/2017/06/19/6958361.html
-Advertisement-
Play Games

自助命令:ls --help man ls info ls 文件屬性:ls -al 顯示當前目錄下文件/目錄擁有者,所屬組,其他人的寫讀執行許可權 文件或目錄下屬文件數 擁有者 群組 內容大小(byte) 最後修改日期 文件/目錄名 註意:對於目錄,如何沒有x許可權,則進不去目錄 【顯示別的目錄下的文件 ...


自助命令: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 < file/device 還原

       cpio -ivct < file/device 查看


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是 \n\r(換行回車)結束一行,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 << "return"  輸入到return時自動結束輸入

    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 依次顯示這三個

 雙向重導向:tee

  

  

  

      

  

    

  

 

 

  

    

  

  

  

     

 

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.掛載iOS鏡像(先打開VM 選擇虛擬機————>設置——>CD ————>使用ISO鏡像文件 用瀏覽打開) 2.開始界面選擇 3出現下麵的界面 這是提示你是否掃描文件的完整性 我們一般在這裡選擇skip (這裡用方向鍵選擇 回車確定 ) 4.這裡是一個歡迎界面 直接next 5.本次安裝使用中文 ...
  • 1.安裝web環境,使用LNMP一鍵安裝包具體安裝步驟參考https://lnmp.org/install.html 2.安裝完成後,安裝LNMP缺少的組件ionCube組件安裝進入lnmp解壓後的目錄,執行:./addons.sh install ionCube 回車確認後就會自動安裝ionCub ...
  • 昨天遇到一個很奇怪的事情,有一臺伺服器在使用su - root命令切換到root賬號時,老是報密碼不正確。但是root密碼完全是正確的,而且可以使用賬號密碼直接ssh登錄伺服器。很是納悶,如下所示: [oracle@DB-Server ~]$ more /etc/redhat-release Red... ...
  • 傳說:所有在“<>”里的東西都是要被替換的,例如:<文件名> > iLovePeanuts.txt 命令行里不要包含“=”號 “..”代表一條命令行可以作用於不止一個文件,例如:rm file.txt file2.txt movie.mov .. .. 基本命令行 CTRL L = 清空終端 CTR ...
  • 在進程列表的下麵,有個show processes in all sessions(顯示所有用戶的進程(U)),把它勾上就能看到了 ,就是這麼簡單。 ...
  • 1.linux的目錄結構 bin:(binaries)存放二進位可執行文件 sbin(super user binaries)存放二進位可執行文件 etc:(etcetera)存放系統配置文件 usr(unix shared resources)用於存放共用的系統資源 home存放用戶文件的根目錄 ...
  • centos源更換為,163或者阿裡的。 1、首先備份 mv /etc/yum.repos.d/Centos Base.repo /etc/yum.repos.d/Centos Base.repo.backup 2、下載repo文件到目錄下 cd /etc/yum.repos.d wget http ...
  • 編譯windows下chromium,時間:20170619, 官方地址:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md 一. 系統要求: 1. 64位機器,至少8G ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...