Kombiniert mehrere Ideen aus anderen Antworten plus ein paar andere Tricks, wird dies die Datei ohne den Bildschirm zu löschen oder scrollen (mit Ausnahme des ersten Zyklus, wenn die Eingabeaufforderung am unteren Rand des Bildschirms ist). die Anzahl der Sekunden zwischen Aktualisierungen, Startlinie und der Anzahl der Zeilen als Argumente
up=$(tput cuu1)$(tput el); while true; do (IFS=$'\n'; a=($(</proc/acpi/battery/BAT1/state)); echo "${a[*]}"; sleep 1; printf "%.0s$up" ${a[@]}); done
Es ist natürlich etwas, was man nicht von Hand eingeben würde, so können Sie es mit einer Funktion machen, die die Dateinamen führen.
watchit() {
local up=$(tput cuu1)$(tput el) IFS=$'\n' lines
local start=${3:-0} end
while true
do
lines=($(<"$1"))
end=${4:-${#lines[@]}}
echo "${lines[*]:$start:$end}"
sleep ${2:-1}
# go up and clear each line
printf "%.0s$up" "${lines[@]:$start:$end}"
done
}
Run es:
watchit /proc/acpi/battery/BAT1/state .5 0 6
Das zweite Argument (Sekunden zwischen Aktualisierungen) standardmäßig auf 1. Die dritte Argument (Ausgangsleitung) automatisch auf 0.Das vierte Argument (Anzahl der Zeilen) wird standardmäßig auf die gesamte Datei angewendet. Wenn Sie die Anzahl der Zeilen weglassen und die Datei wächst, kann es zu einem Scrolling kommen, um die neuen Zeilen aufzunehmen.
Bearbeiten: Ich habe ein Argument hinzugefügt, um die Häufigkeit von Updates zu steuern.
haben Sie versucht zu sehen? – Rozuur
Ich hatte das vorher nicht als Anregung bekommen. –
Es gab viele richtige Antworten darauf. Danke an gabuzo, SiegeX, Jander und Omnifarious. Aber derjenige, der am ehesten meinem Wunsch entsprach, stammte von Dennis Williamson. Vielen Dank, dass Sie sich die Zeit genommen haben! –