日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux基础命令必知必会

發布時間:2023/12/20 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux基础命令必知必会 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

所有的命令都具有 --help,有問題找助手;
以下內容中<source>是指源文件或者源路徑,<dest>目標文件或者路徑

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

  • pwd print working directory 打印當前路徑

  • date date 打印當前系統時間

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

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

  • ./jemeter.sh 執行一個可執行文件

文件基本操作

  • cd change directory 切換路徑

    cd [options] <dest>

    cd ~ # 切換到HOMEcd # 切換到HOME
  • ls list 列出文件列表

    ls [options] <dest>

    • -a all 所有文件包括隱藏文件
    • -l long 長列表即詳情 等同于ll
    ls # 默認當前路徑ls -l /usr/local/bin # 等同于'll'
  • 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/logmv /test/php.log /test/coll.log #如果目標路徑是與原路徑相同會執行重命名
  • rm remove 移除文件(rm 是不能夠直接移除非空的文件夾)

    rm [options] <desc>

    • -r recursive 遞歸移除,如果有文件件會遞歸復制文件件中的所有文件
    • -f force 強制拷貝,如果有相同的文件名強制覆蓋
    • -i interactive 交互,每移除一個文件時都會提示給出彈窗
    rm rf /usr/local/log/temp
  • 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.gzdu -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 root@192.168.101.13:~/home/ # 本地上傳到linuxscp -r d:/res/ 192.168.101.13:~/home/res/ # 上傳文件夾,然后確認用戶名及密碼scp root@192.168.101.13:/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 # 壓縮文件到zipdu -h folder.zip # 查看壓縮包信息unzip folder.zip -d folder # 解壓zip文件

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

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

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

      (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN -readable -writable -executable -wholename PATTERN -size N[bcwkMG] -type [bcdpflsD] -uid N -used N -user NAME -xtype [bcdpfls] -context CONTEXT

      • -amin <n> File was last accessed n minutes ago.
      • -atime <n> 過去 n 天內被訪問的文件
      • -cmin <n> File’s status was last changed n minutes ago.
      • -ctime <n> 過去 n 天內被修改的文件
      • -mmin <n> File’s data was last modified n minutes ago.
      • -mtime <n> 過去 n 天內被修改過屬性的文件
      • -empty File is empty and is either a regular file or a directory. (蛋疼會找空的文件)
      • -name/inamne <pattern> 文件名符合 str 的文件(iname 忽略大小寫) 支持(*, ?,[])進行文件名稱匹配
      • -type [options] 過濾指定類型的文件: f regular file ,d directory , l link file
      • -user <uname> File is owned by user uname
      • -size +/- <n[c/k/M/G]> 過濾文件大小(+/-大于/小于參數,c:bytes,k:kb,M:Mb,G:Gb)
      • -writable,-readable,-executable 可寫,可讀,可執行的屬性
    find . -iname *.log # find 當前目錄下以.log結尾的文件find /usr/ -type d -cmin 10find / -size +500M # find 單文件容量大于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 向上翻一頁
    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 計算符合樣式的行數
    • -r 使用遞歸的方式查文件夾
    • -A <n> after 找到目標的后n行
    • -B <n> before 找到目標的前n行
    • -C <n> 找到目標詞匯的前后n行
    • -v <str>
    grep -C 10 "error" php_access_log.txt # 查找文件中包含關鍵詞的前后各10行的內容
  • sed 一種在線編輯器,一次處理一行數據

    多用于行數據處理

    sed [options] 'n [,m] action'

    options:

    • -n --silent,quiet 沉靜的,如果沒有指定該參數那么在使用action/p(打印)中指定的行號無效
    • -i 默認所有的操作都是在使用內存的副本,并不對文件本身進行修改,如果需要修改文件就需要使用-i參數

    actions:
    格式:[n,[m]] function

    • -a 新增行,需要指定在第幾行后追加,可以標記新增行的內容,例如:2a hello,world
    • -c 替換行
    • -d 刪除行,不可與option中的-n同時使用
    • -i 插入行
    • -p [指定行號/查詢]打印,如果指定了行號需要聯合option中的-n使用
    • -s 替換,直接進行取代工作; s/source/target/g全局替換
    sed '2p' data.ini # 打印所有內容,沒有指定'-n'參數默認打印全部行數sed -n 'p' data.ini # 打印所有行內容sed -n '2,4p' data.ini # 打印第2行-第4行內容sed '3d' data.ini # 刪除第3行,這里不需要加`-n`參數,只是刪除顯示中數據不會刪除元數據sed '2a hello,word' data.ini # 在第2行后新建行插入hello.wordsed -n '/hello/p' data.ini # 打印包含字段的行sed -i 's/hello/world/g' data.ini # 替換文件中全部的hello字段為worldsed 's/ /hello/g' data.ini | sort | uniq -c | sort -r | head -5 # 查一篇文章中出現頻率最高的5個詞
  • awk 對文件進行格式化的工具

    多用于列數據進行處理

    awk [options] 'pattern{action}' file,file,...

    options:

    • -F --field-separator指定分割符,以分隔符為標識把行數據進行分割為多列;默認為空白字符

    pattern:符合pattern的才會傳遞給action(簡單理解為符合該條件)可以使用&&,||…等邏輯判斷符

    • $n 可以直接獲取第n列的值與指定條件比較,例如:$2=="order"
    • NF 分割后的字段列的數量(支持==,>,<等比較操作)
    • NR 當前行的行號

    action :

    • print $n 打印第n列($n)數據內容
    awk '{print "TAG:" $5," msg:" $6}' php_login_0202.log # 輸出文件中以空白字符為分割標識后的第5列及第6列的內容awk -F '-' 'NF>=4 && ($1=="order"||$1=="t_order") {print "uid:" $2,"order_id:" $4}' php_order_all.log # 輸出文件中指定以`-`分割且分割后列數>=4的行信息中第2列及第4列的內容awk '{print $7}' php_access_log.txt | awk -F '?' '{$1}'| sort | uniq -c | sort -rn | head -10

涉及第幾列的數據優先使用awk,因為awk會對行依據分隔符進行分列,有列的概念

  • sort 把文件內容中以行為單位進行比較,按照首字符向后

    • -r reverse 反轉
    • -n numerical value 數值

    通常會和其它命令聯合使用,例如:uniq,awk

    sort -rn login.log # 排序文件中的行數據
  • uniq 去重,去除重復數據,前提條件是相鄰數據相同才會被執行去重

    在使用 uniq之前要用sort進行排序,目的是使相同的數據相鄰,這樣uniq才會更準確

    • -c 統計出現的次數

    通常會和其它命令聯合使用,例如:sort,awk

    awk -F "," 'NF>2 {print $1,$2}' awk.txt | sort | uniq -c | sort -rn | head -3 # 讀取文件以','進行分割,滿足至少兩個字段后進行過濾然后按照出現頻率又少到多進行排序

總結:
awk 適合對行內有規律的列數據進行處理,通常用于找到(行分割后的)列數據進行統計分析,較多情況需要結合sort -rn,uniq -c使用
sed 適合對行數據進行處理,可以增刪改查 用于修改文件內容例如:sed -i 's/source/target/g file'grep適合對文本數據進行過濾處理 較多使用-C `過濾文件關鍵字


磁盤系統

  • 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/tempmount /dev/sdb1 /mnt/usb/tempcd /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

安裝軟件包

  • rpm

  • 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進行安裝

系統相關

  • ip how / manipulate(操縱) routing, network devices, interfaces and tunnels

    ifconfig 默認centos7及Ubuntu都已經去掉了該工具,可以使用sudo yum/apt instatll -y ifconfig進行安裝

    • addr/address 查看IP地址 protocol (IP or IPv6) address on a device.
    • route 路由主機 routing table entry.
    • link network device.
  • systectl 服務控制器 Control the systemd system and service manager

    systemctl暫且可以看作是命令service的升級兼容版本
    同時等效于直接啟動/etc/init.d/<service_name> [options]

    systemctl [options] <test> [status | start | stop | restart(restart service) | force-reload(reload config file)`]

    systemctl start mysqld.servicesystemctl stop mysqld.servicesystemctl restart mysqld.service
  • ps process status 進程狀態(類似 windows 的任務管理器) report a snapshot of the current processes.ps displays information about a selection of the active processes.

    ps [options]

    • -auxf To see every process on the system using BSD syntax
    • -ef To see every process on the system using standard syntax
    • -ejH To print a process tree
    ps -ef | grep sshd # 使用標準的語法查看系統進程,并使用grep進行過濾ps -aux | grep sshd # 使用bsd語法查看系統進程,ps -ejH

    Notes:可以用于查看指定應用的進程是否已經啟動

  • kill send a signal to a process 發送一個信號給進程

    kill 有多個signal,可以使用 kill -l查看,參數-9是SIGKILL殺掉進程

    kill [options] <pid>

    kill -9 -1 # Kill all processes you can kill.
  • nohup 以后臺進程的方式啟動,避免控制臺阻塞式啟動

    nohup [opitons]

    nohup ./jemter.sh > run.log # 以后臺的方式運行./jemeter.sh 并把輸出信息保存到run.log文件

    如果沒有權限運行可以先確認腳本文件是否有x可執行權限,使用chmod +x <file>增加可執行屬性
    如果用戶角色權限不夠請切換su,·sudo passwd root·修改root密碼

  • netstat 顯示協議統計信息和當前 TCP/IP 網絡連接 prints information about the Linux networking subsystem.

    netstat [options]

    • -a 顯示所有連接
    • -n 以數字形式顯示地址和端口號
    netstat -anp | grep 3306

總結

以上是生活随笔為你收集整理的Linux基础命令必知必会的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。