利用Linux簡單實現彩色進度條

2021-09-19 12:27:53 字數 2190 閱讀 3750

在開始實現進度條之前首先要清楚三個概念:

回車概念( \r ),換行概念( \n ),行緩衝區概念

\r&&\n概念:

在不同的作業系統下回車換行的意義不同:

windows:

unix:

mac os:

如果將unix/mac系統下的檔案在windows裡開啟,所有文字會變成一行;

如果將windows裡的檔案在unix/mac下開啟,在每行的結尾可能會多出乙個^m符號;

行緩衝區概念:

緩衝區分為三種型別:全緩衝,行緩衝和不帶緩衝;

理解了上面的概念,下面來實現進度條。

在實現時用到了usleep()函式和fflush()函式。

usleep()函式的作用是:讓程式睡眠,引數單位預設為秒,包含在」unistd.h」標頭檔案中

fflush()函式的作用是:清除讀寫緩衝區,引數為標準輸入\輸出流 ;

如果不使用fflush()函式,在進度條輸出時,會看到每次重新整理出來的內容是增加的,不是乙個乙個的出現。

#include

#include

int main ();

//用來顯示進度條

int i =0;

const

char

* laber =

"|/-\\"

;//新增乙個閃動的游標,用來表示進度條正在進行

// 這裡的兩個'\'是防止轉義

在普通版的進度條的基礎上進行些許修改,讓進度條的顯示方式更加貼近實際所看到的進度條。

這裡還需要了解一些系統顯示方面的東西:

終端的字元顏色由轉義序列控制,是文字模式下的系統顯示功能,與具體語言無關。

轉義序列以控制字元』esc』開頭。多數轉義序列超過兩個字元,故通常以』esc』和左括號』[『開頭。該起始序列稱為控制序列引導符,通常由』\033[『或』\e[『代替。

通過轉義序列設定終端顯示屬性時,可採用以下格式:

\033[paramm            或         \e[paramm
其中,\033[或\e[為引導轉義序列,param為屬性項,表示可選,多個選項間用分號間隔,m表示設定屬性並結束轉義序列。

常見的屬性項為(具體可根據:man console_codes命令查詢):

顯示序列:

\033

[0m 關閉轉義序列

\033

[1m 粗體或高亮

\033

[5m 閃爍

前景顏色序列:

\033

[30m 黑

\033

[31m 紅

\033

[32m 綠

\033

[33m 黃

\033

[34m 藍

\033

[35m 洋紅

\033

[36m 青

\033

[37m 白

背景顏色序列:

與前景顏色對對應,前景色是30

+,背景色是40

+

下面我們就可以將進度條實現的更加貼近實際所看到的樣式;

Linux下彩色進度條的實現

在linux下安裝軟體的過程中會出現乙個進度條,它通過動態增加一些符號來表示安裝進度。今天我們就來模擬實現一下乙個進度條。在實現進度條之前,首先需要了解一些概念。一.緩衝區 緩衝區分為三種 無緩衝,行緩衝和全緩衝。無緩衝 指沒有緩衝,立即顯示資訊。行緩衝 輸入輸出遇到換行符才進行io操作。全緩衝 輸...

Linux下彩色進度條的實現

實現乙個彩色進度條的前提是要了解linux下如何改變shell的輸出顏色,shell的輸出顏色改變是通過轉義序列完成的。多數轉義序列以控制字元 esc 和左中括號 開頭。該起始序列稱為控制序列引導符,通常由 033 或 e 代替 通過轉義序列設定終端顯示屬性時,採用以下格式 033 屬性m 或 e ...

shell實現彩色進度條

hello,今天分享的是shell實現彩色進度條。進度條,通過顯示字元所佔列印字元的比率,字元的數目的增加,以及長度的變化在顯示器上模擬出進度條的變化 下面 實現的是漸變色,執行時色度不停會發生變化,主要是引數color的變化,隨著i的變化,color 32 i 8 color也在發生變化,所以進度...