wordpress centos php mysql apache 开源 Android java Python Ubuntu shell 程序员 编程 云计算 微软 linux Windows Firefox google nginx

Linux | 常用命令(一)

一.文件處理命令
1.命令格式與目錄處理命令
   ls –a【查看隱藏文件】
   ls –l【查看文件信息長格式顯示】
   ls –d【查看指定目錄的詳細信息】
   ls –h【顯示容量大小】
   ls –i【查看任何文件的I 節點】
   ll 文件名【查看一個文件的詳細信息】
2.目錄處理命令
    mkdir –p【遞歸創建目錄】
    cd【切換指定目錄】
    pwd【顯示當前目錄】
    rmdir【刪除空目錄】
    cp【復制文件到某個目錄下】
    cp –r【復制目錄】
    cp –p【保留文件屬性】
    mv【剪切文件、改名】
    rm【刪除文件】
    rm –r【刪除目錄】
    rm –f【強制執行】
3.文件處理命令
    touch【創建空文件】
    cat【查看文件內容】
    cat –n【顯示行號】
    tac【顯示文件內容(反向列示)】
    more【分頁顯示文件內容(空格或f[翻頁], Enter[換行], q或Q[退出])】
    less【分頁顯示文件內容(可向上翻頁),填寫/可搜索關鍵詞,n等於next,PageUp和PageDown】
    head【顯示文件前面幾行】
    head -n【指定行數,head –n 20 /etc/services】
    tail【顯示文件後面幾行】
    tail –n【指定行數】
    tail –f【動態顯示文件末尾內容】
4.鏈接命令
    ln【生成鏈接文件,類似拷貝,可以同步更新】
    ln –s【創建軟鏈接,相當於快捷方式】

二. 權限管理命令
1.權限管理命令

    chmod【改變文件或目錄權限,u=所有者;g=所有組;o=其他人;a=全部,[{ugoa}{+-=}{rwx}],chmod u+x,o-r或640 文件名,r—4;w—2;x—1,rwx—7(4+2+1)】
    chmod –R【遞歸修改,子目錄的權限也修改】
2.其他權限管理命令
    chown【改變文件或目錄的所有者,chown 用戶 文件或目錄】
    chgrp【改變文件或目錄的所屬組】
    umask【顯示,設置文件的缺省權限】
三. 文件搜索命令
1.文件搜索命令
   find【文件搜索,find 搜索範圍 匹配條件】
   find 搜索範圍 -name或-iname(不區分大小寫) 匹配條件【根據文件名稱搜索,匹配條件(abcd)=*bc*=ab??,*=匹配任意字符,?=匹配單個字符】
   find 搜索範圍 -size +n/-n/n(n代表文件的大小)【根據文件的大小搜索】
   find 搜索範圍 -size +163840 -a/-o -size -204800【查找(-a=大於80M小於100M的文件,-o=兩個條件滿足一個即可)】
   find 搜索範圍 -user 用戶名【根據用戶名搜索文件,搜索範圍=/home】
   find 搜索範圍 -group 所屬組名【根據所屬組名搜索文件】
   find 搜索範圍 -cmin/-amin/-mmin -5【查找5分鐘內被修改過(-cmin=文件屬性,-amin=訪問時間,-mmin=文件內容)的文件】
   find 搜索範圍 -type f/d/l【根據文件類型查找,f=文件,d=目錄,l=軟鏈接文件】
   find 搜索範圍 -inum n【根據i節點查找,n=i節點數】
   以上搜索結果命令加(find /tmp -name *aaaa*) -exec/-ok 命令(ls -l[顯示詳細信息]) {} \;【對搜索結果執行命令操作】

2.其他搜索命令
        locate -i 文件名【在文件資料庫中查找文件,-i=不區分大小寫】
        updatedb【更新文件資料庫,tmp目錄不在更新範圍內】
        which 命令(ls)【搜索命令所在目錄及別名信息】
        whereis 命令(ls)【搜索命令所在目錄及幫助文檔路徑】
        grep -i/-v mysql /root/install.log【在文件中搜索字符匹配的行並輸出,-i=不區分大小寫,-v=排除指定字串(^#=排除#帶頭的行)】

四. 幫助命令
man 命令或配置文件【獲取幫助信息】
    info 命令【獲取幫助信息,顯示和man不同】
    whatis 命令【獲取該命令的簡介信息】
    apropos 配置文件名稱【只查看配置文件的信息】
    命令 --help【獲取該命令的選項信息】
    help 內置命令【查看Shell內置命令的幫助信息】
五. 用戶管理命令
    useradd 用戶名【添加新用戶】
    passwd 用戶名【設置用戶密碼】
   who【查看登錄用戶信息,tty本地登錄,pts遠程終端】
   w【查看登錄用戶的詳細信息,全】
六. 壓縮解壓命令
    gzip 文件【壓縮文件,壓縮後的格式:.gz】
    gunzip 文件【解壓.gz的壓縮文件】
    tar -zcf temp.tar.gz temp【打包目錄,-c:打包,-v:顯示詳細信息,-f:指定文件名,-z:打包同時壓縮,temp:文件名】
    tar -zxf temp.tar.gz【解壓目錄,-x:解包,-v:顯示詳細信息,-f:指定文件名,-z:解包同時解壓,temp:文件名】
    zip -r temp.zip temp【壓縮問價或目錄,-r:壓縮目錄,temp:文件名】
    unzip temp【解壓.zip的壓縮文件,temp:文件名或目錄】
    bzip2 -k temp【壓縮文件,-k:產生壓縮文件後保留原文件,temp:文件名】
    bunzip2 -k temp【解壓文件,-k:解壓縮後保留原文件,temp:文件名】
    tar -cjf temp.tar.bz2 temp【壓縮】
    tar -xjf temp.tar.bz2【解壓】
七. 網絡命令
    write 用戶名【給在線用戶發信息,以Ctrl+D保存結束】
    wall 信息【發廣播信息】
    ping -c 4 ip地址【測試網絡連通性,-c:指定發送次數為4次】
    ifconfig eth0 192.168.0.169【查看和設置網卡信息】
    mail 用戶名【查看發送電子郵件,以Ctrl+D保存結束,help查看信息】
    last【列出目前與過去登入系統的用戶信息】
    lastlog -u 502【檢查某特定用戶上次登錄的時間】
    traceroute 網址【顯示數據包到主機間的路徑 IP等等】
    netstat -t/-u/-l/-r/-n【顯示網絡相關信息,-t:TCP協議,-u:UDP協議,-l:監聽,-r:路由,-n:顯示IP地址和端口號】
    netstat -tlun【查看本機監聽的端口】
    netstat -an【查看本機所有的網絡】
    netstat -rn【查看本機路由表】
    mount【掛載命令---詳細找百度吧】
    mount /dev/sr0 /mnt/cdrom/【掛載光盤】
    umount /dev/sr0【卸載掛載點】
八.關機重啟命令
    shutdown -h now【現在關機,-h:關機,now:現在】
    shutdown -h 20:30【定時關機,-h:關機】
    shutdown -r now【現在重啟,-r:重啟,now:現在】
    shutdown -r 20:30【定時重啟,-r:重啟】
    shutdown -c【取消前一個定時關機命令】
    init 0:關機/1:關機/2:不完全多用戶/不含NFS服務/3:完全多用戶/4:未分配/5:圖形界面/6:重啟【系統運行級別】
    cat /etc/inittab【修改系統默認運行級別】
    runlevel【查詢系統運行級別,默認是N 3,N:代表上一次的系統級別】
    logout【退出登錄命令——註意一定記得退出登錄】

九.文本編輯器常用命令
1).vim常用操作
vim 文件名【進入或新建--進入命令模式】
        i/a/o【進入插入模式,a:在光標所在字符後插入,A:在光標所在行尾插入,i:在光標所在字符前插入,I:在光標所在行行首插入,o:在光標下插入新行,O:在光標上插入新行】
        
        :set nu【添加行號】
        :set nonu【取消行號】
        gg【到第一行】
        G【到最後一行】
        nG【到第n行】
        :n【到第n行--------推薦】
        $【移至行尾】
        0【移至行首】
        
        x【刪除光標所在處字符-----------推薦】
        nx【刪除光標所在處後n個字符】
        dd【刪除光標所在行,ndd刪除n行--------推薦】
        dG【刪除光標所在行到文件末尾內容】
        D【刪除光標所在處到行尾內容】
        :n,nd【刪除指定範圍的行】
        
        yy【復制當前行------------推薦】
        nyy【復制當前行一下n行】
        dd【剪切當前行】
        ndd【剪切當前行以下n行】
        p/P【粘貼在當前光標所在行下(p)或行上(P)--------推薦】
        
        r【取代光標所在處字符】
        R【從光標所在處開始替換字符,按ESC結束】
        u【取消上一步操作,撤銷----------推薦】
        
        /string【搜索指定字符串,string:字符串,n:搜索指定字符串的下一個出現位置】
        :set ic【搜索時忽略大小寫】
        :set noic【取消搜索時忽略大小寫】
        :%s/old/new/g【全文替換指定字符串,冒號指全文替換,%s:全文搜索,old:要替換的字符串,new:替換的新的字符串,g:不詢問確認】
        :n,ns/old/new/c【在一定範圍內替換指定字符串,(n,ns:起始行,終止行s),c:詢問確認】
        
        :w【保存修改------推薦】
        :w /tmp/temp.txt【另存為指定文件】
        :wq【保存退出---------推薦】
        :q!【不保存退出】
        ZZ【快捷鍵,保存修改並退出】
        :wq!【保存修改並退出(文件所有者及root可使用)】
        
        按ESC【退出模式,進入命令模式】
      
2).vim使用技巧
      :r /tmp/temp.txt(被導入的文件)【把temp.txt的內容導入到光標處】
      :r !date(命令)【可以在不退出vim的情況下,執行相應的操作命令,date:系統時間命令】
      :map ^P I#<ESC>【定義快捷鍵:map,^P:按ctrl+v+p(快捷鍵按Ctrl+p),註釋該行】
      :map ^B 0x【定義快捷鍵:map,^B:按ctrl+v+b(快捷鍵按Ctrl+b),取消註釋該行】
      :1,4s/^/#//g【多行註釋,把1到4行的行首添加#】
      :1,4s/^#//g【取消多行註釋,把1到4行的行首的#去掉】
      :1,4s/^/\/\//g【多行註釋,把1到4行的行首添加//】
      :1,4s/^\/\//g【取消多行註釋,把1到4行的行首的//去掉】
      :ab mymail www.xxx@163.com【替換,在編輯時填寫mymail回車時就會被替換成郵箱】
  
      #快捷鍵或編輯模式命令 在重啟後會失效,必須在/root/.vimrc或/home/***/.vimrc目錄下才會被永久保存---註意填寫時不用填寫:了

========================================================================================================
一、軟件包管理簡介
1.軟件包分類
源碼包---腳本安裝包
   二進制包(rpm包、系統默認包)---常見
二、RPM包管理-rpm命令管理
  01.RPM包命令原則
    http-2.2.15-15.e16.CentOS.1.i686.rpm
    httpd------------軟件包名
    2.2.15-----------軟件版本
    15---------------軟件發布的次數
    e16.centos-------適合的Linux平臺
    i686-------------適合的硬件平臺
    rpm--------------rpm包擴展名
  02.RPM包依賴性
    樹形依賴:a->b->c
    環形依賴:a->b->c->a
    模塊依賴:模塊依賴查詢網站www.rpmfind.net
  03.包全名與包名
    包全名:操作的包是沒有安裝的軟件包時,使用包全名,而且要註意路徑
    包名:操作已經安裝的軟件包時,使用包名,是搜索/var/lib/rpm/中的數據庫
  04.RPM安裝
    rpm -ivh 包全名【-i:安裝,-v:顯示詳細信息,-h:顯示進度,--nodeps:不檢測依賴性】
  05.RPM包升級
    rpm -Uvh 包全名【-U:升級】
  06.卸載
    rpm -e 包名【-e:卸載,--nodeps:不檢測依賴性】
  07.查詢是否安裝
    rpm -q 包名【查詢包是否安裝,-q:查詢】
    rpm -q | grep 包名【查詢包是否安裝,-q:查詢,grep:管道符--查詢與包名相關的包】
    rpm -qa【查詢所有已經安裝的RPM包,-a:所有】
  08.查詢軟件包詳細信息
    rpm -qi 包名【-i:查詢軟件信息,-p:查詢未安裝包信息(包全名)】
  09.查詢包中文件安裝位置
    rpm -ql 包名【-l:列表,-p:查詢未安裝包信息(包全名)】
  10.查詢系統文件屬於哪個RPM包
    rpm -qf 系統文件名【-f:查詢系統文件屬於哪個軟件包】
  11.查詢軟件包的依賴性
    rpm -qR 包名【-R:查詢軟件包的依賴性,-p:查詢未安裝包信息】
  12.RPM包校驗
    rpm -V 已安裝的包名【-V:校驗指定RPM包中的文件】
    1).驗證內容中的8個信息的具體內容如下
        S:文件大小是否改變
        M:文件類型或文件的權限(rwx)是否被改變
        5:文件MD5校驗和是否改變(可以看成文件內容是否改變)
        D:設備的中,從代碼是否改變
        L:文件路徑是否改變
        U:文件屬主(所有者)是否改變
        G:文件的數組是否改變
        T:文件的修改時間是否改變
      2).文件類型
        c:配置文件
        d:普通文件
        g:"鬼"文件,很少見,就是該文件不應該被這個RPM包包含
        l:授權文件
        r:描述文件
  13.RPM包中文件提取
    rpm2cpio 包全名 | \ cpio -idv .文件絕對路徑【rpm2cpio:將rpm包轉換為cpio格式的命令,cpio:是一個標準工具,它用於創建軟件檔案文件和從檔案文件中提取文件】
    cpio 選項 <[文件設備]【-i:copy-in模式,還原,-d:還原時自動新建目錄,-v:顯示還原過程】
三、RPM包管理-yum在線管理
  01.IP地址配置和網絡yum源
    1).IP地址配置
        setup【配置網絡】
            vim /etc/sysconfig/network-script/ifcfg-eth0【進去vim編輯器模式,把ONBOOT="no"改成ONBOOT="yes"】
            service network restart【重啟網絡服務】
    2).網絡yum源
        vim /etc/yum.repos.d/CentOS-Base.repo【進入vim編輯器模式】
        [base]---------容器名稱,一定要放在[]中
        name-----------容器說明,可以自己隨便寫
        mirrorlist-----鏡像站點,這個可以註釋掉
        baseurl--------我們的yum源服務器的地址.默認是CentOS官方的yum源服務器,是可以使用的,如果你覺得慢可以改成你喜歡的yum源地址
        enabled--------此容器是否生效,如果不寫或寫出enable=1都是生效,寫成enable=0就是不生效
        gpgcheck-------如果是1是指RPM的數字證書生效,如果是0則不生效
        gpgkey---------數字證書的公鑰文件保存位置.不用修改
  02.yum命令
    1.常用yum命令
        1).查詢軟件包
            yum list【查詢所有可用軟件包列表】
            yum search 關鍵字【搜索服務器上所有和關鍵字相關的包】
        2).安裝
            yum -y install 包名【install:安裝,-y:自動回答yes】
        3).升級
            yum -y update 包名【update:升級,-y:自動回答yes==[建議別用,註意:yum -y update(升級全部,包括liunx內核也會被升級,用當機的可能,慎用!)]】
        4).卸載
            yum -y remove 包名【remove:卸載,-y:自動回答yes===[建議別用]】
        5).
    2.YUM軟件組管理命令
        yum grouplist【列出所有可用的軟件組列表】
        yum groupinstall 軟件組名【安裝指定軟件組,組名可以由grouplist查詢出來,如果軟件包名有空格用""括起來】
        yum groupremove 軟件組名【卸載指定軟件組】
  03.光盤yum源搭建
    1.光盤yum源搭建步驟
        1).掛載光盤
            mount /dev/cdrom /mnt/cdrom/
        2).讓網絡yum源文件失效
            cd /etc/yum.repos.d【進入yum源目錄】
            mv CentOS-Base.repo CentOS-Base.repo.bak【網絡yum源默認讀取.repo結尾的,現在把網絡yum源名字加上.bak,這樣網絡yum源失效,就會讓光盤yum源生效】
            mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
            mv CentOS-Vault.repo CentOS-Vault.repo.bak
            cp CentOS-Media.repo CentOS-Media.repo.bak【這個是光盤yum源,這裏備份一個】
        3).修改光盤yum源文件
            vim /etc/yum.repos.d/CentOS-Media.repo【進入vim編輯器模式,把內容更改成如下,在操作(yum list)命令查詢是否成功,註意註釋#不要亂寫】
            [c6-media]
                name=CentOS-$releasever - Media
                baseurl=file:///mnt/cdrom/
                #地址為你自己的光盤掛載地址--file:///mnt/cdrom/
                #        file:///media/CentOS/
                #        file:///media/cdrom/
                #        file:///media/cdrecorder/
                #註釋這三個不存在的地址
                gpgcheck=1
                enabled=1
                #把enable=0改成enable=1,讓這個yum源配置文件生效
                gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
四、源碼包管理
  1.源碼包和RPM包的區別
      1).區別
          安裝之前的區別:概念上的區別
          安裝之後的區別:安裝位置不同
      2).RPM包安裝位置
          是安裝在默認位置中
          RPM包默認安裝路徑
          /etc/-------------配置文件安裝目錄
          /usr/bin/---------可執行的命令安裝目錄
          /usr/lib/---------程序所使用的函數庫保存位置
          /usr/share/doc/---基本的軟件使用手冊保存位置
          /usr/share/man/---幫助文件保存位置
      3).安裝在指定位置當中,一般是/usr/local/軟件嗎/
      4).安裝位置不同帶來的影響
          >RPM包安裝的服務可以使用系統服務管理命令(service)來管理,例如RPM包安裝的apache的啟動方法是:
              /etc/rc.d/init.d/httpd start或service httpd start【開啟服務】
              service httpd stop【停止服務】
          >而源碼包安裝的服務則不能被服務管理命令管理,因為沒有安裝到默認路徑中,所以只能用絕對路徑進行服務的管理,如:
              /usr/local/apache2/bin/apachectl start
  2.源碼包安裝過程
      1).安裝準備
          安裝C語言編譯器
          下載源碼包http://mirror.bit.edu.cn/apache/httpd/
      2).安裝註意事項
          源代碼保存位置:/usr/local/src/
          軟件安裝位置:/usr/local/
          如何確定安裝過程報錯:
              安裝過程停止
              並出現error、warning或no的提示
      3).源碼包安裝過程
          下載源碼包
          解壓縮下載的源碼包
          進入解壓縮目錄
              (./configure)軟件配置與檢測
              定義需要的功能選項
              檢測系統環境是否符合安裝要求(檢測系統是否安裝gcc[c語言編譯器]等等)
              把定義好的功能選項和檢測系統環境的信息都寫入Makefile文件,用於後續的編輯
              
              ./configure --prefix=/usr/local/apache2
              make【編譯】
              make clean【如果以上兩個步驟有錯誤,就執行清空臨時文件命令,沒有錯誤就不用執行】
              make install【編譯安裝】
      4).源碼包的卸載
          不需要卸載命令,直接刪除安裝目錄即可.不會遺留任何垃圾文件
五、腳本安裝包與軟件包選擇
    1.腳本安裝包
        #腳本安裝包並不是獨立的軟件包類型,常見安裝的是源碼包
        #是認為把安裝過程寫成了自動安裝的腳本,只要執行腳本,定義簡單的參數,就可以完成安裝
        #非常類似於Windows下軟件的安裝方式
    2.Webmin的作用
        #Webmin是一個基於Web的Linux系統管理界面.您就可以通過圖形化的方式設置用戶帳號、apache、DNS、文件共享等服務.
    3.Webmin安裝過程
        #下載軟件http://sourceforge.net/projects/webadmin/files/webmin/
        #解壓縮,並進入加壓縮目錄
        #執行安裝腳本(./setup.sh)
        #卸載(/etc/webmin/uninstall.sh)
        #安裝完了註意先把防火墻關了(service iptables stop),不然外界不能訪問
六、用戶和用戶組管理
    1.用戶配置文件
        1).用戶信息文件/etc/passwd
            ①.用戶管理簡介
                ◆所以越是對服務器安全性要求高的服務器,越是要建立合理的用戶權限等級制度和服務器操作規範
                ◆在Linux中主要是通過用戶配置文件來查看和修改用戶信息
            ②./etc/passwd
                第一字段:用戶名稱
                第二字段:密碼標誌
                第三字段:UID(用戶ID)--0:超級用戶,1-499:系統用戶(偽用戶),500-65535:普通用戶
                第四字段:GID(用戶初始組ID)
                第五字段:用戶說明
                第六字段:家目錄--普通用戶:/home/用戶名/,超級用戶:/root/
                第七字段:登錄之後的Shell
            ③.初始組和附加組
                初始組:就是指用戶一登錄就立刻擁有這個用戶組的相關權限,每個用戶的初始組只能有一個,一般就是和這個用戶的用戶名相同的組名作為這個用戶的初始組.
                附加組:指用戶可以加入多個其他的用戶組,並擁有這些組的權限,附加組可以有多個.
            ④.Shell是什麽
                Shell就是Linux的命令解釋器
                在/etc/passwd當中,除了標準Shell是/bin/bash之外,還可以寫如/sbin/nologin
        2).影子文件/etc/shadow
            1.字段的解釋
                第一字段:用戶名
                第二字段:加密密碼
                    加密算法升級為SHA512散列加密算法
                    如果密碼位是"!!"或"*"代表沒有密碼,不能登錄
                第三字段:密碼最後一次修改日期
                    使用1970年1月1日作為標準時間,每過一天時間戳加1
                第四字段:兩次密碼的修改間隔時間(和第三字段相比)
                第五字段:密碼有效期(和第三字段相比)
                第六字段:密碼修改到期前的警告天數(和第五字段相比)
                第七字段:密碼過期後的寬限天數(和第五字段相比)
                    0:代表密碼過期後立即生效
                    -1:則代表密碼永久不會生效
                第八字段:帳號失效時間
                    要用時間戳表示
                第九字段:保留字段
            2.時間戳換算
                把時間戳換算為如期
                    date -d "1970-01-01 16066 days"
                把日期換算為時間戳
                    echo $(($(date --date="2015/8/31" +%s)/86400+1))
        3).組信息文件/etc/gtoup和組密碼文件/etc/gshadow
            1.組信息文件/etc/group
                第一字段:組名
                第二字段:組密碼標誌
                第三字段:GID
                第四字段:組中附加用戶
            2.組密碼文件/etc/gshadow
                第一字段:組名
                第二字段:組密碼
                第三字段:組管理員用戶名
                第四字段:組中附加用戶
    2.用戶管理相關文件
        1).用戶的家目錄
            普通用戶:/home/用戶名/,所有者和所屬組都是此用戶,權限是700
            超級用戶:/root/,所有者和所屬組都是root用戶,權限是500
        2).用戶的郵箱
            /var/spool/mail/用戶名/
        3).用戶模板目錄
            /etc/skel/
    3.用戶管理命令
        1).用戶添加命令useradd
            ①.useradd命令格式
                -u UID:手工指定用戶的UID號
                -d 家目錄:手工指定用戶的家目錄
                -c 用戶說明:手工指定用戶的說明
                -g 組名:手工指定用戶的初始組
                -G 組名:指定用戶的附加組
                -s shell:手工指定用戶的登錄Shell,默認是/bin/bash
        2).修改用戶密碼passwd
            ①.passwd命令格式
                -S:查詢用戶密碼的密碼狀態.僅root用戶可用
                -l:暫時鎖定用戶.僅root用戶可用
                -u:解鎖用戶.僅用戶可用
                --stdin:可以通過管道符輸出的數據作為用戶的密碼
        3).修改用戶信息usermod,修改用戶密碼狀態chage
            ①.修改用戶信息usermod
                -u UID:修改用戶的UID號
                -c 用戶說明:修改用戶的說明信息
                -G 組名:修改用戶的附加組
                -L:臨時鎖定用戶
                -U:解鎖用戶鎖定
            ②.修改用戶密碼狀態chage
                -l:列出用戶的詳細密碼狀態
                -d 日期:修改密碼最後一次更改日期(shadow3字段)
                -m 天數:兩次密碼修改間隔(4字段)
                -M 天數:密碼有效期(5字段)
                -W 天數:密碼過期前警告天數(6字段)
                -I 天數:密碼過後寬限天數(7字段)
                -E 日期:帳號失效時間(8字段)
        4).刪除用戶userdel,用戶切換命令su
            ①.刪除用戶userdel
                -r:刪除用戶的同時刪除用戶家目錄
            ②.查看用戶ID
                id 用戶名
            ③.切換用戶身份su(su - 用戶名)
                -:選項只使用"-"代表連帶用戶的環境變量一起切換,["-"必須加上]
                -c 命令:僅執行一次命令,而不切換用戶身份
    4.用戶組管理命令
        1).添加用戶組
            groupadd 組名【-g GID:指定組ID】
        2).修改用戶組
            groupmod 組名【-g GID:修改組ID,-n 新組名:修改組名】
        3).刪除用戶組
            groupdel 組名
        4).把用戶添加入組或從組中刪除
            gpasswd 選項 組名【-a 用戶名:把用戶加入組,-d 用戶名:把用戶從組中刪除】
七、權限管理
    1.ACL權限
        1).ACL權限簡介與開啟
            ①.
            ②.查看分區ACL權限是否開啟
                dumpe2fs -h /dev/sda3【dumpe2fs命令是查詢指定分區詳細文件系統信息的命令,-h:僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息】
            ③.臨時開啟分區ACL權限
                mount -o remount,acl /【重新掛載根分區,並掛載加入acl權限】
            ④.永久開啟分區ACL權限
                vim /etc/fstab【進入編輯模式,UUID=asdqq-qweqwe-qweqwe-qweqew-qweqwe2131123 / ext4 defaults,acl 1 1(加入acl)】
                mount -o remount /【重新掛載文件系統,使修改生效】
        2).查看與設定ACL權限
            ①.查看ACl命令
                getfacle 文件名【查看acl權限】
            ②.設定ACL權限的命令(setfacl 選項 文件名)
                -m:設定ACl權限(u:用戶名:權限)
                -x:刪除指定的ACl權限
                -b:刪除所有的ACl權限
                -d:設定默認ACL權限
                -k:刪除默認ACL權限
                -R:遞歸設定ACL權限
        3).最大有效權限與刪除ACL權限
            ①.最大有效權限mask
                mask是用來指定最大有效權限的.如果我給用戶賦予了ACL權限,是需要和mask的權限"相與"才能得到用戶的真正權限
                setfacl -m m:rx 文件名【修改最大有效權限,設定mask權限為r-x.使用"m:權限"格式】
            ②.刪除ACL權限
                setfacl -x u:用戶名 文件名【刪除指定用戶的ACl權限】
                setfacl -x g:組名 文件名【刪除指定用戶組的ACl權限】
                setfacl -b 文件名【會刪除文件的所有的ACL權限】
        4).默認ACL權限和遞歸ACL權限
            ①.遞歸ACL權限
                遞歸是父目錄在設定ACL權限時,所有的子文件和子目錄也會擁有相同的ACl權限
                setfacl -m u:用戶名:權限 -R 文件名
            ②.默認ACL權限
                默認ACl權限的作用是如果給父目錄設定了默認ACl權限,那麽父目錄中所有新建的子文件都會繼承父目錄的ACL權限.
                setfacl -m d:u:用戶名:權限 文件名
    2.文件特殊權限
        1).SetUID
            ①.SetUID的功能
                >只有可以執行的二進制程序才能設定SUID權限
                >命令執行者要對該程序擁有x(執行)權限
                >命令執行者在執行該程序時獲得該程序文件屬主的身份(在執行程序的過程中靈魂附體為文件的屬主)
                >SetUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效.
                >passwd命令擁有SetUID權限,所以普通可以修改自己的密碼[ll /usr/bin/passwd]
                >cat命令沒有SetUID權限,所以普通用戶不能查看/etc/shadow文件[ll /bin/cat]
            ②.設定SetUID的方法
                >4代表SUID[chmod 4755 文件名,chmod u+s 文件名]
            ③.取消SetUID的方法
                >chmod 755 文件名
                >chmod u-s 文件名
            ④.危險的SetUID
                >關鍵目錄應嚴格控制寫權限.比如"/"、"/usr"等
                >用戶的密碼設置要嚴格遵守密碼的三原則
                >對系統中默認應該具有SetUID權限的文件做一列表,定時檢查有沒有這之外的文件被設置了SetUID權限.
        2).SetGID
            ①.SetGID針對文件的作用
                >只有可執行的二進制程序才能設置SGID權限
                >命令執行者要對該程序擁有x(執行)權限
                >命令執行在執行程序的時候,組身份升級為該程序文件的屬組.
                >SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效.
                >/usr/bin/locate是可執行二進制程序,可以賦予SGID.
                >執行用戶lamp對/usr/bin/locate命令擁有執行權限.
                >執行/usr/bin/locate命令時,組身份會升級為slocate組,而slocate組對/var/lib/mlocate/mlocate.db數據庫擁有r權限,所以普通用戶可以使用locate命令,查詢mlocate.db數據庫.
                >命令結束,lamp用戶的組身份返回為lamp組.
            ②.SetGID針對目錄的作用
                >普通用戶必須對此目錄擁有r和x權限,才能進入此目錄.
                >普通用戶在此目錄中的有效組會變成此目錄的屬組.
                >若普通用戶對此目錄擁有w權限時,新建的文件默認屬組是這個目錄的屬組.
            ③.設定SetGID
                >2代表SGID[chmod 2755 文件名,chmod g+s 文件名]
            ④.取消SetGID
                >chmod 755 文件名
                >chmod g-s 文件名
        3).Sticky BIT
            ①.SBIT粘著位作用
                >粘著位目錄只針對目錄有效
                >普通用戶對該目錄擁有w和x權限,即普通用戶可以在此目錄擁有寫入權限.
                >如果沒有粘著位,因為普通用戶擁有w權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件.一但賦予了粘著位,除了root可以刪除所有文件,普通用戶就算擁有w權限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件.
            ②.設置與取消粘著位
                >設置粘著位
                    chmod 1775 目錄名
                    chmod o+t 目錄名
                >取消粘著位
                    chmod 777 目錄名
                    chmod o-t 目錄名
    3.文件系統屬性chattr權限
        1).chattr命令格式
            chattr [+-=][選項] 文件或目錄名【+:增加權限,-:刪除權限,=:等於某權限】
                選項:>i:如果對文件設置i屬性,那麽不允許對文件進行刪除、改名,也不能添加和修改數據;如果對目錄設置i屬性,那麽只能修改目錄下文件的數據,但不允許建立和刪除文件.
                         >a:如果對文件設置a屬性,那麽只能在文件中增加數據,但是不能刪除也不能修改數據;如果對目錄設置a屬性,那麽只允許在目錄中建立和修改文件,但是不允許刪除.
        2).查看文件系統屬性
            lsattr 選項 文件名【-a:顯示所有文件和目錄,-d:若目標是目錄,僅列出目錄本身的屬性,而不是子文件的】
    4.系統命令sudo權限
        1).sudo權限
            >root把本來只能超級用戶執行的命令賦予普通用戶執行.
            >sudo的操作對象是系統命令.
        2).sudo使用
            >visudo【實際修改的是/etc/sudoers文件】
                root ALL=(ALL) ALL
                #用戶名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)
                %whell ALL=(ALL) ALL
                #%組名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)
        3).授權sc用戶可以重啟服務器
            >visudo【進入vim編輯模式】
                sc ALL=/sbin/shutdown -r now【例】
        4).普通用戶執行sudo賦予的命令(不建議給普通用戶授權vim這樣的工具權限)
            sudo -l【查看可用的sudo命令】
            sudo /sbin/shutdown -r now【普通用戶執行sudo賦予的命令】
八、文件系統管理
    1.回顧分區和文件系統
        1).分區類型
            >主分區:總共最多只能分四個
            >擴展分區:只能有一個,也算做主分區的一種,也就是說主分區加擴展分區最多有四個.但是擴展分區不能存儲數據和格式化,必須再劃分成邏輯分區才能使用.
            >邏輯分區:邏輯分區是在擴展分區中劃分的,如果是IDE硬盤,Linux最多支持59個邏輯分區,如果是SCSI硬盤Linux最多支持11個邏輯分區.
        2).文件系統
            >ext2:是ext文件系統的升級版本,RedHatLinux7.2版本以前的系統默認都是ext2文件系統.1993年發布,最大支持16TB的分區和最大2TB的文件.
            >ext3:ext3文件系統是ext2文件系統的升級版本,最大的區別就是帶日誌功能,以在系統突然停止時提高文件系統的可靠性.支持最大16TB的分區和最大2TB的文件.
            >ext4:它是ext3文件系統的升級版.ext4在性能、伸縮性和可靠性方面進行了大量改進.ext4的變化可以說是翻天覆地的,比如向下兼容ext3、最大1EB文件系統和16TB文件、無線數量子目錄、extents連續數據塊概念、多塊分配、延遲分配、持久預分配、快速fsck、日誌校驗、無日誌模式、在線碎片整理、inode增強、默認啟用barrier等.
    2.文件系統常用命令
        1).df命令、du命令、fsck命令和dump2fs命令
            ①.文件系統查看命令df[df 選項 掛載點]
                -a:顯示所有的文件系統信息,包括特殊文件系統,如/proc、/sysfs
                -h:使用習慣單位顯示容量,如KB,MB或GB等.
                -T:顯示文件系統類型
                -m:以MB為單位顯示容量
                -k:以KB為單位顯示容量.默認就是以KB為單位.
            ②.統計目錄或文件大小[du 選項 目錄或文件名]
                -a:顯示每個子文件的磁盤占用量.默認只統計子目錄的磁盤占用量.
                -h:使用習慣單位顯示磁盤占用量,如KB,MB或GB等.
                -s:統計總占用量,而不列出子目錄和子文件的占用量.
            ③.du命令和df命令的區別
                >df命令是從文件系統考慮的,不光要考慮文件占用的空間,還要統計被命令或程序占用的空間(最常見的就是文件已經刪除,但是程序並沒有釋放空間)
                >du命令是面向文件的,只會計算文件或目錄占用的空間.
            ④.文件系統修復命令fsck[fsck 選項 分區設備文件名]
                -a:不用顯示用戶提示,自動修復文件系統.
                -y:自動修復.和-a作用一致,不過有些文件系統只支持-y.
            ⑤.顯示磁盤狀態命令dumpe2fs[dumpe2fs 分區設備文件名]
        2).掛載命令
            ①.查詢與自動掛載
                >mount -l【查詢系統中已經掛載的設備,-l:會顯示卷標名稱】
                >mount -a【依據配置文件/etc/fstab的內容,自動掛載】
            ②.掛載命令格式
                >mount [選項] 設備文件名 掛載點【掛載命令】
                -t 文件系統:加入文件系統類型來指定掛載的類型,可以ext3、ext4、iso9660等文件系統.
                -L 卷標名:掛載指定卷標的分區,而不是安裝設備文件名掛載.
                -o 特殊選項:可以指定掛載的額外選項.
                >atime/noatime:更新訪問時間/不更新訪問時間.訪問分區文件時,是否更新文件的訪問時間,默認為更新.
                >async/sync:異步/同步,默認為異步.
                >auto/noauto:自動/手動,mount -a命令執行時,是否會自動安裝/etc/fstab文件內容掛載,默認為自動.
                >defaults:定義默認值,相當於rw,suid,dev,exec,auto,nouser,async這七個選項.
                >exec/noexec:[常用]執行/不執行,設定是否允許在文件系統中執行可執行文件,默認是exec允許.
                >remount:[常用]重新掛載已經掛載的文件系統,一般用於指定修改特殊權限.
                >rw/ro:讀寫/只讀,文件系統掛載時,是否具有讀寫權限,默認是rw.
                >suid/nosuid:具有/不具有SUID權限,設定文件系統是否具有SUID和SGID的權限,默認是具有.
                >user/nouser:允許/不允許普通用戶掛載,設定文件系統是否允許普通用戶掛載,默認是不允許,只有root可以掛載分區.
                >usrquota:寫入代表文件系統支持用戶磁盤配額,默認不支持.
                >grpquota:寫入代表文件系統支持組磁盤配額,默認不支持.
        3).掛載光盤與U盤
            ①.掛載光盤
                >mkdir /mnt/cdrom/【建立掛載點】
                >mount -t iso9660 /dev/cdrom /mnt/cdrom/或mount /dev/sr0 /mnt/cdrom/【掛載光盤】
            ②.卸載命令[umount 設備文件名或掛載點]
                umount /mnt/cdrom/
            ③.掛載U盤
                >fdisk -l【查看U盤設備文件名】
                >mount -t vfat /dev/sdb1 /mnt/usb/【註意:Linux默認不支持NTFS文件系統】
            ④.卸載U盤
                >umount /mnt/usb/
        4).支持NTFS文件系統
            ①.下載NTFS-3G插件
                http://www.tuxera.com/community/open-source-ntfs-3g/
            ②.安裝NTFS-3G
                tar -zxf ntfs-3g_ntfsprogs-2015.3.14.tgz【解壓】
                cd ntfs-3g_ntfsprogs-2015.3.14【進入解壓目錄】
                ./configure【編譯器準備,沒有指定安裝目錄,安裝到默認位置中】
                make【編譯】
                make install【編譯安裝】
            ③.使用
                mount -t ntfs-3g 分區設備文件名 掛載點【mount -t ntfs-3g /dev/sdb1 /mnt/usb/】
            ④.卸載NTFS移動硬盤
                >umount /mnt/usb/
    3.fdisk分區
        1).fdisk命令分區過程
            ①.添加新硬盤
            ②.查看新硬盤
                fdisk -l
            ③.使用fdisk命令分區
                fdisk /dev/sdb
                >--------fdisk交互指令說明--------
                >a:設置可引導標記
                >b:編輯bsd磁盤標簽
                >c:設置DOS操作系統兼容標記
                >d:刪除一個分區
                >l:顯示已知的文件系統類型.82為Linux swap分區,83為Linux分區
                >m:顯示幫助菜單
                >n:新建分區
                >o:建立空白DOS分區表
                >p:顯示分區列表
                >q:不保存退出
                >s:新建空白SUN磁盤標簽
                >t:改變一個分區的系統ID
                >u:改變顯示記錄單位
                >v:驗證分區表
                >w:保存退出
                >x:附加功能(僅專家)
            ④.重新讀取分區表信息
                partprobe
            ⑤.格式化分區
                mkfs -t ext4 /dev/sdb1
        2).分區自動掛載與fstab文件修復
            ①./etc/fstab文件[/dev/sdb1 /disk1 ext4 defaults 1 2]
                >第一字段:分區設備文件名或UUID(硬盤通用唯一識別碼)
                >第二字段:掛載點
                >第三字段:文件系統名稱
                >第四字段:掛載參數
                >第五字段:指定分區是否被dump備份,0代表不備份,1代表每天備份,2代表不定期備份
                >第六字段:指定分區是否被fsck檢測,0代表不檢測,其他數字代表檢測的優先級,那麽當然1的優先級比2高
            ②.mount -a【依據配置文件/etc/fstab的內容,自動掛載】
            ③./etc/fstab文件修復
                mount -o remount,rw /
    4.分配swap分區
        1).free命令
            free【查看內存與swap分區使用狀況】
            >cached(緩存):是指把讀取出來的數據保存在內存當中,當再次讀取時,不用讀取硬盤而直接從內存當中讀取,加速了數據的讀取過程.
            >buffer(緩存):是指在寫入數據時,先把分散的寫入操作保存到內存當中,當達到一定程度再集中寫入硬盤,減少了磁盤碎片和硬盤的反復尋道,加速了數據的寫入過程
        2).新建swap分區
            fdisk /dev/sdb【別忘記把分區ID改為82】
        3).格式化
            mkswap /dev/sdb6
        4).加入swap分區
            swapon /dev/sdb6【加入swap分區】
            swapoff /dev/sdb6【取消swap分區】
        5).swap分區開機自動掛載
            vim /etc/fstab【進入vim命令模式】
                /dev/sdb6   swap    swap defaults 0 0

        
十、Shell基礎
1.Shell概述

1).shell是什麽
  >shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用shell來啟動、掛起、停止甚至是編寫一些程序.
>shell還是一個功能相當強大的編程語言,易編寫,易調試,靈活性較強.shell是解釋執行的腳本語言,在shell中可以直接調用Linux系統命令.
2).shell的分類
            >bourne shell:從1979起Unix就開始使用bourne shell,bourne shell的主文件名為sh.
            >bash:bash與sh兼容,現在使用的Linux就是使用bash作為用戶的基本shell
        3).Linux支持的Shell
            cat /etc/shells
2.Shell腳本的執行方式
        1).echo輸出命令[echo 選項 輸出內容]
            -e:支持反斜線控制的字符轉換[echo -e "abc\n"]
            ------轉義字符--------
            \\:輸出/本身
            \a:輸出警告聲
            \b:退格鍵,也就是向左刪除鍵
            \c:取消輸出行末的換行符.和"-n"選項一致
            \e:ESCAPE鍵
            \f:換頁符
            \n:換行符
            \r:回車符
            \t:制表符,也就是Tab鍵
            \v:垂直制表符
            \0nnn:按照八進制ASCII碼表輸出字符.其中0為數字零,nnn是三位八進制數
            \xhh:按照十六進制ASCII碼輸出字符.其中hh是兩位十六進制數
        2).第一個腳本
            vim /tmp/helloworld.sh
            #!/bin/bash【shell腳本必須填寫這個標題】
        3).腳本執行
            >賦予執行權限,直接運行
                chmod 755 /tmp/helloworld.sh【分配權限】
                /tmp/helloworld.sh【執行】
            >通過Bash調用執行腳本
                bash /tmp/helloworld.sh【執行】

3.bash的基本功能
        1).歷史命令與命令補全
            ①.歷史命令
                history 選項 歷史命令保存文件
                -c:清空歷史命令
                -w:把緩存中的歷史命令寫入歷史命令保存文件
                >.bash_history【家目錄的常用命令保存文件】
                >歷史命令默認會保存1000條,可以在環境變量配置文件/etc/profile中進行修改
                >歷史命令的調用
                    /使用上、下箭頭調用以前的歷史命令
                    /使用"!n"重復執行第n條歷史命令
                    /使用"!!"重復執行上一條命令
                    /使用"!字串"重復執行最後一條以該字串開頭的命令
            ②.命令與文件補全
                >在bash中,命令與文件補全是非常方便與常用的功能,我們只要在輸入命令或文件時,按"Tab"鍵就會自動進行補全
        2).命令別名與常用快捷鍵
            ①.命令別名
                alias 別名='原命令'【設定命令別名】
                alias【查詢命令別名】
                >命令執行時順序
                    1.第一順位執行用絕對路徑或相對路徑執行的命令
                    2.第二順位執行別名
                    3.第三順位執行bash的內部命令
                    4.第四順位執行按照$PATH環境變量定義的目錄查找順序找到的第一個命令
                >讓別名永久生效
                    vim /root/.bashrc
                >刪除別名
                    unalias 別名
            ②.bash常用快捷鍵
                ctrl+a:把光標移動到命令行開頭.如果我們輸入的命令過長,想要把光標移動到命令行開頭時使用
                ctrl+e:把光標移動到命令行結尾
                ctrl+c:強制終止當前的命令
                ctrl+l:清屏,相當於clear命令
                ctrl+u:刪除或剪切光標之前的命令.我輸入了一行很長的命令,不用使用退格鍵一個一個字符的刪除,使用這個快捷鍵會更加方便
                ctrl+k:刪除或剪切光標之後的內容
                ctrl+y:粘貼ctr+u或ctrl+k剪切的內容
                ctrl+r:在歷史命令中搜索,按下ctrl+r之後,就會出現搜索界面,只要輸入搜索內容,就會從歷史命令中搜索
                ctrl+d:退出當前終端
                ctrl+z:暫停,並放入後臺.這個快捷鍵牽扯工作管理的內容,我們在系統管理章節詳細介紹
                ctrl+s:暫停屏幕輸出
                ctrl+q:恢復屏幕輸出
        3).輸入輸出重定向
            ①.標準輸入輸出
                | 設備 | 設備文件名 | 文件描述符 | 類型      |
                | 鍵盤 | /dev/stdin|    0       |標準輸入    |
                |顯示器|/dev/sdtout|    1       |標準輸出    |
                |顯示器|/dev/sdterr|    2       |標準錯誤輸出|
            ②.輸出重定向
                -----------------------------------------------------------------------------------
             |       類型      |    符號     |      作用
             |------------------------------------------------------------------------------------
             |                 |   命令>文件  |以覆蓋的方式,把命令的正確輸出輸出到指定的文件或設備當中
             |  標準輸出重定向  |-----------------------------------------------------------------
             |                 |   命令>>文件 |以追加的方式,把命令的正確輸出輸出到指定的文件或設備當中
                -------------------------------------------------------------------------------------
             |                 |  錯誤名2>文件 |以覆蓋的方式,把命令的錯誤輸出輸出到指定的文件或設備當中
             |標準錯誤輸出重定向|-------------------------------------------------------------------
             |                 |錯誤命令2>>文件|以追加的方式,把命令的錯誤輸出輸出到指定的文件或設備當中
  -------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
             |               |命令>文件2>&1     |以覆蓋的方式,把正確輸出和錯誤輸出都保存到同一個文件中
             |               |命令>>文件2>&1    | 以追加的方式,把正確輸出和錯誤輸出都保存到同一個文件中
             |正確輸出和      |命令&>文件       | 以覆蓋的方式,把正確輸出和錯誤輸出都保存到同一個文件中
             |錯誤輸出同時保存|命令&>>文件       |以追加的方式,把正確輸出和錯誤輸出都保存到同一個文件中
             |               |命令>>文件 2>>文件|把正確的輸出追加到文件1中,把錯誤的輸出追加到文件2中
              ------------------------------------------
            ③.輸入重定向
                wc [選項] [文件名]【-c:統計字節數,-w:統計單詞數,-l:統計行數】
                命令<文件【把文件作為命令的輸入】
        4).多命令順序執行與管道符
            ①.多命令順序執行
                多命令執行符   格式     作用
                ;        命令1;命令2    多個命令順序執行,命令之間沒有任何邏輯聯系 
                &&       命令1&&命令2   邏輯與,當命令1正確執行,則命令2才會執行,當命令1執行不正確,則命令2不會執行
                ||       命令1||命令2   邏輯或,當命令1執行不正確,則命令2才會執行,當命令1執行正確,則命令2不會執行
                >dd if=輸入文件 of=輸出文件 bs=字節數 count=個數
                    if:指定源文件或源設備
                    of:指定目標文件或目標設備
                    bs:指定一次輸入/輸出多少字節,即把這些字節看做一個數據塊
                    count:指定輸入/輸出多少個數據塊
            ②.管道符
                命令1 | 命令2【命令1的正確輸出作為命令2的操作對象】
                >grep [選項] "搜索內容"
                    -i:忽略大小寫
                    -n:輸出行號
                    -v:反向查找
                    --color=auto:搜索出的關鍵字用顏色顯示
        5).通配符與其他特殊符號
            ①.通配符
                ?:匹配一個任意字符
                *:匹配0個或多個任意字符,也就是可以匹配任何內容
                []:匹配中括號中任意一個字符.例如:[abc]代表一定匹配一個字符,或者是a,或者是b,或者是c
                [-]:匹配中括號中任意一個字符,-代表一個範圍.例如:[a-z]代表匹配一個小寫字母
                [^]:邏輯非,表示匹配不是中括號內的一個字符.例如:[^0-9]代表匹配一個不是數字的字符
            ②.bash中其他特殊符號
                '':單引號,在單引號中所有的特殊符號,如"$"和"`"(反引號)都沒有特殊含義.
                "":雙引號,在雙引號中特殊符號都沒有特殊含義,但是"$"、"`"和"\"是例外,擁有"調用變量的值"、"引用命令"和"轉義符"的特殊含義
                ``:反引號,反引號括起來的內容是系統命令,在bash中會先執行它.和$()作用一樣,不過推薦使用$(),因為反引號非常容易看錯.
                $():和反引號作用一樣,用來引用系統命令
                #:在shell腳本中,#開頭的行代表註釋.
                $:用於調用變量的值,如需要調用變量name的值時,需要用$name的方式得到變量的值.
                \:轉義符,跟在\之後的特殊符號將失去特殊含義,變為普通字符.如\$將輸出"$"符號,而不當做是變量引用.

4.bash的變量
        1).用戶自定義變量
            >變量定義[name='hello world']
            >變量疊加[name="$name"123456]
            >變量調用[echo $name]
            >變量查看[set]
            >變量刪除[unset name]
        2).環境變量
            ①.環境變量是什麽
                >用戶自定義變量只在當前的shell中生效,而環境變量會在當前shell和這個shell的所有子shell當中生效.如果把環境變量寫入相應的配置文件,那麽這個環境變量就會在所有的shell中生效.
            ②.設置環境變量
                export 變量名=變量值【申明變量】
                env【查詢變量】
                unset 變量名【刪除變量】
            ③.系統常見環境變量
                >PATH:系統查找命令的路徑
                    echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root:bin
                >PATH:"$PATH":/root/bin【PATH變量疊加】
                >PS1定義系統提示符的變量【PS1='[\u@\h \w]\$ '】
                    \d:顯示日期,格式為"星期 月 日"
                    \h:顯示簡寫主機名.如默認主機名"localhost"
                    \t:顯示24小時制時間,格式為"HH:MM:ss"
                    \T:顯示12小時制時間,格式為"HH:MM:SS"
                    \A:顯示24小時制時間,格式為"HH:MM"
                    \u:顯示當前用戶名
                    \w:顯示當前所在目錄的完整名稱
                    \W:顯示當前所在目錄的最後一個目錄
                    \#:執行的第幾個命令
                    \$:提示符.如果是root用戶會顯示提示符為"#",如果是普通用戶會顯示提示符為"$"
        3).位置參數變量
            $n:n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數需要用大括號包含,如${10}
            $*:這個變量代表命令行所有的參數,$*把所有的參數看成一個整體
            $@:這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待
            $#:這個變量代表命令行中所有參數的個數
        4).預定義變量
            ①.預定義變量
                $?:最後一次執行的命令的返回狀態.如果這個變量的值為0,證明上一個命令正確執行;如果這個變量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了.【常用】
                $$:當前進程的進程號(PID)
                $!:後臺運行的最後一個進程的進程號(PID)
            ②.接收鍵盤輸入
                read [選項] [變量名]【read -s -p "請輸入動態口令: " kouling echo "您輸入的口令是: $koulin"】
                    -p "提示信息":在等待read輸入時,輸出提示信息
                    -t 秒數:read命令會一直等待用戶輸入,使用此選項可以指定等待時間
                    -n 字符數:read命令只接受指定的字符數,就會執行
                    -s:隱藏輸入的數據,適用於機密信息的輸入

5.bash的運算符
        1).數值運算與運算符
            ①.declare [+/-] [選項] 變量名【declare聲明變量類型】
                    -:給變量設定類型屬性
                    +:取消變量的類型屬性
                    -i:將變量聲明為整數型(integer)
                    -x:將變量聲明為環境變量
                    -p:顯示指定變量的被聲明的類型
            ②.數值運算-方法
                declare -i cc=$aa+$bb
                dd=$(expr $aa+$bb)【expr或let數值運算工具】
                ff=$(($aa+$bb))【"$((運算式))"或"$[運算式]"】
            ③.運算符
                優先級|  運算符       |說明
                --------------------------------------------------------
                13      -,+                 單目負,單目正
                12      !,~                     邏輯非,按位取反或補碼
                11      *,/,%                   乘,除,取模
                10      +,-                     加,減
                9           <<,>>                   按位左移,按位右移
                8           < =,> =,<,>                 小於或等於,大於或等於,小於,大於
                7           ==,!=                   等於,不等於
                6           &                           按位與
                5           ^                           按位異或
                4           |                           按位或
                3           &&                      邏輯與
                2           ||                      邏輯或
                1           =,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=               賦值,運算且賦值
        2).變量測試與內容替換
            變量置換方式 | 變量y沒有設值                     |  變量y為空值          |  變量y設值
            ----------------------------------------------------------------------------------
            x=${y-新值}   x=新值                             x為空                   x=$y
            x=${y:-新值}  x=新值                             x=新值                  x=$y
            x=${y+新值}   x為空                              x=新值                  x=新值
            x=${y:+新值}  x為空                              x為空                   x=新值
            x=${y=新值}   x=新值,y=新值                      x為空,y值不變            x=$y,y值不變
            x=${y:=新值}  x=新值,y=新值                      x=新值,y=新值            x=$y,y值不變
            x=${y?新值}   新值輸出到標準錯誤輸出(就是屏幕)    x為空                    x=$y
            x=${y:?新值}  新值輸出到標準錯誤輸出              新值輸出到標準錯誤輸出   x=$y

6.環境遍歷配置文件
        1).環境變量配置文件簡介
            ①.source命令
                source 配置文件【強制配置文件生效】
                . 配置文件【強制配置文件生效】
            ②.環境變量配置文件簡介
                >環境變量配置文件中主要是定義對系統的操作環境生效的系統默認環境變量,比如PATH,HISTSIZE,PS1,hostname等默認環境變量.
                >/etc/profile
                >/etc/profile.d/*.sh
                >~/.bash_profile
                >~/.bashrc
                >/etc/bashrc
        2).環境變量配置文件作用
            ①./etc/profile的作用
                >USER變量
                >logname變量
                >MAIL變量
                >PATH變量
                >HOSTNAME變量
                >HISTSIZE變量
                >umask
                >調用/etc/profile.d/*.sh文件
        3).其它配置文件和登錄信息
            ①.註銷時生效的環境變量配置文件
                ~/.bash_logout
            ②.其他配置文件
                ~/.bash_history
            ③.shell登錄信息
                >本地終端歡迎信息:/etc/issue
                    \d:顯示當前系統日期
                    \s:顯示操作系統名稱
                    \l:顯示登錄的終端號,這個比較常用
                    \m:顯示硬件體系結構,如i286,i686等
                    \n:顯示主機名
                    \o:顯示域名
                    \r:顯示內核版本
                    \t:顯示當前系統時間
                    \u:顯示當前登錄用戶的序列號
                >遠程終端歡迎信息:/etc/issue.net
                    轉義符在/etc/issue.net文件中不能使用
                    是否顯示此歡迎信息,由ssh的配置文件/etc/ssh/sshd_config決定,加入"Banner /etc/issue.net"行才能顯示(記得重啟SSH服務)
>登錄後歡迎信息:/etc/motd
不管是本地登錄,還是遠程登錄,都可以顯示此歡迎信息

延伸阅读

评论