終端打印
shebang是一個文本行,其中#!位於解釋器路徑之前。/bin/bash是Bash的解釋器命令路徑。 有兩種運行腳本的方式。一種是將腳本作為bash的命令行參數,另一種是授予腳本執行權
限,將其變為可執行文件。 將腳本作為命令行參數時的運行方式如下(#號後面的文本是註釋,不必輸入到命令行中):
$ bash script.sh #假設腳本位於當前目錄下 或者
$ bash /home/path/script.sh #使用script.sh的完整路徑 如果將腳本作為bash的命令行參數來運行,那麽就用不著腳本中的shebang了。
要是有需要的話,可以利用shebang來實現腳本的獨立運行。對此必須設置腳本的可執行權 限,這樣它就可以使用位於#!之後的解釋器路徑來運行了。就像這樣:
$ chmod a+x script.sh
該命令賦予所有用戶script.sh文件的可執行權限。這個腳本能以下列方式執行: $ ./script.sh #./表示當前目錄
$ /home/path/script.sh #使用腳本的完整路徑 內核會讀取腳本的首行並註意到shebang為#!/bin/bash。它識別出/bin/bash並在內部像這
樣執行該腳本:
$ /bin/bash script.sh
當啟動shell時,它一開始會執行一組命令來定義諸如提示文本、顏色等各類設置。這組命令 來自位於用戶主目錄中的腳本文件~/.bashrc(對於登錄shell則是~/.bash_profile)。Bash還維護了一 個歷史記錄文件~/.bash_history,用於保存用戶運行過的命令。
終端是交互式工具
echo 234;
echo ‘123‘;
echo "123";
前兩種效果是一致的 直接打印原文
使用雙引號會識別裏面的特殊字符 需要使用轉義字符進行轉義
$ echo "cannot include exclamation - ! within double quotes"
bash: !: event not found error
每種方法的副作用如下所述。
-
? 使用不帶引號的echo時,沒法在所要顯示的文本中使用分號(;),因為分號在Bash shell 中被用作命令定界符。
-
? 以echo hello;hello為例,echo hello被視為一個命令,第二個hello則被視為另一 個命令。
-
? 變量替換在單引號中無效,在下一則攻略中會詳細討論。
$ printf "Hello world"
printf使用引用文本或由空格分隔的參數。我們可以在printf中使用格式化字符串,還可以指 定字符串的寬度、左右對齊方式等。在默認情況下,printf並不像echo命令一樣會自動添加換 行符,我們必須在需要的時候手動添加,比如在下面的腳本中:
#!/bin/bash #文件名: printf.sh
printf "%-5s %-10s %-4s\n" No 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
我們會得到如下格式化的輸出:
No Name Mark
1 Sarath 80.35
2 James 91.00
3 Jeff 77.56
%-5s 是 格式替換符
思考 echo prinft 是不是可以 跟參數?
終端打印