shell 中diff返回值_LINUX(中)
生活随笔
收集整理的這篇文章主要介紹了
shell 中diff返回值_LINUX(中)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是Shell?
Linux 的啟動過程
- 用于 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生效
管道與重定向
變量
- 變量名=變量值 abc=123
- 使用let為變量賦值 let a=10+20
- 將命令賦值給變量 l=ls
- 將命令結果賦值給變量 使用$()或者'' letc=$(ls -l /etc)
- 變量值有特殊字符可以包含在" " 、 ' '中
2.變量的引用
- ${變量名}稱作對變量的引用
- echo ${變量名} 查看變量的值
- ${變量名} 在部分情況下可省略為$變量名
3.變量的默認作用范圍 :本shell
變量的導出 export 變量名 子進程可以獲得父進程的變量值 變量的刪除 unset 變量名4. 環境變量、預定義變量、位置變量
- 系統環境變量:每一個shell都可以讀取到變量值
- 位置變量:$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
數組
算術運算符
數字常量
特殊字符大全
引用:' 完全引用,不進行解釋$" 不完全引用,進行解釋$` 執行命令退出與退出狀態
- exit shell 運行成功返回0 失敗返回非0 使用 echo $? 查看上一個進程是否正常退出
- exit 127 返回一個自定義值
測試命令 test
- test 命令用于檢查文件或者比較值
- test 可以做以下測試:文件測試、整數比較測試、字符串測試
- 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 fiif-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" )命令...;;* )命令...;; esacfor 循環
for 參數 in 列表 do 執行的命令 done 封閉一個循環使用反引號或者$()方式執行的命令,命令的結果當作列表進行處理for i in {1..9} doecho $i donec語言的風格的(awk使用): for((賦值;判斷;變化)) do循環執行的命令 donewhile 循環和 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函數腳本文件"導入"函數腳本資源配置
腳本優先級控制
信號捕獲
捕獲信號腳本的編寫: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(中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乾坤 微前端_前端优秀资源整理(持续更新
- 下一篇: python运行不了、显示警告_Pyth