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

歡迎訪問 生活随笔!

生活随笔

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

linux

shell 中diff返回值_LINUX(中)

發布時間:2025/4/16 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell 中diff返回值_LINUX(中) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Shell?

  • Shell 是 Linux 的命令解釋器,用于解釋用戶對操作系統的操作
  • cat /etc/shells
  • CentOS 7 默認使用的 Shell 是 bash
  • 命令執行的具體過程: 由 Shell 接受命令,對命令的選項和參數進行分析。如 ls,會交給文件系統(內核),內核接受命令,將所要查看的目錄或文件翻譯成硬盤的某個扇區,硬件將查詢到的結果返回給內核,內核返回給 Shell ,Shell 返回給用戶。
  • bash 是基于bsh,將其他 shell 好用的功能集成過來,bsh 不好用的省略,a 代表 again重寫。
  • Linux 的啟動過程

  • 系統自帶的 Shell 腳本用途
    • 用于 Linux 系統的啟動過程
    • Linux 命令

    2. Linux 啟動過程

    BIOS引導 - MBR - BootLoader(grub) - kernel - systemd - 系統初始化 - shell

    BIOS基本輸入輸出系統在主板上,通過BIOS選擇引導的介質(硬盤/光盤),來到硬盤,MBR主引導記錄部分,可引導則進入grub,啟動和引導內核/windows系統,grub用于選擇內核和內核版本,啟動kernel,內核初始化-加載硬件,一號進程:systemd(CentOS 7)/init(CentOS)

    • 查看MBR:dd if=/dev/sda of=mbr.bin bs=512 count=1
    • hexdump -C mbr.bin.
    • 55 aa 證明扇區引導正確 446bytes
    • 查看 grub: cd /boot/grub2
    • 查看內核版本:grub2-editenv list uname -r
    • 查看 systemd:cd /etc/systemd/system/

    Shell 腳本的格式

    為了組合命令和多次執行,使用腳本文件保存需要執行的命令。文件拓展名 .sh 賦予該文件的權限 chmod u+rx filename 執行:bash filename.sh 默認命令解釋器為 bash 才可以./filename. sh 用系統默認的命令解釋器#!/usr/bin/python #!/bin/bash bash ./filename.sh 被解釋為注釋./filename.sh 被解釋為 /bin/bash 運行

    腳本不同執行方式的影響

    • bash ./filename.sh 開啟bash子進程執行,無需X權限,運行后回到父進程,不改變環境
    • ./filename.sh 開啟sha-Bang子進程運行,必須賦予x權限,運行后回父進程,環境不變
    • source ./filename.sh 當前進程運行,改變環境,無需X權限
    • . filename.sh 當前進程運行,改變環境,無需X權限

    內建命令和外部命令的區別

    • 內建命令不需要創建子進程
    • 內建命令對當前shell生效

    管道與重定向

  • 管道:進程通信工具,方便腳本編程兩條命令相互通信
  • 匿名管道(管道符):Shell 編程經常用到的通信工具
  • 管道符是“|”,將前一個命令的執行結果傳遞給后面的命令 ps | cat 、 echo 123 | ps,給前后兩個命令創建子進程,如果子進程中存在內建命令是不會傳遞給父進程,所以使用管道符盡量不要使用內建命令。如果子進程是shell,則稱為子shell
  • 重定向:進程運行時會打開stdin stdout stderr 三個文件描述符,標準輸出信息輸出到文件
  • 輸入重定向: '<' 文件代替鍵盤輸入read var < /path/to/a/file 輸出重定向: '>' '>>' '2>' '&>' 文件代替終端輸出清空:echo 123 > /path/to/a/file換行追加:echo 123 >> /path/to/a/file錯誤重定向:echo 123 2> /path/to/a/file全部執行信息重定向:echo 123 &> /path/to/a/file 輸入輸出重定向組合使用:cat > /path/to/a/file << EOFI am $USEREOF

    變量

  • 變量的賦值
    • 變量名=變量值 abc=123
    • 使用let為變量賦值 let a=10+20
    • 將命令賦值給變量 l=ls
    • 將命令結果賦值給變量 使用$()或者'' letc=$(ls -l /etc)
    • 變量值有特殊字符可以包含在" " 、 ' '中

    2.變量的引用

    • ${變量名}稱作對變量的引用
    • echo ${變量名} 查看變量的值
    • ${變量名} 在部分情況下可省略為$變量名

    3.變量的默認作用范圍 :本shell

    變量的導出 export 變量名 子進程可以獲得父進程的變量值 變量的刪除 unset 變量名

    4. 環境變量、預定義變量、位置變量

    • 系統環境變量:每一個shell都可以讀取到變量值
    每一個系統環境變量都經歷了export的導出,子shell可以生效 set 和 env 命令 echo $PATH 若想修改PATH 可以 export PATH=$PATH:/new/path,子shell可以生效(bash 產生子shell),平行shell不生效 $PS1
    • 位置變量:$1 $2 .${10}.. $n. 對應入參。若讀入值為空可 var=${2-_} echo var
    • 預定義變量:echo $? 上一條命令正確執行 0。錯誤執行 1
    • echo $$ 顯示當前進程Pid
    • echo $0 顯示當前進程名稱

    5. 環境變量的配置文件

    etc保存所有用戶配置,~家目錄保存用戶特有配置.

    配置文件在打開終端的時候才運行

    login in :su - username 執行五個配置文件,加載全面

    no login in: su username 執行下面兩個配置文件,加載不全

    • /etc/profile
    • /etc/profile.d/
    • ~/.bash_profile
    • ~/.bashrc alias
    • /etc/bashrc

    數組

  • 定義數組: IPTS=(1 2 3)
  • 顯示數組所有元素: echo ${IPTS[@]}
  • 顯示數組元素個數: echo ${#IPTS[@]}
  • 顯示數組的第一個元素: echo ${IPTS[0]}
  • 算術運算符

  • + - / ** %
  • 運算 expr 4 + 5. expr只支持整數
  • num1 = `expr 4 + 5`. ((num1=4+5))
  • 數字常量

  • let "變量名=變量值"
  • 0開頭為八進制,0x為十六進制
  • 雙圓括號是 let 命令的簡化,((a=10)) ((a++)) echo $((10+20))
  • 特殊字符大全

    引用:' 完全引用,不進行解釋$" 不完全引用,進行解釋$` 執行命令

    退出與退出狀態

    • exit shell 運行成功返回0 失敗返回非0 使用 echo $? 查看上一個進程是否正常退出
    • exit 127 返回一個自定義值

    測試命令 test

    • test 命令用于檢查文件或者比較值
    • test 可以做以下測試:文件測試、整數比較測試、字符串測試
    • test 測試語句可以簡化為 []
    • [] 符號還有拓展寫法[[]] 支持&&、||、<、>
    man test 判斷是否為文件:test -f /etc/passwd 存在為0 不存在為1 判斷值大小:[5 -gt 4] [[5>4]] gt lt ge le eq 判斷目錄是否存在:[-e /etc/] 判斷字符串是否相等: ["abc"="ABC"] 結果為1,test可以區分大小寫

    語句

    if-then 語句

    if [測試條件成立] 或 命令返回值是否為0 then 執行相應命令 fi 結束

    if-then-else 語句

    if [測試條件成立] 或 命令返回值是否為0 then 執行相應命令 else 測試條件不成立,執行相應命令 fi 結束#!/bin/bash # if else if [$USER = root];thenecho "user root"echo $UID elseecho "other root"echo $UID fi

    if-elif-else 語句

    if [測試條件成立] 或 命令返回值是否為0 then 執行相應命令 elif [測試條件成立] 或 命令返回值是否為0 then 執行相應命令 else 測試條件不成立,執行相應命令 fi 結束#!/bin/bash # if elif else if [$USER = root];thenecho "user root"echo $UID elif [$USER = user1];thenecho "user root"echo $UID elseecho "other root"echo $UID fi

    嵌套if的使用

    if [測試條件成立] 或 命令返回值是否為0 then 執行相應命令if [測試條件成立] 或 命令返回值是否為0then 執行相應命令fi 結束 fi 結束

    分支語句

    case "$變量" in"情況1" )命令...;;"情況2" )命令...;;* )命令...;; esac

    for 循環

    for 參數 in 列表 do 執行的命令 done 封閉一個循環使用反引號或者$()方式執行的命令,命令的結果當作列表進行處理for i in {1..9} doecho $i donec語言的風格的(awk使用): for((賦值;判斷;變化)) do循環執行的命令 done

    while 循環和 util 循環

    使用循環處理命令行參數

    命令行參數可以使用 $1 $2 $3 ${10} $n進行讀取 $0 代表腳本名稱 $@ 和 $*可以代表所有位置的參數 $#代表位置參數的數量for pos in $* do if ["$pos"="help"];thenecho $pos $posfi donewhile [$# -ge 1] do if ["$1"="help"];then echo $1 $1fishift //可以參數左移 done

    自定義函數

    自定義函數:function fname(){ //function 可省略命令} 函數的執行:fname函數作用范圍的變量: local 變量名 刪除函數:unset fname ---------------------------------- cdls(){cd $1ls }調用:cdls /tmp 進入tmp并進行查看 ---------------------------------- 每個進程對應在/proc/pid目錄下checkpid(){local ifor x in $* ;do[-d "/proc/$x"] && return 0donereturn 1 }執行: checkpid 1echo $?

    系統函數庫介紹

    系統自建了函數庫,可以在腳本中引用 /etc/init.d/functions 自建函數庫: 使用source函數腳本文件"導入"函數

    腳本資源配置

    腳本優先級控制

  • 可以使用 nice 和 renice 調整腳本優先級
  • 避免出現不可控的死循環(cpu 占用高/死機)
  • 查看限制:ulimit -a root用戶中的很多限制不生效 可能會產生fork炸彈 .() {. | .&}; .

    信號捕獲

    捕獲信號腳本的編寫:kill 默認會發送15號信號給應用程序 ctrl +c 默認會發送2號信號給應用程序 9號信號不可阻塞#!/bin/bash #capture signaltrap "echo sig 15" 15 // kill -15 pid trap "echo sig 2" 2 // ctrl+cecho $$ // 打印進程號while : // 死循環 do : done

    計劃任務

    一次性計劃任務 at

    at 指定時間 echo hello > /tmp/hello.txt ctrl+d 提交查看計劃任務:atq周期性計劃任務

    周期性計劃任務

    配置方式: crontab -e 每分鐘運行顯示系統的日期:* * 7 7 1-5 /usr/bin/date >> /tmp/date.txt。 七月七日,若在周一到周五范圍內,每分鐘執行一次 查看任務: cd /var/log. tail -f cron 查看現有的計劃任務: crontab -l 每個用戶周期性計劃任務文件: /var/spool/cron/ 配置格式:分鐘 小時 日期 月份 星期執行的命令

    計劃任務加鎖 flock

    如果計劃 1:30 完成某個計劃任務,但在 1:25 宕機 則可以使用此解決方案 即,計算機不能按照預期時間運行anacontab 延時計劃任務flock 鎖文件flock -xn "tmp/f.lock" -c "root/task_shell_file". 排它 保證一次只能運行一個實例

    總結

    以上是生活随笔為你收集整理的shell 中diff返回值_LINUX(中)的全部內容,希望文章能夠幫你解決所遇到的問題。

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