国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

Bash CookBook(一)--基礎

2024-06-28 13:25:20
字體:
來源:轉載
供稿:網友
Bash CookBook(一)--基礎

Bash 是brian Fox在1988年1月10號出于Richard Stallman的建議而寫的。

 

一、 運行模板:
  • 交互登陸的shell,登陸后bash會讀取和執行/etc/PRofile。
  • 然后依次讀取~/.bash_profile,~/.bash_login,~/.profile,發現第一個能執行的,執行之。退出登陸時,會讀取和執行~/.bash_logout.
  • 交互非登陸式啟動,會讀取和執行~/.bashrc.
  • bash_history中存儲了執行過的cmd.
       作用:在執行前后允許用戶掛上自定義的邏輯,并可以由每個用戶進行自定義。

 

二、操作快捷鍵:
  • 移動類

         Ctrl+a:移動光標到行起始位置。

         Ctrl+e:移動光標到行末位置。

         Alt+f:以詞形式向前移動光標

         Alt+b:以詞形式向后移動光標

  • 信號類

          Ctrl+c: 對當前任務發出SIGINT信號,使其中止并退出。

          Ctrl+z:對在foreground任務發送信號SIGTSTP讓其暫停。

  • 編輯類

          Tab:自動補全

          Ctrl+k:刪除光標之后字符,并拷貝到clipboard中。

          Ctrl+u:刪除光標之前字符,并拷貝到clipboard中。

          Ctrl+y:拷貝clipboard的內容插入光標位置

          Ctrl+_:回退修改。

          Ctrl+t:交換光標之前的兩個字符。

 

三、 執行模型:

 

  1. 劇場:

  Shell 執行環境是一個劇場,劇場有舞臺(foreground)和后臺(background),有許多劇目(task)可以在舞臺上表演,舞臺上只有一個劇目(fg task)在被人欣賞,其它劇目在后臺排演(bg task),直到用戶想看到它并替換當前劇目(fg,bg指令)。

 

    2. 規則:

  • 在某一時刻只有一個命令在foreground執行,Shell控制權只有foreground的命令執行完之后才回到用戶。
  • 命令后帶上&,表示background執行命令,不影響用戶交互。還可以執行其它指令。
  • 在fg執行的cmd可以按ctrl+z讓其suspend.Suspend的指令可以用fg和bg來讓其恢復執行。

 

3. 困惑:

 

   完成一件工作執行的命令比較多,一條一條敲沒完沒了?可以把命令合在一起寫成一個腳本文件來執行。

 

四、 腳本語法
  1. Expansion:
  • brace expansion a{b,c,d}e 擴展為’abe ace ade’
  • tilde expansion
  • parameter expansion
  • command substitution

2.  Quoting:有expanish就有quoting.quoting有三種:

  • escape character:保留其緊跟的字符的字面意義。
  • 單引號:保留單引號對里字符的字面意義。單引號即使轉義也不能出現在單引號對里。
  • 雙引號:保留雙引號對除$(parameter expanision ),’,/,!外字符的字面意義。
五、 例子

 

   Cron(一個執行計劃任務的服務)的啟動文件

   /etc/init.d/crond

 

   1: #! /bin/bash
   2: #
   3: # crond          Start/Stop the cron clock daemon.
   4: #
   5: # chkconfig: 2345 90 60
   6: # description: cron is a standard UNIX program that runs user-specified /
   7: #              programs at periodic scheduled times. vixie cron adds a /
   8: #              number of features to the basic UNIX cron, including better /
   9: #              security and more powerful configuration options.
  10: # processname: crond
  11: # config: /etc/crontab  
  12: # pidfile: /var/run/crond.pid
  13:  
  14: # Source function library.
  15: . /etc/init.d/functions
  16: . /etc/sysconfig/crond
  17: t=${CRON_VALIDATE_MAILRCPTS:-UNSET}
  18: [ "$t" != "UNSET" ] &;& export CRON_VALIDATE_MAILRCPTS="$t"
  19:  
  20:  # See how we were called.
  21:  
  22:  prog="crond"
  23:  
  24:  start() {
  25:       echo -n $"Starting $prog: "
  26:           if [ -e /var/lock/subsys/crond ]; then
  27:           if [ -e /var/run/crond.pid ] &;& [ -e /proc/`cat /var/run/crond.pid`     ]; then
  28:           echo -n $"cannot start crond: crond is already running.";
  29:           failure $"cannot start crond: crond already running.";
  30:           echo
  31:           return 1
  32:           fi
  33:      fi
  34:       daemon crond $CRONDARGS
  35:       RETVAL=$?
  36:       echo
  37:       [ $RETVAL -eq 0 ] &;& touch /var/lock/subsys/crond;
  38:       return $RETVAL
  39:   }

 

  • 第一行#!/bin/bash表示當前腳本的解釋器是bash.
  • 第2-14行是注釋(comment)。
  • 第15,16表示加載執行相應的腳本。
  • 第18行就是shell里經典的寫法了,很簡練,稱之為List,以&&,;,&,||隔開。在一般語言里形式如下:

         if( “$t”!=”UNSET”)

        export CRON_VALIDATE_MAILRCPTS="$t"

       “”表示一種quote,里面允許執行prameter expanision.將t的值替換 $t.

  • 第24行start(){}表示函數定義
  • 第26-33行檢查文件鎖的存在,如果存在,檢查pid文件以及進程是否存在,如果存在,退出。
  • 第34行啟動crond
  • 第35行RETVAL=$? $?意思是剛執行完的foreground命令的status,也就是啟動crond的進程的返回結果。
  • 第36行如果為0,啟動成功,更新鎖狀態返回結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方城县| 确山县| 依兰县| 佳木斯市| 彭泽县| 罗甸县| 高唐县| 玛纳斯县| 会理县| 雷波县| 大方县| 景泰县| 龙岩市| 平武县| 屯留县| 金坛市| 南汇区| 台州市| 武川县| 电白县| 额济纳旗| 苗栗市| 兴安县| 北票市| 晋州市| 宁晋县| 儋州市| 海伦市| 色达县| 平顺县| 萍乡市| 化州市| 浪卡子县| 临猗县| 榆林市| 巴中市| 缙云县| 嘉兴市| 苏尼特右旗| 若尔盖县| 庄浪县|