1. 程式人生 > >Linux指令碼攻略學習筆記(一)

Linux指令碼攻略學習筆記(一)

前言

繼學習Oracle高階程式設計後,在Linux環境下安裝Mysql時,徹底認識到Linux的欠缺。我們都知道Linux在伺服器領域一直處於領先地位,這很大程度要歸功於它的穩定性,安全性及其較低的總擁有成本(TCO)。經過一個為老師的推薦選擇了《Linux指令碼攻略》這邊實用性很強的書開始學習。Linux學習任重而道遠,吾將上下而求索。

一、Linux Shell簡介

Shell指令碼通常是一個以shebang(#!/bin/bash)起始的文字檔案,其中/bin/bash是Bash的直譯器命令路徑。 Shell指令碼有兩種執行方式: 一種是將指令碼作為bash的命令列引數,如:

$ bash script.sh #假設指令碼位於當前目錄下
$ bash /home/path/script.sh #使用指令碼的完整路徑

另一種則是授予指令碼執行許可權,將其變為可執行檔案。

$ chmod a+x script.sh #賦予指令碼執行許可權
$ ./script.sh; #使用相對路徑
$ /home/path/script.sh #使用完整路徑

在Bash中,每個命令或是命令序列是通過分號或換行符來分隔的,如$ cmd1;cmd2 註釋部分以#開始,一直延續到行尾。

二、終端列印

終端是互動式工具,使用者可以通過它與shell環境進行互動。在終端中列印文字是絕大多數 shell指令碼和工具日常需要執行的基本任務。在這則攻略中我們會看到, 可以使用各種方法,採用 各種格式進行列印echo 是用於終端列印的基本命令。在預設情況下, echo 在每次呼叫後會新增一個換行符。

2.1 例項演示

1、帶單引號

$ echo 'Hello World'

在這裡插入圖片描述

2、雙引號

$ echo "Hello World"

在這裡插入圖片描述

3、不帶引號

$ echo Hello World

在這裡插入圖片描述 對於符號!不能放到雙引號中,不然會報錯。

$ echo "Hello World!"

在這裡插入圖片描述

需要使用轉義符號 或者!與雙引號間加上空格

echo "Hello World! "

在這裡插入圖片描述

2.2 各個用法注意事項

1、使用不帶引號的echo 時,沒法在所要顯示的文字中使用分號(? 因為分號在bash shell 中被用作命令定界符。 以為 echo Hello; Hello 為例 echo Hello被視為一個命令,第二個Hello則被視為另一個命令。 2、變數替換在單引號中無效 3、雙引號的就是上面所說的!。

2.3 其他列印命令printf

另一終端列印的命令是printf。printf使用的引數和C語言中的printf函式一樣。預設情況下printf並不像echo命令一樣會自動新增換行符,需要手動新增。 printf使用引用文字或空格分隔的引數。 /usr/local/bin/wanghao 目錄下建立printf.sh指令碼

內容如下:

#!/bin/bash
#檔名:printf.sh
printf "%-5s %-10s %-4s\n" number name mark
printf "%-5s %-10s %-4.2f\n" 1 sarath  80.3456
printf "%-5s %-10s %-4.2f\n" 2 james  90.9989
printf "%-5s %-10s %-4.2f\n" 3 jeff   77.564

$ chmod a+x printf.sh #賦予指令碼執行許可權

在這裡插入圖片描述

在/usr/local/bin/wanghao 目錄下執行printf.sh指令碼

   ./printf.sh

在這裡插入圖片描述

printf 原理: %s、%c、%d和%f都是格式替換符號。其所對應的引數可以置於帶引號的格式字串之後。 %-5s 指明瞭一個格式為左對齊寬度為5的字串替換(-表示左對齊),如果不用-指定對齊方式,字串就採用右對齊形式。寬度指定了保留給某個變數的字元數。對於name而言,保留寬度是10.如果內容不足10個字元,餘下的則以空格符填充。 對於浮點數,可以使用其他引數對小數部分進行舍入。 對於mark欄位,將其格式化為%-4.2f,其中.2指定保留2位小數。 換行符為(\n)