日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

      歡迎訪問 生活随笔!

      生活随笔

      當(dāng)前位置: 首頁 >

      linux 终端控制-- 多彩输出 格式排版

      發(fā)布時間:2025/3/17 34 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 linux 终端控制-- 多彩输出 格式排版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
      linux 終端控制-- 多彩輸出 格式排版 在unix/linux的終端下,怎么控制終端輸出的顏色和格式呢,當(dāng)然了有專門的工具,tput,但是能被terminal直接讀懂的格式化字符串更通用。
      先來個實際的例子,在屏幕的最上部的右側(cè)輸出當(dāng)前時間,一秒刷新一次。可能會想到使用類似Ncurse的框架完成,不過這有簡單的遵守terminal控制格式的字符流規(guī)則,我們?yōu)槭裁床挥媚亍?br />
    1. while true; do echo -ne "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u"; sleep 1; done &
    2. 當(dāng)然,有個tput的版本:
    3. while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &
    4. 這里我寫了個格式串的說明

      點擊(此處)折疊或打開

    5. 終端顯示的帶有ansi控制的字符串 := \(<控制單元>[字符串]\)\+
    6. ??控制單元 := \(<起始標(biāo)記><控制元素>\)\+<結(jié)束標(biāo)記>
    7. ??起始標(biāo)記 := \e \| \x1b \| \033
    8. ??結(jié)束標(biāo)記 := m
    9. ??字符串 := 要輸入的字符
    10. ????控制元素:= <元素起始標(biāo)記>\[ 0 1 4 5 7 8 前景色;背景色 背景色;前景色 \|
    11. ??????????????光標(biāo)相對位置控制 光標(biāo)坐標(biāo) 2J K s u ?25l??25h \]
    12. ????元素起始標(biāo)記:=[
    13. ??????前景色 := 30-37 # 30:黑 31:紅 32:綠 33:黃 34:藍(lán)色 35:紫色 36:深綠 37:白色
    14. ??????背景色 := 40-47 # 40:黑 41:深紅 42:綠 43:黃色 44:藍(lán)色 45:紫色 46:深綠 47:白色
    15. ??????光標(biāo)坐標(biāo) := y;xH # 不要忘記H
    16. ??????光標(biāo)相對位置控制 := <n行><方向>
    17. ?????????n行 := 整數(shù)
    18. ?????????方向 := \[ A B C D \] #分別代表了向 上 下 右 左
    19. ??????0 := 關(guān)閉所有屬性
    20. ??????1 := 設(shè)置高亮度
    21. ??????4 := 下劃線
    22. ??????5 := 閃爍
    23. ??????7 := 反顯
    24. ??????8 := 消隱
    25. ??????2J := 清屏
    26. ??????K := 清除從光標(biāo)到行尾的內(nèi)容
    27. ??????s := 保存光標(biāo)位置
    28. ??????u := 恢復(fù)光標(biāo)位置
    29. ???????25I := 隱藏光標(biāo)
    30. ???????25H := 顯示光標(biāo)
    31. 這樣解析下bash版本的字串 "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u"?。
      \e[s??:保存光標(biāo)位置
      \e[0;$((COLUMNS-27))H? 在終端第一行的倒數(shù)27個字符的位置開始打印字符
      $(date)? 打印date命令的輸出
      [u?恢復(fù)光標(biāo)位置

      這樣控制太爽了!!!
      我寫的這種格式看著不爽,參考這個
      字背景顏色 字顏色 ANSI控制碼的說明
      40:黑?
      41:深紅?
      42:綠?
      43:黃色?
      44:藍(lán)色?
      45:紫色?
      46:深綠?
      47:白色?
      30:黑?
      31:紅?
      32:綠?
      33:黃?
      34:藍(lán)色?
      35:紫色?
      36:深綠?
      37:白色?
      033[0m 關(guān)閉所有屬性?
      \033[1m 設(shè)置高亮度?
      \033[4m 下劃線?
      \033[5m 閃爍?
      \033[7m 反顯?
      \033[8m 消隱?
      \033[30m -- \33[37m 設(shè)置前景色?
      \033[40m -- \33[47m 設(shè)置背景色?
      \033[nA 光標(biāo)上移n行?
      \033[nB 光標(biāo)下移n行?
      \033[nC 光標(biāo)右移n行?
      \033[nD 光標(biāo)左移n行?
      \033[y;xH設(shè)置光標(biāo)位置?
      \033[2J 清屏?
      \033[K 清除從光標(biāo)到行尾的內(nèi)容?
      \033[s 保存光標(biāo)位置?
      \033[u 恢復(fù)光標(biāo)位置?
      \033[?25l 隱藏光標(biāo)?
      \033[?25h 顯示光標(biāo)

      例子
      輸出白底紅字的hellow word
      #bash版?

    32. echo -e '\033[31;47;1mhello word\033[0m'
    33. 或者
    34. printf '\e[31;47;1mhello word\033[0m \n'
    35. c 版本

    36. #include <stdio.h>

    37. int main(){

    38. ????printf("\e[31;47;1mhello word\033[0m \n");
    39. ????return 0;
    40. }
    41. python版本
    42. print "\033[31;47;1mhello word\033[0m \n"
    43. 發(fā)現(xiàn) python中\(zhòng)e 是不可以使用的。

      在PS1中我們可以讓提示更豐富多彩
      例如我的PS1變量為

    44. 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\] "
    45. 如果在設(shè)置了PS1后,不能正確的計算自動換行,那么用'\['和'\]'吧轉(zhuǎn)義序列括起來試試
      ok了
      遇到中文字符就悲劇了,把標(biāo)題中含有中文字符的選項去掉就行了,這是我在ubuntu的中文環(huán)境下測試的

    46. PS1="\[\e]2 \u | \t | \H | \w \e[40;32;1m\]\h:\[\e[40;35;1m\]\W\[\e[40;33;1m\]\\$\[\e[0m\] "

    47. 參考
      例子 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? 很詳細(xì)的 http://venus585625.iteye.com/blog/1174567? 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

      總結(jié)

      以上是生活随笔為你收集整理的linux 终端控制-- 多彩输出 格式排版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。