Linux達人計劃

Linux 達人計劃

1.Linux 應用領域

  • 企業服務器方面

    www.netcraft.com 檢測網站後臺服務相關信息 (國外站點)

  • 嵌入式應用方面

    Android XXXSSHd 遠程安全管理 (QuickSSHd)

Linux 與 Windows 的不同

  • Linux 嚴格區分大小寫
  • Linux 所有內容以文件形式保存, 包括硬件 永久存在
  • 不依靠擴展名區分文件 依靠權限
文件類型 擴展名
壓縮文件 .gz .bz2 .tar.bz2 .tgz
二進制軟件包 .rpm
腳本文件 .sh
配置文件 .conf
  • 應用程序不同環境

2. 系統分區類型

  • 主分區 : 最多只能有四個
  • 擴展分區 :
    最多只能有一個
    主分區加擴展分區最多有四個
    不能寫入數據, 只能包含邏輯分區
  • 邏輯分區 :
    格式化 在磁盤的特定區域寫入特定數據, 在分區中劃出一片用於存放文件分配表、目錄表等用於文件管理的磁盤空間

分區設備文件名與掛載

Created with Raphaël 2.1.0 分區格式化爲每個分區起設備文件名分配盤符

Linux 樹形結構

/ 根目錄 dev 硬件設備
hd[a-d]: IDE
sd[a-p]: SCSI/SATA/USB 磁盤
cdrom 或 hdc: 光驅
fd[0-1]: 軟盤
lp[0-2]: 打印機 (25 針)
/usb/lp[0-15]: 打印機 (USB)
mouse: 鼠標

掛載

** 把盤符和分區連在一起的過程, 目錄稱爲掛載點 (相當於 Windows 的盤符)** 目錄作爲盤符 / 根分區 swap 交換分區

CentOS 6.3

手動分區    home boot swap / 
安裝方式    Basic Server
    推薦分區 /boot 啓動分區(200M)
**Xshell**
  • 首先在 Linux 中使用 ifconfig eth0 down 關閉網卡
  • 再使用 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up 重啓網卡 手動配置 IP
  • 或使用 setup 工具來配置 IP 地址

在 Xshell 中配置連接信息

vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes // 是否隨着開機啓動

3. 常用命令

命令基本格式

root 超級管理員 
localhost 主機名 
~ 當前所在目錄 
# 管理員用戶 
$ 普通用戶
/root   /home/other

命令 [選項] [參數]
... vi'''

1. 查詢目錄中內容

      ls [選項]
        -a 顯示所有文件 *(包括隱藏文件 .開頭文件)*
        -l 顯示詳細信息
                >- 第一列 權限*(10位基本權限)*
                    -文件類型 *(-文件 d目錄 l軟連接(快捷方式) )*
                        後九位分三組代表權限
                        所有者 u 
                        所屬組 g *相同身份或相同權限的一類用戶*
                        其他人 o 
                    r 讀 w 寫 x 執行
                    . 代表 ACL權限
            >- 第二列 引用計數(被調用 鏈接)
            >- 第三列 所屬者用戶
            >- 第四列 所屬組
            >- 第五列 大小
            >- 第六列 最後一次修改時間
            >- 第七列 文件名

-d 查看目錄屬性
-h 顯示文件大小
-i 顯示 inode

2. 文件處理命令

  • 目錄處理命令

        建立目錄 mkdir
        mkdir 目錄名
            -p 遞歸創建
            mkdir -p abc/def/ggg
    
  • 切換所在目錄 cd

        cd 目錄
            cd ~ / cd 切換家目錄
            cd -      上次目錄
            cd ..     上一級目錄
            cd .      當前目錄
    

相對路徑: 參照當前所在目錄
絕對路徑: 從根目錄開始指定, 一級一級遞歸查找
目錄 / 命令補全 Tab 鍵

  • 查詢所在目錄 pwd (打印當前位置)

        刪除空目錄 rmdir
        rmdir 目錄名
    
        刪除文件或目錄 rm
        rm -rf 文件或目錄
            -r 刪除目錄
            -f 強制 
    
  • 複製命令 cp

        cp [選項] [原文件或目錄] [目標目錄] 目標目錄後加文件名改名複製 不加名 原名複製
            -r 複製目錄
            -p 連帶文件屬性複製
            -d 若原文件是鏈接文件 則複製鏈接屬性
            -a 相當於 -pdr
    
  • 剪切命令 mv

        mv [原文件或目錄] [目標目錄]
            同目錄下可以改名
    
        常見目錄作用
            /       根目錄
            /bin /sbin /usr/bin /usr/sbin   保存系統命令 (s* root用戶打開)
            /boot   啓動目錄保存啓動數據
            /dev    硬件文件
            /etc    配置文件
            /lib    函數庫
            /media /mnt /misc   三個空目錄 作爲外接存放設備的掛載 (mnt)
            /proc /sys 內存的掛載點
            /tmp    臨時目錄
            /usr    系統軟件資源目錄
            /var    系統相關文檔目錄
    
  • 鏈接命令

        鏈接命令 ln
        ln -s [原文件] [目標文件]
            生成鏈接文件 (引用計數加1)
            -s 創建軟鏈接
    
            硬鏈接
            (具有相同的i節點和存儲block塊,可以看成是同一個文件)
            一個文件的不同接入點
            通過i節點訪問
            不能跨分區
            不能針對目錄使用
    
            軟鏈接
            (類似Windows快捷方式)
            擁有自己的i節點和block塊 但數據塊中只保存原文件的文件名和j節點號,沒有實際的文件數據
            lrwxrwxrwx l軟鏈接
                軟鏈接權限都爲 rwxrwxrwx
            修改任意文件,另一個都改變
            刪除原文件,軟鏈接不能使用
            軟鏈接非當前目錄,原文件要寫絕對路徑
    
  • 文件搜索命令

    locate 文件名
        在後臺數據庫中按文件名搜索,搜索速度快
        /var/lib/mlocate    後臺數據庫 
        updatedb            強制更新數據庫
    
        /etc/updatedb.conf 配置文件
        PRUNE_BIND_MOUNTS = "yes"   篩選規則是否生效
        PRUNEFS = ""    篩選規則 (不搜索以下文件系統)
        PRUNENAMES = "" 篩選規則 (不搜索以下後綴名文件)
        PRUNEPATHS = "" 篩選規則 (不搜索以下目錄中)
    
  • 命令搜索命令

    • whereis 命令名

      搜索系統命令所在路徑 (及幫助文檔)
      -b 只查看命令位置
      -m 只查看幫助文檔位置

    • which 命令名

      除了命令所在位置還可以查看別名
      內置命令 (shell) 沒有獨立的執行文件 例如: cd
      環境變量 ($PATH) 內沒有所搜索的命令文件, 就會報錯 (未發現)

    • find 命令

      find [搜索範圍] [搜索條件]
      find / -name install.log 根目錄下按文件名搜索
      避免大範圍搜索
      通配符匹配, 通配符是完全匹配 (雙引號括起來)
      * 任意內容
      ? 任意一個字符
      [] 中括號內的任意一個字符 (或)
      find -iname #不區分大小寫
      find -user #按所有者 -nouser 沒有所有者的文件 (垃圾文件) 內核產生的文件

            find -mtime +10
             (查找十天前修改的文件)
              -10     10天內修改的文件
              10      10天當天修改的文件
              +10     10天前修改的文件
              atime   文件訪問時間
              ctime   改變文件屬性
              mtime   修改文件內容  
      
      
      
            find . -size 25k
              (查找大小爲25K的文件)
              -25k    小於25K
              25k     大小爲25K
              +25k    大於25K
              10M     大小爲10M
      默認類型爲扇區塊(512K) \ 
      
      
            find . -inum 262421
              (查找i節點爲262421)
      
      
            find /etc -size +20k -a -size -50k
          (查找/etc/目錄下,大於20K並小於50K的文件)
              -a and  邏輯與
              -o or   邏輯或
      
      
            find /etc -size +20k -a -size -50k -exec ls -lh {} \;
          (將查找的結果用後面的命令來執行處理 -exec {} \;  固定格式)
      
    • grep 命令 字符串搜索

      grep [選項] 字符串 文件名
          gerp "size" anaconda-ks.cfg
              -v 取反
              -i 忽略大小寫
      

      find 在系統當中搜索符合條件的文件名, 可以使用通配符來實現完全匹配
      grep 在文件當中搜索符合條件的字符串, 可以使用正則表達式來實現包含匹配
      文件名稱 通配符 (完全匹配)
      文件數據 正則表達式 (包含匹配)

    • 幫助命令

      幫助命令 man
      (獲取指定命令的幫助)
      man ls
      name 命令用途
      synopsis 格式
      description 選項 (簡化)
      /d 可自動跳轉到第一個 - d 選項上
      n 向下跳轉 shift+n 向上跳轉

      man -f 命令
      (查看命令級別)
      (相當於 whatis 命令)
          man -5 passwd
          man -4 null
          man -8 ifconfig
      默認打開最小等級的命令
      

      man -k 命令
      #找到和命令相關的所有相關信息
      #相當於 apropos 命令

    其他幫助命令

  • 命令名 –help
    獲取命令選項的幫助

    help shell內部命令
        (獲取shell內部命令的幫助)
            whereis cd
            #查看是否是shell內部命令 (無可執行文件)
            help cd
            #獲取內部命令幫助   (內部命令無法使用man單獨獲取幫助)
    
    info
        (獲取詳細幫助文檔)
        -回車     進入幫助子頁面 (帶*)
        -u      返回
        -n      下一個幫助小節
        -p      上一個幫助小節
    
  • 壓縮與解壓縮命令
    常用壓縮格式 .zip .gz .bz2 | .tar.gz .tar.bz2

    .zip格式壓縮
        zip 壓縮文件名 源文件
        (壓縮文件)
        不要求,但要使用擴展名,便於區分        
        zip -r 壓縮文件名 目錄
        (壓縮目錄)
    
    .zip格式解壓
        unzip 壓縮文件
        (解壓縮.zip文件)
    
    
    .gz格式壓縮
        gzip 源文件
        (壓縮爲.gz格式的壓縮文件,源文件會消失)
    
        gzip -c 源文件 > 壓縮文件
        (壓縮爲.gz文件,源文件保留)
    
        gzip -r 壓縮目錄
        (把目錄當中的所有子文件壓縮,但是不能壓縮目錄)
    
    .gz格式解壓縮
        gzip -d 壓縮包名
        (解壓縮文件)
        gunzip 壓縮包名
        gunzip -r 解壓目錄
    
    
    .bz2格式壓縮
        bzip2 源文件
        (壓縮爲.bz2格式的壓縮文件,不保留原文件)
            bzip2 -k 源文件
            (保留源文件)
            (不能壓縮目錄)
    .bz2格式解壓縮
        bzip2 -d 壓縮包名
        bunzip 壓縮包名
        (-k 保留源文件)
    
    
    .tar 打包文件(解決目錄壓縮與解壓縮)
        tar -cvf 打包文件名 源文件
            -c 打包文件
            -v 顯示過程
            -f 指定打包後的打包文件名
    
        tar -xvf 打包文件名
        (解壓縮)
    

    打包後壓縮與解壓縮
    tar -zcvf 壓縮包名. tar.gz 源文件
    tar -zxvf 解壓縮包名. tar.gz
    tar -jcvf 壓縮包名. tar.bz2 源文件
    壓縮多個文件後用空格分隔
    在壓縮文件名前加路徑可指定壓縮位置
    tar -jxvf 解壓縮包名. tar.bz2
    -C 指定解壓位置

    tar -ztvf 壓縮包名
    tar -jtvf 壓縮包名
        可查看壓縮包
    
  • 關機和重啓命令

    shutdown命令
        shutdown [選項] 時間
        -c 取消前一個命令
        -h 關機
        -r 重啓
        (可以正確保存服務與文件 )
    
        shutdown -r 05:30 &
        放在後臺運行
    
    其他關機命令
        halt
        poweroff
        init 0
    
    其他重啓命令
        reboot
        init 6
    

    系統運行級別
    0 關機
    1 單用戶
    2 不完全多用戶, 不含 NFS 服務 (文件共享服務)
    3 完全多用戶 (字符界面)
    4 未分配
    5 圖形界面 (X)
    6 重啓
    runlevel #查看之前級別和當前級別
    cat /etc/inittab
    id:3:initdefault: // 定義系統默認的運行級別

    退出登錄命令
        logout
        #註銷
    
  • 其他常用命令

    • 掛載命令

      mount
      #查看系統中已經掛載的設備
      mount -a
      (根據配置文件 /etc/fstab (自動掛載) )
      (如果將光驅和U盤寫入文件 光驅內沒有光盤,U盤沒有插入系統 啓動就會不成功)
      
      mount [-t 文件系統] [-o 特殊選項] 設備文件名 掛載點
          -t 文件系統:加入文件系統來指定掛載的類型 ext3 ext4 iso9660(光盤)等文件系統
          -o 特殊選項:可以指定掛載的額外選項
              exec/noexec 是否可以執行可執行文件 默認允許
              remount 重新掛載已經掛載的文件系統 一般用於指定修改特殊權限
          默認已經掛載好的分區 可以省略 設備文件名
      
      掛載光盤
          mkdir /mnt/cdrom
          (建立掛載點)
          mount [-t iso9660] /dev/sr0 /mnt/cdrom
          (掛載光盤 將設備文件掛載到盤符)
          (默認讀寫權限,光盤不可寫 提示權限被迫改變)
      
      卸載光盤
          (必須卸載纔可取出光盤)
          umount 設備文件名或掛載點
          umount /mnt/cdrom/
      
      掛載U盤
          fdisk -l
          (查看設備文件名)
          mount -t vfat /dev/sdb1 /mnt/usb/
          (vfat (fat32)文件系統 Linux默認是不支持NTFS文件系統)
      
      用戶登錄查看命令
           w  
           (查看用戶登錄信息 (系統資源情況) )
      
          who 
          (查看當前登錄用戶)
      
          last
          (查看系統中所有已登錄的信息 (歷史記錄) )
          (日誌文件 /var/log/wtmp (二進制文件) 不可用vi查看 )
      
          lastlog
          (系統當中的用戶最後登錄時間 )
          (日誌文件 /var/log/lastlog )
      

4.shell基礎

  • shell概述

    系統命令行解釋器(二進制語言) | 接受輸入命令 編譯二進制傳輸給內核
    還是一個功能相當強大的編程語言,易編寫,易調試,靈活性較強.

  • 分類

    • Bourne Shell : 從1979起Unix就開始使用 主文件名爲 sh ksh Bash psh zsh Linux中標準版爲 Bash
    • C Shell : 主要在BSD版的Unix系統中使用,與C語言類似 csh tcsh
      Bash兼容 /etc/shells
  • 腳本執行方式


    echo輸出命令
    echo [選項] [輸出內容]
    空格需要加入雙引號
    -e 控制字符(轉義字符) \a 警告音 \b 退格鍵
    可輸入十六進制製表符ASCII \x
    #輸出顏色 “\e[1;31m ……. \e[0m”
    31m 紅色 35m 楊紅 32m 綠色 33m 黃色
    echo -e “\e[1;31m 哈哈哈 \e[0m”

    第一個腳本
        hello.sh
        #!/bin/bash
        echo -e "\e[1;36m 天上掉下個林妹妹  \e[0m"
    執行權限
        通過Bash調用執行腳本
            bash hello.sh
        賦予權限,直接執行
            chmod 755 hello.sh
            ./hello.sh
    
  • Bash的基本功能
    命令別名與快捷鍵
    ( 操作簡化,便於記憶 )

    alias
    (查看系統中默認生效的別名 )
    alias ls=’ls –color=never’
    (設定別名(臨時生效) alias 別名=’原命令’ )
    vi ~/.bashrc
    (永久生效 寫入環境變量配置文件 )
    source ~/.bashrc 重新調用配置文件,使設置生效

    unalias 別名
    (刪除別名 (臨時生效) )

    生效順序
    1. 用絕對路徑或相對路徑執行的命令
    2. 執行別名
    3. 執行Bash的內部命令
    4. 按照$PATH環境變量定義的目錄查找順序找到的第一個命令

  • 常用快捷命令
    ctrl+c 強制終止當前命令
    ctrl+l 清屏
    ctrl+a 光標移到行首
    ctrl+e 光標移到行尾
    ctrl+u 從光標所在位置刪除到行尾
    ctrl+z 把命令放入後臺
    ctrl+r 在歷史命令中搜索

  • 歷史命令

        history 歷史命令
            history [選項] [歷史命令保存文件]
            -c 清空歷史命令
            -w 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history
        #默認保存1000條
            HISTSIZE=1000
            #vi /etc/profile 環境變量配置文件
    
        基本調用
            上下箭頭來重複調用
            !n      來執行第n條歷史命令
            !!      重複執行上一條命令
            !字符串 重複執行後一個該串開頭的命令
    
        Tab鍵
            進行命令(環境變量)和目錄補全(操作路徑)
    
  • 輸出重定向
    (顯示電腦處理的結果)
    標準輸入輸出
    鍵盤 /dev/stdin 0 標準輸入
    顯示器 /dev/sdtout 1 標準輸出
    顯示器 /dev/sdterr 2 標準錯誤輸入

    • 輸出重定向

      • 標準輸出重定向
        命令 > 文件
        以覆蓋的方式,把命令的正確輸出輸出到指定的文件或設備當中.
        命令 >> 文件
        以追加的方式

      • 標準錯誤輸出重定向
        錯誤命令 2>文件
        以覆蓋的方式,把命令的錯誤輸出輸出到指定的文件或設備當中.
        錯誤命令 2>>文件
        以追加的方式

      • 正確輸出和錯誤輸出同時保存
        命令 > 文件 2>&1
        命令 &> 文件
        以覆蓋的方式,把正確的輸出和錯誤輸出都保存到一個文件當中
        命令 >> 文件 2>&1
        命令 &>> 文件
        以追加的方式
        ls &> /dev/null (回收站)
        命令 >> 文件1 2>> 文件2
        正確的追加到文件1,錯誤的追加到文件2

    • 輸入重定向
      wc [選項] [文件名]
      -c 統計字節數
      -w 統計單詞數
      -l 統計行數
      ctrl+d 中斷統計

      命令 < 文件
      (把文件作爲命令的輸入)
      命令 << 標識符
      (標識符其中的內容作爲該命令執行的內容)

  • 管道符
    多命令順序執行
    ; 命令1;命令2 多個命令順序執行(無論中間是否保存)
    && 命令1&&命令2 邏輯與 當命令1正確執行,則命令2纔會執行
    || 命令1||命令2 邏輯或 當命令1正確執行,則命令2不執行
    # ls && echo yes || echo no

  • 管道符
    命令1 | 命令2
    #將命令1的正確輸出作爲命令2的操作對象
    # ll /etc | more
    # netstat -an | grep ESTABLISHED (服務器顯示連接人數)
    # netstat -an | grep ESTABLISHED | wc -l (處理行號)

  • 通配符
    ? 匹配一個任意字符
    * 0個或任意多個
    [] 匹配中括號內其中一個字符
    [-] -代表一個範圍 [a-z]代表匹配一個字母
    [^] 邏輯非 表示匹配不上中括號內的一個字符 [^0-9]代表匹配一個不是數字的字符

  • 其他特殊符號

            ''  特殊符號都沒有特殊意義,原樣輸出        
            ""  $ ` \ 都具有特殊意義
            ``  包含系統命令 執行後賦值給變量 等同於 $()
            $  用於調用變量的值 (變量名=變量值)
            #   shell腳本中,#開頭的行代表註釋
            \   轉義符 跟在\之後的特殊符號失去意義,變爲普通字符
    
1

  1. 來源 慕課學習筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章