国产探花免费观看_亚洲丰满少妇自慰呻吟_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,啟動成功,更新鎖狀態返回結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阆中市| 宜都市| 望江县| 石渠县| 大理市| 江西省| 贵德县| 仪征市| 班戈县| 五河县| 武宣县| 凭祥市| 鄱阳县| 仙桃市| 莎车县| 亚东县| 通海县| 射洪县| 神池县| 白银市| 青龙| 霍山县| 榆中县| 囊谦县| 濮阳市| 双鸭山市| 昆明市| 和平区| 抚顺市| 浦江县| 炎陵县| 开封县| 临夏市| 林口县| 逊克县| 肇州县| 宿州市| 宿州市| 吉林省| 文化| 石屏县|