記錄下linux shell 的命令

指令關鍵字

nohup            不掛斷運行
末尾的&            表示後臺運行(有些程序需要結合nohub使用)
2>&1            表示將錯誤輸出重定向到標準輸出
| awk '{print NR}'           打印行數
| awk -F " " '{print $1}'            打印第1列,從1開始數(-F 爲指定分割符,默認分隔符爲[ ]+)$0爲整行
lsb_release           查看系統版本信息,-a爲完整的,其餘單獨的爲-i/-d/-c,如果再加上-s則會取一行的第二個值輸出。可利用該信息下載對應版本安裝包,如:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

if條件

單中括號 [ 3 -gt 2 ]    是可執行程序,等價於 /usr/bin/[ 3 -gt 2],等價於 test 3 -gt 2。
對於程序:

d1='2018-01-02 12:11:00'
d2='2018-02-03 10:10:10'

需將命令更改爲:if [ "$d1" > "$d2" ] ;then echo 1; else echo 2; fi纔可執行

當使用如下命令時報錯

if [ $d1 > $d2 ] ;then echo 1; else echo 2; fi

因爲實際會執行

if [ 2018-01-02 12:11:00 > 2018-02-03 10:10:10 ] ; then echo 1; else echo 2; fi

需將命令更改爲如下命令纔可執行

if [ "$d1" > "$d2" ] ;then echo 1; else echo 2; fi

雙中括號 [[ 3 == 2 ]]    是腳本解釋程序,在與前面同樣的變量設置下,運行如下程序可正常運行

if [[ $d1 > $d2 ]] ;then echo 1; else echo 2; fi

-gt -lt   作爲數值的比較大小

> <      作爲字符串的比較大小,在[ ] 中使用需使用\>  \<轉義才能保證正確,否則會被當作重定向符號

將字符串作爲命令執行

cmd='date +"%Y-%m-%d %H:%M:%S"'         # 要執行的字符串
使用 `eval $cmd`的方式執行,但必須要有承載結果集的變量,否則會被當作命令再次執行,如:
echo `eval $cmd`
或    result=`eval $cmd`
# 直接$cmd也可以執行部分命令,但對於複雜命令,在特殊符號上會有識別錯誤的問題

靜默安裝debconf

使用debconf-show命令可查看預置項,如:sudo debconf-show oracle-java8-installer可得到如下預置項:

  shared/error-oracle-license-v1-1:
  oracle-java8-installer/not_exist:
* shared/accepted-oracle-license-v1-1: true
* shared/present-oracle-license-v1-1:
  oracle-java8-installer/local:

安裝oracle-java8-installer時就可利用預置項實現,無命令行輸入的靜默安裝,如下爲預置證書確認值true:

# 設置預置值
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
# 執行安裝的過程中會使用該默認值
apt-get install -y oracle-java8-installer

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章