計算機程序其實就是三步:輸入、運算、輸出,這個理論也適應於shell編程。
那么計算機是如何將信息按照比較舒服的格式輸出到屏幕或者KFC的打印紙上的呢!如果讓計算機能夠輸出一種格式,讓人看起來很舒服,那么我們就要學習一下計算機的格式化輸出,讓計算機程序將信息輸出的時候美美噠!讓人一目了然看到需要的信息。
一、shell格式化輸出
一個賞心悅目的界面是一個程序給用戶的第一個映像,好的界面可以讓用戶更加容易上手使用。windows之所以能被個人用戶喜歡就是因為它的界面更加容易和用戶交互,只要用戶能識別文字,懂得點擊鼠標就能操作電腦;而linux之所以無法被廣大個人用戶使用的瓶頸就是圖形界面無法完成所有工作,需要命令配合才可以,這就把非專業用戶拒之門外了,想用就必須去學習命令。
我們在使用shell寫一個程序的時候,如果想讓廣大的用戶都能使用,都能快速上手,那么好的交互界面就太重要了。我們可以使用多種方法開發好的、易交互的界面,常用的工具有:dialog、echo、printf等命令。
本節課主要給大家介紹一個最簡單易用的命令:echo
1、echo命令
功能:將內容輸出到默認顯示設備
應用場景:需要計算機程序輸出的地方
echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。 功能說明:顯示文字。
語法:echo [-ne][字符串]
補充說明:
1、echo會將輸入的字符串送往標准輸出。
2、輸出的字符串間以空白字符隔開,並在最后加上換行號。
OPTIONS:
-n 不要在最后自動換行
-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:
轉義字符
\a 發出警告聲;
\b 刪除前一個字符;
\t 插入tab;
\n 換行且光標移至行首;
\c 最后不加上換行符號;
\f 換行但光標仍舊停留在原來的位置;
\r 光標移至行首,但不換行;
\v 與\f相同;
\ 插入\字符;
\0nnn 打印nnn(八進制)所代表的ASCII字符; 備注:數字0 不要理解成字母o
\xNN 打印NN(十六進制)所代表的ASCII字符;
-–help 顯示幫助
-–version顯示版本信息
你的進制轉換過關嗎?
[root@zutuanxue ~]# echo -e "\0123" #ot(123) = 83 對應ascii表的S
S
[root@zutuanxue ~]# echo -e "\x61" #ox(61) = 97 對應ascii表的a
a
2、輸出顏色字體
腳本中echo顯示內容帶顏色顯示,echo顯示帶顏色,需要使用參數-e
格式如下:
echo -e "\033[字背景顏色;文字顏色m字符串\033[0m"
例如: echo -e “\033[41;36m something here \033[0m”
其中41的位置代表底色, 36m的位置是代表字的顏色
1、字背景顏色和文字顏色之間是英文的
2、文字顏色后面有個m
3、字符串前后可以沒有空格,如果有的話,輸出也是同樣有空格
下面是相應的字和背景顏色,可以自己來嘗試找出不同顏色搭配
例
echo -e “\033[31m 紅色字 \033[0m”
echo -e “\033[34m 黃色字 \033[0m”
echo -e “\033[41;33m 紅底黃字 \033[0m”
echo -e “\033[41;37m 紅底白字 \033[0m”
字顏色:30—–37
echo -e “\033[30m 黑色字 \033[0m”
echo -e “\033[31m 紅色字 \033[0m”
echo -e “\033[32m 綠色字 \033[0m”
echo -e “\033[33m 黃色字 \033[0m”
echo -e “\033[34m 藍色字 \033[0m”
echo -e “\033[35m 紫色字 \033[0m”
echo -e “\033[36m 天藍字 \033[0m”
echo -e “\033[37m 白色字 \033[0m”
字背景顏色范圍:40—–47
echo -e “\033[40;37m 黑底白字 \033[0m”
echo -e “\033[41;37m 紅底白字 \033[0m”
echo -e “\033[42;37m 綠底白字 \033[0m”
echo -e “\033[43;37m 黃底白字 \033[0m”
echo -e “\033[44;37m 藍底白字 \033[0m”
echo -e “\033[45;37m 紫底白字 \033[0m”
echo -e “\033[46;37m 天藍底白字 \033[0m”
echo -e “\033[47;30m 白底黑字 \033[0m”
最后面控制選項說明
\033[0m 關閉所有屬性
\033[1m 設置高亮度
\033[4m 下划線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m — \33[37m
設置前景色
\033[40m — \33[47m 設置背景色
\033[nA 光標上移n行
\033[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\33[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\033[?25h 顯示光標
用法例子 光標下移三行
[root@zutuanxue ~]# echo -e "\033[0m today is fine \033[3B"
today is fine
3、jobs
需求:輸出一個水果購物界面 fruits_shop.sh
案例要點:
- echo輸出縮進問題
- 字體顏色輸出
代碼實現:
job代碼 01_fruits_shop.sh
#!/bin/bash
#
#Author: www.zutuanxue.com
#Release:
#Description:打印水果超市列表
echo -e "\t\t \033[32m Fruits List \033[0m \n"
echo -e "\t \033[31mFruit\033[0m \t\t \033[31mPrice\033[0m \t\t\033[31mWeight\033[0m"
echo -e "\t\033[34m1)Apple\t\t¥10.00\t\t1KG\033[0m"
echo -e "\t\033[34m2)Banana\t¥9.00\t\t1KG\033[0m"
echo -e "\t\033[34m3)Orange\t¥15.20\t\t1KG\033[0m"