[英]Bash test effective (paginated) lines of file before displaying
我剛剛創建了一個腳本來顯示文件的內容,根據文件中的有效(后換行)行數,使用cat
或less
。 需要明確的是,我所擁有的效果很好,我只是好奇是否有人有更好的方便。
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.