當前位置:首頁 » 操作系統 » linux顯示文本

linux顯示文本

發布時間: 2023-07-31 10:05:50

『壹』 linux 怎麼把文字輸出到屏幕上

如果文字在文件中,直接使用more、less、pg、head、tail、cat 、tac等命令直接會將文件中的文本輸出到屏幕上。

『貳』 如何改造 Linux 虛擬終端顯示文字

必須使用 UTF-8 模式 ( 默認 vc->utf=1 即可 )

虛擬控制台的 vc_screenbuf 必須修改以為 glyph 提供至少 16bit 的空間。

圖形控制台需要 vc_font包含更多的字元,不只是 255 個,並提供代碼繪制雙倍寬度的中文字形,字體中的字元按照 UNICODE
排列,這樣 glyph 就是字元的 UNICODE 編碼。

修改虛擬控制台

一開始,我的打算是 vc_screenbuf 修改為 unsigned long long* 類型,32bit 給字元屬性,分別表示 16bit
終端前景色和背景色。glyph 則擁有 31bit 的空間 , 因為漢字的寬度為雙倍的英文字母 ,其中 1 bit 用來表示雙字元寬度。比如 '我' 會表達為
兩個 '我',第二個'我'的最高位為 1:繪制任何字形的時候,只繪制字形的左半部分;如果發現最高位為 1
則繪制字體點陣圖中的右半部分。這樣同樣的繪制代碼可以適應英文字母和漢字。寫入 vc_screenbuf 的時候,
如果是雙倍寬度的字元,需要同時寫入兩份,第二份的最高位置 1 就可以。但是 vc_screenbuf
的格式已經被到處假定為每字元兩個位元組。如此修改導致牽一發動全身。許多艱澀難懂的代碼都依賴 vc_screenbuf 是
每字元兩個位元組的設定,直接修改定義後,光是編譯器能直接檢測出來的就有百餘個地方需要修改,還有更多的邏輯並不能被編譯器檢測出來。如此修改的後果就是會出現許多隱晦的錯誤,非常難於調式。掙扎後,為最終選擇了另一條道路
:

為漢字重新分配一塊 vc_unicode_screenbuf

vc_unicode_screenbuf 緊挨著 vc_screenbuf , 事實上 vc_screenbuf
在分配空間的時候,多分配了一倍的空間,多分配的空間充作 vc_unicode_screenbuf,因此 struct vc_data 里並沒有添加
vc_unicode_screenbuf 成員。 vc_unicode_screenbuf 同樣為每字元 2 個位元組,並不包含字元屬性,所以 2
個位元組如數用來保存 glyph。vc_screenbuf 格式未變,所以 vgacon 不需要修改,這就減少了大量的工作量。向 vc_screenbuf
寫入字元的時候,同時寫入一份到 vc_unicode_screenbuf 。如果是漢字,由於其 glyph 大於 254 , 所以 vc_screenbuf
的那兩個字元 ( 漢字雙倍寬度 ) 實際寫入的是 0xff 和 0xfe ( 故而上文提到是 glyph 大於 254 的字元 ,0xfe 被保留它用了
)。0xff 表示該字元的 glyph 要到 vc_unicode_screenbuf 提取,然後繪制左半部分;0xfe 表示該字元的 glyph 要到
vc_unicode_screenbuf 提取,然後繪制右半部分。對於 glyph 大於 254 但是又不是雙倍寬度的字元,就不需要 0xfe
作陪了。比如屏幕上顯示的文字是黑底白字的 「牛 B」 , vc_screenbuf 的內容就是 「0x00ff, 0x0ffe, 0x0f42 」 ,
vc_unicode_screenbuf 的內容則是 「牛 , 牛 ,b」
。這是因為一個漢字為兩倍的英文字母寬度。在屏幕文字緩沖區上也必須佔用兩個字元的位置。並且必須有一種機制能知道應該繪制左半部分和右半部分,我使用的就是 0xff
和 0xfe。

修改圖形控制台繪制代碼

要修改的地方只有 3 個。

struct console_font 添加 charcount 成員。將主線內核的字體設置為 charcount = 255。 主線內核帶的字體都是
255 個 glyph 的,所以沒有添加字元個數的必要。不過我們即將要添加的字體會有數萬字元。

添加一個新的字體,復蓋 UNICODE BMP 基本區域的所有符號。

修改字元繪制代碼,添加 vc_unicode_screenbuf 的支持。

字元繪制代碼的修改比較繁瑣,代碼分布在 drivers/video/console/ 下的多個文件中。fbcon_putc(s) 由由
vc->vc_sw->con_putc(s) 調用, fbcon_putc(s) 轉而調用分散於 drivers/video/console/
的多個 puts 實現。因為終端要支持 console_rotate , decoration , timing , 故而每種模式下的繪制實現都是不同的。我拿
drivers/video/console/bitblt.c 最常用的不傾斜、不加裝飾等的終端模式為例來講解繪圖部分的修改。由於中文字體為 16x16
點陣,是對齊的字體,故而其繪制代碼為 bit_putcs_aligned() 原先的代碼以 glyph 為下標到 vc->vc_font->data
獲得字體數據,然後調用 fb_pad_aligned_buffer 執行塊拷貝操作。我的修改很簡單,原來獲得字體數據的代碼修改後放入 font_bits()
輔助函數。 在 font_bits 里,要判斷 glyph 是否為 0xff 或者 0xfe, 如果不是,使用 glyph 為下標獲得字體的左半部分後並返回。
如果是,則從 vc_unicode_screenbuf 獲得真正的 glyph 數值,然後再依據現有的 glyph 是 0xff 還是 0xfe
去獲得字體的右半部分還是左半部分返回。font_bits 獲得字體數據後執行 fb_pad_aligned_buffer 塊拷貝。需要修改的地方還有
drivers/video/console/fbcon_ccw.c fbcon_cw.c fbcon_ub.c 。依原理進行修改即可。

虛擬終端的不足之處

雖然費盡心機添加了中文支持,那隻是一個 workaround ,
並不能算真正的支持。要真正的支持必須徹底重寫虛擬終端和控制台。而要支持中文,就需要更進一步,全面支持 UNICODE ,
包括支持從右向左的書寫習慣。在內核里實現一個全面支持 UNICODE
的控制台並不是一件容易的事情,何況內核的政策也不允許將如此龐大的字型檔裝入內核。於是乎,這里出現了死胡同。KMS 和 Wayland
的出現讓這死胡同似乎有了個完美的解。
System Compositor?

System Compositor 是一個 wayland compositor,只是運行於系統全局范圍。

為了懶人我這里稍微講解一下 wayland compositor 吧。 Wayland 不同於 X , 在 wayland 的世界裡,只有
compositor 和 client。Client 利用各種 API (wayland 給出的示例使用的是 OpenGL ES, 但其實 wayland
並不限制使用的繪圖 API 類型 ) 進行窗口繪圖,然後將窗口的繪制結果直接提交給 compositor 合成到屏幕上。這樣 wayland 本身就不包含繪圖
API 而大大簡化了 wayland 的設計。Wayland compositor 可以同 X 一樣操作顯卡向屏幕輸出合成後的結果,也可以作為另一個
wayland compositor 的 client。

對於多賬戶同時登錄的實現,固然可以讓每一個本地 GUI 會話開啟一個 wayland compositor,但是存在更好的辦法就是固定開啟一個
system compositor。而讓所有用戶會話的 wayland compositor 再作為 system compositor 的 client.
藉由 system compositor 的合成效果,進行快速用戶切換也可以進行一些視覺效果。而且 Xorg 本身也已經支持作為 wayland client
運行,這樣可以使用傳統的 X 提供桌面,而讓 wayland system compositor 實現終端切換。這還有一個好處,只有 wayland
system compositor 是以 root 運行的,而用戶會話的 compositor 或 X 就不必以 root 許可權運行。因為 Wayland
非常輕量,所以 system compositor 可以作為系統級服務常駐內存運行。而因為有了 system compositor ,
內核也不再需要實現虛擬終端了:只需要實現終端模擬器作為 system compositor 的 client
。由於是在用戶空間實現的,所有可以加入 UNICODE,矢量字體,國際化的書寫習慣等等的支持,再也不用受限於內核啦。 Wayland
還是一個非常年輕的項目,Wayland system compositor 目前還只是設想中的概念,需要更多的人關注參與。筆者相信不久的將來 wayland

『叄』 linux查看較長或較短的純文本文件使用哪些命令

在命令行里顯示文本文件內容:

cat:在命令行里顯示文本文件內容,可以滾屏的(但是不方便把內容輸出到其他文件,所以一般腳本內部都用cat,less可以在調用腳本的時候用)。

less:在命令行里編輯文本文件。

vi:在圖形界面打開文本文件。

gedit,kate等等:在圖形界面打開任意文件或者url(gnome)。

命令作用

grep、fgrep和egrep命令這組命令以指定模式搜索文件,並通知用戶在什麼文件中搜索到與指定的模式匹配的字元串,並列印出所有包含該字元串的文本行,在該文本行的最前面是該行所在的文件名。grep命令一次只能搜索一個指定的模式;egrep命令檢索擴展的正則表達式(包括表達式組和可選項);fgrep命令檢索固定字元串,它不識別正則表達式,是快速搜索命令。

『肆』 Linux文本操作常用命令

在Linux系統里常用於文本查看、操作、統計的命令:

通過多敲鍵盤,形成手感 肌肉記憶 ,熟練掌握這些命令,在以後生信分析中游刃有餘。以下是每個命令的詳細的介紹(主要是跟著 生信技能樹小郭老師 學習做的筆記)

接下來通過示例把10個命令的常用參數和用法展示出來:

參數的用法介紹:

注意事項:

cat 命令可以 查看文本 ,也可以 編輯文本 ,編輯文本要加 > 符號,退出時,另起一行,按 control C 退出

zcat可以查看壓縮的文本文件,tac逆向查看

結合 管道符| 使用

head / tail -n :查看文件的前 / 後 n 行,默認 10 (在R語言里head和tail默認是前6行)。

less命令用得最多 ,more命令用得比較少

3.1 less命令

less [參數] 文件名

less命令重要的補充用法1

需要注意 退出 :只要使用less命令, 按q鍵

less命令重要的補充用法2

參數用法:

less命令 不加參數 查看文件:

less命令加 -N參數 查看文件:顯示行號

less命令加 -S參數 查看文件:單行顯示,非常規整

對比:less和cat命令顯示文本行號的用法:less -N,cat -n

3.2 more命令

**more ** 逐頁查看,按空格翻頁,按回車換行 ,more命令一般很少用,熟練掌握less命令就好

查看壓縮文件

wc 統計字元是也把換行符統計進去,但是別的命令不一定會把換行符算進去,。

常見參數:

切記:用less命令,按q退出

cut命令是按關鍵詞來切的

常見參數:

排列前:

排列後:

解釋:1和0比,1大;7和0比,7大…在sort字典排序里,100816比1737小,所以100816排在前面。

命令行查看一個表格結構時,因為製表符對齊的原因,出現一個錯位的現象。還有 字典排序 可能和我們平時的認知不一樣,所以 加上-n參數 讓數值有數學意義上的大小來排序

uniq命令去重,只有兩行出現重復,而且是相鄰的兩行,如果不相鄰,即使出現兩行一模一樣,不會去重。

uniq命令通常和sort命令搭配使用

換其它文件試試

總之,uniq命令使用時經常和sort一起

常見參數:

常見用法1:

paste file1 file2

-s :按行合並 演示

常見用法2 : paste - -

常見參數:

要養成一個好習慣,原始數據不要輕易修改,修改的東西另外保存,文本保存用> (重定向)或是 >>(追加)

1. less 查看 example.gtf ,然後管道符傳遞給 wc

2. 截取 example.gtf 9 列的內容

3. 在第2步的基礎上截取分號分割的第1列

4. 在第3步的基礎上排序、去重復並統計

5. 在第4步的基礎上,將空格替換成製表符

補充小知識

清屏 :control L

查看歷史(輸入過的)命令 :history

『伍』 如何在Linux中more命令查看文本文檔

1.命令格式:
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
2.命令功能:
more命令和cat的功能一樣都是查看文件里的內容,但有所不同的是more可以按頁來查看文件的內容,還支持直接跳轉行等功能。
3.命令參數:
+n 從笫n行開始顯示
-n 定義屏幕大小為n行
+/pattern 在每個檔案御橡顯示前搜尋該字此拆譽串(pattern),然後從該字串前兩行之後開始顯示
-c 從頂部清屏,然後顯示
-d 提示「Press space to continue,』q』 to quit(按空格鍵繼續,按q鍵退出)」,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字元
-p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
-s 把連續的多個空行顯示為一行
-u 把文件內容中的下畫線去掉
4.常用操作命令:
Enter 向下n行,需要定義。森段默認為1行
Ctrl+F 向下滾動一屏
空格鍵 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
V 調用vi編輯器
!命令 調用Shell,並執行命令
q 退出more
5.命令實例:
實例1:顯示文件中從第3行起的內容
命令:
more +3 log2012.log
輸出:
[root@localhost test]# cat log2012.log
2012-01
2012-02
2012-03
2012-04-day1
2012-04-day2
2012-04-day3

======[root@localhost test]# more +3 log2012.log
2012-03
2012-04-day1
2012-04-day2
2012-04-day3

======[root@localhost test]#

實例2:從文件中查找第一個出現"day3"字元串的行,並從該處前兩行開始顯示輸出
命令:
more +/day3 log2012.log
輸出:
[root@localhost test]# more +/day3 log2012.log
...skipping
2012-04-day1
2012-04-day2
2012-04-day3
2012-05
2012-05-day1

======[root@localhost test]#

『陸』 linux中顯示文件內容用什麼命令

1.tac命令用於反向顯示文件內容
tac命令的功能為反向顯示文件內容,從最後一行開始讀取文本並進行反向輸出,。命令以一行文本為單位的,每行文本的順序不會改變的。
2.more命令用分頁顯示文件內容
more命令會一頁一頁地顯示文件內容。在交互模式下,使用more命令打開文本之後,會進入一個基於vi的交互界面,在這里可以使用部分vi編輯器的功能,還可以切換到vi編輯器。但more的功能還是比較簡單的,有一個增強版的命令是less。
3.less命令用分頁顯示文件內容
less命令是more命令的高級版本。less命令可以分頁顯示文件內容,但比more的功能更強大。less命令在讀取文件內容時,並不是一次性將整個文件載入之後再顯示,而是會根據需要來載入文件的內容,打開文件速度快。而且less命令支持上下鍵向前或向後翻看文件,查看文件內容更加方便。在交互模式下,less命令也是基於more命令和vi命令的,在這里可以使用vi編輯器的部分功能,還可以切換到vi編輯器。

『柒』 linux常用的文本內容顯示命令有哪些

cat:從第一行開始顯示文本內容(適用於內容較少的)
tac:從最後一行開始顯示,是 cat 的逆順序
more:一頁一頁的顯示文本內容(適用於內容較多的)
less:與 more 類似,但是比 more 更好的是,它可以往前翻頁!
head:只看文本的前面幾行
tail:只看文本的後面幾行
nl:顯示文本內容與行號

熱點內容
手機刪除軟體為什麼存儲空間不足 發布:2025-03-13 17:18:37 瀏覽:606
wifi密碼怎麼顯示密碼錯誤 發布:2025-03-13 17:02:21 瀏覽:316
怎麼清理手機微信存儲空間 發布:2025-03-13 16:52:08 瀏覽:798
教學直播源碼 發布:2025-03-13 16:52:06 瀏覽:446
代碼是否能進行編譯 發布:2025-03-13 16:48:12 瀏覽:858
sql2005安裝組件 發布:2025-03-13 16:33:54 瀏覽:231
JavastreamList 發布:2025-03-13 16:32:57 瀏覽:125
多sql 發布:2025-03-13 16:09:04 瀏覽:240
按鍵精靈導入腳本失靈 發布:2025-03-13 15:59:15 瀏覽:548
看雪加密與解密 發布:2025-03-13 15:37:56 瀏覽:550