linux 终端控制-- 多彩输出 格式排版
生活随笔
收集整理的這篇文章主要介紹了
linux 终端控制-- 多彩输出 格式排版
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
linux 終端控制-- 多彩輸出 格式排版 在unix/linux的終端下,怎么控制終端輸出的顏色和格式呢,當然了有專門的工具,tput,但是能被terminal直接讀懂的格式化字符串更通用。
先來個實際的例子,在屏幕的最上部的右側輸出當前時間,一秒刷新一次??赡軙氲绞褂妙愃芅curse的框架完成,不過這有簡單的遵守terminal控制格式的字符流規則,我們為什么不用呢。
while true; do echo -ne "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u"; sleep 1; done & 當然,有個tput的版本:
while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done & 這里我寫了個格式串的說明
終端顯示的帶有ansi控制的字符串 := \(<控制單元>[字符串]\)\+
??控制單元 := \(<起始標記><控制元素>\)\+<結束標記>
??起始標記 := \e \| \x1b \| \033
??結束標記 := m
??字符串 := 要輸入的字符
????控制元素:= <元素起始標記>\[ 0 1 4 5 7 8 前景色;背景色 背景色;前景色 \|
??????????????光標相對位置控制 光標坐標 2J K s u ?25l??25h \]
????元素起始標記:=[
??????前景色 := 30-37 # 30:黑 31:紅 32:綠 33:黃 34:藍色 35:紫色 36:深綠 37:白色
??????背景色 := 40-47 # 40:黑 41:深紅 42:綠 43:黃色 44:藍色 45:紫色 46:深綠 47:白色
??????光標坐標 := y;xH # 不要忘記H
??????光標相對位置控制 := <n行><方向>
?????????n行 := 整數
?????????方向 := \[ A B C D \] #分別代表了向 上 下 右 左
??????0 := 關閉所有屬性
??????1 := 設置高亮度
??????4 := 下劃線
??????5 := 閃爍
??????7 := 反顯
??????8 := 消隱
??????2J := 清屏
??????K := 清除從光標到行尾的內容
??????s := 保存光標位置
??????u := 恢復光標位置
???????25I := 隱藏光標
???????25H := 顯示光標 這樣解析下bash版本的字串 "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u"?。
\e[s??:保存光標位置
\e[0;$((COLUMNS-27))H? 在終端第一行的倒數27個字符的位置開始打印字符
$(date)? 打印date命令的輸出
[u?恢復光標位置
這樣控制太爽了!!!
我寫的這種格式看著不爽,參考這個
例子
輸出白底紅字的hellow word
#bash版?
echo -e '\033[31;47;1mhello word\033[0m'
或者
printf '\e[31;47;1mhello word\033[0m \n' c 版本
#include <stdio.h>
int main(){
????printf("\e[31;47;1mhello word\033[0m \n");
????return 0;
} python版本
print "\033[31;47;1mhello word\033[0m \n" 發現 python中\e 是不可以使用的。
在PS1中我們可以讓提示更豐富多彩
例如我的PS1變量為
PS1="\[\e]2 \u | \d \t | \H | \w\a\e[40;32;1m\]\h:\[\e[40;35;1m\]\W\[\e[40;33;1m\]\\$\[\e[0m\] " 如果在設置了PS1后,不能正確的計算自動換行,那么用'\['和'\]'吧轉義序列括起來試試
ok了
遇到中文字符就悲劇了,把標題中含有中文字符的選項去掉就行了,這是我在ubuntu的中文環境下測試的
PS1="\[\e]2 \u | \t | \H | \w \e[40;32;1m\]\h:\[\e[40;35;1m\]\W\[\e[40;33;1m\]\\$\[\e[0m\] "
參考
例子 http://www.commandlinefu.com/commands/view/11504/put-a-console-clock-in-top-right-corner 介紹 http://blog.sina.com.cn/s/blog_704836f40101awsd.html tpu 介紹 http://www.ibm.com/developerworks/cn/aix/library/au-learningtput/index.html? 很詳細的 http://venus585625.iteye.com/blog/1174567? 與50位技術專家面對面20年技術見證,附贈技術全景圖
先來個實際的例子,在屏幕的最上部的右側輸出當前時間,一秒刷新一次??赡軙氲绞褂妙愃芅curse的框架完成,不過這有簡單的遵守terminal控制格式的字符流規則,我們為什么不用呢。
點擊(此處)折疊或打開
\e[s??:保存光標位置
\e[0;$((COLUMNS-27))H? 在終端第一行的倒數27個字符的位置開始打印字符
$(date)? 打印date命令的輸出
[u?恢復光標位置
這樣控制太爽了!!!
我寫的這種格式看著不爽,參考這個
| 字背景顏色 | 字顏色 | ANSI控制碼的說明 |
| 40:黑? 41:深紅? 42:綠? 43:黃色? 44:藍色? 45:紫色? 46:深綠? 47:白色? | 30:黑? 31:紅? 32:綠? 33:黃? 34:藍色? 35:紫色? 36:深綠? 37:白色? | 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 清除從光標到行尾的內容? \033[s 保存光標位置? \033[u 恢復光標位置? \033[?25l 隱藏光標? \033[?25h 顯示光標 |
例子
輸出白底紅字的hellow word
#bash版?
在PS1中我們可以讓提示更豐富多彩
例如我的PS1變量為
ok了
遇到中文字符就悲劇了,把標題中含有中文字符的選項去掉就行了,這是我在ubuntu的中文環境下測試的
PS1="\[\e]2 \u | \t | \H | \w \e[40;32;1m\]\h:\[\e[40;35;1m\]\W\[\e[40;33;1m\]\\$\[\e[0m\] "
參考
例子 http://www.commandlinefu.com/commands/view/11504/put-a-console-clock-in-top-right-corner 介紹 http://blog.sina.com.cn/s/blog_704836f40101awsd.html tpu 介紹 http://www.ibm.com/developerworks/cn/aix/library/au-learningtput/index.html? 很詳細的 http://venus585625.iteye.com/blog/1174567? 與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的linux 终端控制-- 多彩输出 格式排版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache手工编译安装(内附软件包)
- 下一篇: 重温CLR(八 ) 泛型