日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發(fā)布時間:2025/3/17 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 终端控制-- 多彩输出 格式排版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
linux 終端控制-- 多彩輸出 格式排版 在unix/linux的終端下,怎么控制終端輸出的顏色和格式呢,當然了有專門的工具,tput,但是能被terminal直接讀懂的格式化字符串更通用。
先來個實際的例子,在屏幕的最上部的右側輸出當前時間,一秒刷新一次。可能會想到使用類似Ncurse的框架完成,不過這有簡單的遵守terminal控制格式的字符流規(guī)則,我們?yōu)槭裁床挥媚亍?br />
  • 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行 := 整數(shù)
  • ?????????方向 := \[ A B C D \] #分別代表了向 上 下 右 左
  • ??????0 := 關閉所有屬性
  • ??????1 := 設置高亮度
  • ??????4 := 下劃線
  • ??????5 := 閃爍
  • ??????7 := 反顯
  • ??????8 := 消隱
  • ??????2J := 清屏
  • ??????K := 清除從光標到行尾的內(nèi)容
  • ??????s := 保存光標位置
  • ??????u := 恢復光標位置
  • ???????25I := 隱藏光標
  • ???????25H := 顯示光標
  • 這樣解析下bash版本的字串 "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u"?。
    \e[s??:保存光標位置
    \e[0;$((COLUMNS-27))H? 在終端第一行的倒數(shù)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 清除從光標到行尾的內(nèi)容?
    \033[s 保存光標位置?
    \033[u 恢復光標位置?
    \033[?25l 隱藏光標?
    \033[?25h 顯示光標

    例子
    輸出白底紅字的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"
  • 發(fā)現(xiàn) python中\(zhòng)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的中文環(huán)境下測試的

  • 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 终端控制-- 多彩输出 格式排版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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