簡體   English   中英

Bash 在顯示前測試文件的有效(分頁)行

[英]Bash test effective (paginated) lines of file before displaying

我剛剛創建了一個腳本來顯示文件的內容,根據文件中的有效(后換行)行數,使用catless 需要明確的是,我所擁有的效果很好,我只是好奇是否有人有更好的方便。

if [ $(stat -c '%s' "${ERRLOG}") -gt 0 ]; then
    echo "${ERRLOG}"
    if [ -n "${COLUMNS}" -a "$(grep -o ".{0, ${COLUMNS}}" "${ERRLOG}" | wc -l)" -gt "${ROWS}" ]; then
        less "${ERRLOG}"
    else
        cat "${ERRLOG}"
    fi
fi

雖然我對使用grep -o感到相當自豪,它將同一源代碼行中的多個模式匹配拆分為多行,但我懷疑有更好的方法可以做到這一點,最好是一種不會兩次解析文件內容的方法。 也許與awk有關?

感謝這篇文章$ROWS$COLUMNS的使用

less內置了該功能:

-F--quit-if-one-screen
如果整個文件可以顯示在第一個屏幕上,則導致less自動退出。

您總是想使用的選項可以在$LESS環境變量中設置。

對於less 530 的版本,必須額外使用-X / --no-init選項; 請參閱less 530 的發行說明

如果使用-F並且文件適合一個屏幕,則不要 output 終端初始化序列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM