Linux基礎命令必知必會

基礎命令:這裏的文件可以是單個文件也可以是文件夾也可以是軟連接類文件,一切皆文件

$ 環境變量, @ 主機, ~ 用戶, | 管道符(將一個命令的輸出定向到另一個命令的輸入;也就說前一個命令處理後的數據會作爲數據源傳遞給下一命令繼續進行處理), ; 連續(使用;保證命令的連續)
> 輸出重定向, < 輸入重定向

    cat /etc/password | sort | less # 獲取password的內容,然後排除,再次使用less查看
    data ; troff -me verylargedoc | lpr ; date # 記錄開始時間,然後開始整理一個large doc,完成後再次記錄時間,這樣就記錄了整理文檔的耗時

如果有問題請使用man <command>,直接有效,有問題找助手;
以下內容中<source>是指源文件或者源路徑,<dest>目標文件或者路徑

  • man <command> manual 手冊:search for files in a directory hierarchy

  • pwd print working directory 打印當前路徑

  • cd change directory 切換路徑

  • date date 打印當前系統時間

  • history <n> 打印歷史限制n個最近命令,默認全部

  • type <command>顯示命令的位置

文件基本操作

  • ls list 列出文件列表

    ls [options] <dest>

    • -a all 所有文件包括隱藏文件
    • -l long 長列表即詳情 等同於ll
        ls # 默認當前路徑
        ls -l /usr/local/bin
    
  • cp copy 複製/並重命名文件

    cp [options] <source> <dest>

    • -a all 全部信息拷貝,連同內鏈接等一同拷貝 等同於-dpr
    • -r recursive 遞歸複製,如果有文件夾會遞歸複製文件夾中的所有文件
    • -f force 強制拷貝,如果有相同的文件名強制覆蓋
    • -i interactive 交互,有需要提示的給出彈窗
        cp -rf /usr/local/thrid/doc/ /home/doc
    
  • mv move 移動文件(可以用於重命名文件功能)

    mv [options] <source> <desc>

    • -f force 強制拷貝,如果有相同的文件名強制覆蓋
    • -n no-blobber 不覆蓋已經存在的文件
    • -i interactive 交互,有需要提示的給出彈窗
        mv -rf /usr/src/log /home/log
        mv /test/php.log /test/coll.log  #如果目標路徑是與原路徑相同會執行重命名
    
  • rm remove 移除文件(rm 是不能夠直接移除非空的文件夾)

    rm [options] <desc>

    • -r recursive 遞歸移除,如果有文件件會遞歸複製文件件中的所有文件
    • -f force 強制拷貝,如果有相同的文件名強制覆蓋
    • -i interactive 交互,每移除一個文件時都會提示給出彈窗
  • mkdir make directory 創建路徑

    mkdir [options] <desc>

    • -m mode 創建路徑的同時設置其權限屬性
    • -p parrents 可以創建目錄路徑的父類路徑
        mkdir -m 711 -pv /usr/local/test/1/2/3/4/5/6/7
    
  • rmdir remove directory 移除路徑

    mkdir [options] <desc>

    • -p parents 連同上級的空目錄一併刪除(僅限於空的上級目錄)
        rmdir -pv /usr/local/test/1/2/3/4/5/6/7
    
  • touch touch 創建文件(修改文件的屬性)

    touch [options] <dest>

    • -a access time 修改文件的訪問時間
    • -m modification time 修改文件的修改時間
        touch /usr/local/test.log
    
  • ln link 創建一個連接(在指定路徑下創建目標文件的快捷方式)

    ln [options] <source> <dest-ln>

    • -f force 如果已經存在目標連接名稱則強制移除後在創建
    • -i interactive 交互,有需要提示的給出彈窗
    • -s soft 創建一個軟連接
        ln -is /usr/zk /usr/local/bin/zike
    
  • tar 打包文件,把多個文件打包成一個文件,生成或者提取.tar文件

    注意這裏並沒有壓縮,僅僅是打包,如果需要壓縮請使用-z參數,或者使用gzip命令

    • -c create a new compressed archive 創建(打包)一個壓縮文件
    • -f use archive file or device ARCHIVE
    • -x extract files from an archive 提取一個包文件
    • -t list the contents of an archive 列出包文件的內容
    • -v verbosely list files processed 冗長地列出處理過的文件
    • -z filter the archive through gzip 通過 gzip 過濾存檔即:壓縮和解壓
        tar -zcvf archive.tar 1.txt 2.log 3.zip files/4.md # 打包並壓縮1,2,3/4等文件到archive.tar文件
        tar -tvf archive.tar # 查看.tar文件內容
        tar -zxvf archive.tar # 解壓文件包
    
  • gzip 壓縮/解壓縮文件,會生成或者解壓.gzip文件

    通常用的比較少,都是直接使用tar -z直接使用了

    • -k keep 不刪除原有文件,默認完成壓縮後會刪除原有文件
    • -d 解壓縮文件
        gzip archive.tar archive.tar.gz # 壓縮archive.tar 到archive.tar.gz
        du -h archive.tar.gz # 查看壓縮包信息
        gzip -d archive.tar.tz # 解壓archive.tar.gz 到 archive.tar
    
  • lrzsz 插件/工具:文件傳輸器,需要使用yum/apt進行安裝

    rzsz僅支持單文件處理的傳輸

    • rz 上傳
    • sz 下載
        rz # 回車後會彈出計算機文件選擇彈窗,進行文件選擇
        sz authorized_keys # 回車後會彈出系統文件保存選擇彈窗
    

    注意:xshell支持,putty是不支持的

    如果是ssh協議可以使用scp,OpenSSH secure file copy

    scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

    • -r recurse 遞歸,用於複製文件夾
    • -P port 指定host端口
      scp d:/res/a.md [email protected]:~/home/ # 本地上傳到linux
      scp -r d:/res/ 192.168.101.13:~/home/res/ # 上傳文件夾,然後確認用戶名及密碼
    
      scp [email protected]:/home/res/a.md d:/lin # 由linux下載到本地
      scp -r www.baidu.com:/home/ d:/ln/ # 也可以使用域名
    

注意scp只能傳輸regular文件,如果是文件夾的話需要使用-r參數

  • zip/unzip 插件/工具:解壓縮文件,需要使用yum/apt進行安裝

    • -r recurse 遞歸壓縮文件夾
    • -d delete 刪除 zip entry
        zip -r folder.zip folder 1.txt 2.txt # 壓縮文件到zip
        du -h folder.zip # 查看壓縮包信息
        unzip folder.zip -d folder # 解壓zip文件
    

    比較之下壓縮率:zip不及gzip

    • find find 命令用來在指定目錄下查找文件,更多使用方法

      find path -option [ -print ] [ -exec -ok command ] {} \;

      • -amin <n> 過去 n 分鐘被讀取的文件
      • -cnewer file 過去 n 分鐘創建的文件
      • -atime <n> 過去 n 天內被讀取的文件
      • -cmin <n> 過去 n 分鐘內被修改的文件
      • ctime <n> 過去 n 天內被修改的文件
      • -empty 空文件
      • -name/inamne <str> 文件名符合 str 的文件(iname 忽略大小寫)
      • -type 過濾指定類型的文件: f 一般文件,d 文件夾文件
      • size 過濾文件大小
        find . -name "*.log" # find 當前目錄下以.log結尾的文件
        find /usr/ -type f -cmin 10
        find / -size +500M 
    

總結: 對文件操作時,一般 -r是遞歸完成指令,-f是強制完成指令, -i 是由需要時給出提示 ,-v顯示執行過程


文本文件基本讀寫查

  • cat Concatenate file 輸出文本內容到控制檯

    比較適合打開小型文本文件,因爲它是一次性讀取全部內容;如果內容比較大的文件建議聯合grep一起使用

    cat [options] <dest>

    • -n 帶有行號打印
        cat -n /usr/lacal/log/temp.log | grep -C error
    
  • tac 功能和作用與cat相同,只不過是文件的讀取方向剛好相反

  • more 一次性讀取全部文本,可以進入閱讀模式,支持內容內容查找

    more [options] <dest>

    回車鍵 移動下一行
    空格鍵 移動下一頁
    b 向上翻一頁
    u 向上翻半頁
    f 向下翻一頁
    d 向下翻半頁
    q quit 退出閱讀模式,或者ctrl +c

  • less 一屏一屏的讀取,可以進入閱讀模式,支持操作查看內容 更多使用技巧

    less [options] <dest>

    操作覆蓋more的外鍵操作功能,同時支持方向鍵PageUp/PageDown功能鍵控制
    / 輸入關鍵字後回車向下搜索
    ? 輸入關鍵字後回車向上搜索
    支持F鍵開啓文件新內容監聽,類似tail -F

    • -o 保存到其他文件
    • -N 顯示行號

    例如:分頁顯示進程

        ps -ef | less -N
    
  • head 輸出文件頭部指定行數

    head [options] <dest>

    • -c bytes 指定的字節數
    • -l lines 指定的行數(沒有指定-c可以省略)
        head -20 /usr/local/requeset.log
    
  • tail 輸出文件尾部指定行數

    tail [options] <dest>

    • -c bytes 指定的字節數
    • -l lines 指定的行數(沒有指定-c可以省略)
    • -f follow 監聽文件,常用於監聽日誌,抓取指定日誌,進入等待模式
    • -F follow retry
    tail -F /usr/local/src/www/login.log
    

三劍客(grep,sec,awk)

  • grep 查找文件裏符合條件的字符串

    grep可以直接查文檔,也可以接收流

    grep [options] <str> <dest>

    • -c count 計算符合樣式的行數
    • -C <n> 除了顯示符合樣式的那一行之外,並顯示該行之前後各n行的內容
    • -i ignore 忽略字符串匹配大小寫
    • -r 使用遞歸的方式查文件夾
  • sed

  • awk

磁盤系統

  • df (disk free:report file system disk space usage) 顯示磁盤可用空間數目信息

    目標是系統文件:檢查文件系統的磁盤空間佔用情況。可以利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息

    df [options] <test>

    • -a all
    • -k k byte
    • -m M byte
    • -h 自行顯示相關單位,人性化的單位,常用
        df -h 
    
  • du estimate file space usage

    目標是用戶文件/目錄

    • -a all 列出該目錄的子目錄的已用容量
    • -k k byte
    • -m M byte
    • -h 自行顯示相關單位,人性化,常用
    • -s 對於目錄:列出該目錄的總體積,而不列出每個各別的目錄佔用容量;
        du -hs /usr/local/log # 查看 log目錄總體積
    
  • fdisk 磁盤分區(manipulate disk partition table)

    fdisk [options] device

    • -l 輸出後面接的裝置所有的分區內容
        fdisk -l /dev/sda1 # 查看指定設備的磁盤及分區信息
    

    這個命令的輸出內容有點專業,表示似懂非懂

  • mount 磁盤掛載 (mount a filesystem)

    mount [options] <device> <dir>

        fdisk -l # 查找接入設備的信息,主要指設備名稱 /dev/sdb1
        # Device     Boot Start     End Sectors Size Id Type
        # /dev/sdb1          63 4108607 4108545   2G  e W95 FAT16 (LBA)
        mkdir -p /mnt/usb/temp
        mount /dev/sdb1 /mnt/usb/temp
        cd /mnt/usb/temp # 就可以看到u盤內容了,使用文件
    
  • umount 磁盤掛載

    • -f force 強制卸載
        umount /dev/sdb1
    
  • fsck 磁盤檢查

    mkfs [options] <device>

    沒有怎麼用到

  • mkfs make file system 格式化文件系統

    mkfs [options] <device>

    • -t <type> 指定格式化後的文件系統格式,例如’ext2’
        mkfs -t ext3 /dev/sdc
    

安裝軟件包

  • yum Centos發行版本的包管理器,使用於yum源上已有的資源

    • list <package> list packages based on package names
    • install/reinstall -y <package_name> install/reinstall package
    • search <package> list packages based on package names
    • remove <package> 卸載指定的軟件包
    • update/downgrade <package> 升/降級已經安裝的軟件包
  • apt Ubuntu發行版本的包管理,默認使用Ubuntu平臺的資源

    • list <package> list packages based on package names
    • search <package> list packages based on package names
    • show <package> show package details
    • install/reinstall -y <package> install/reinstall package
    • remove <package> 卸載指定的軟件包
    • upgrade <package> 升級已經安裝的軟件包
  • wget 插件/工具:文件下載器,需要使用yum/apt進行安裝

  • systectl 服務控制器

    systemctl start mysqld.service
    systemctl stop mysqld.service
    systemctl restart mysqld.service
    
  • ps process status 進程狀態(類似 windows 的任務管理器)

    • -auxf
    • -ef
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章