Próbuję użyć tmux i prostych skryptów bashowych, aby uzyskać bardzo prosty pasek stanu w moich terminalach - więc okna są bardzo małe (1 lub 2 linie wysokości i potencjalnie mniej niż 10 znaków szerokości).
Polecenie powodujące dziwne zachowanie to:
echo "$(top -bn 1 | awk "/^%Cpu/{print $2}")%"
który ma po prostu wydrukować coś takiego 1.8%
. W terminalu o normalnym rozmiarze (z lub bez tmux) działa dobrze, ale kiedy zmniejszam terminal, w pewnym momencie zaczyna odcinać liczbę i wyświetla tylko %
. To może nie wydawać się zbyt dziwne, ale kiedy umieszczę jakiś tekst wokół tego polecenia, jak
echo "ab$(top -bn 1 | awk "/^%Cpu/{print $2}"cd"
dostaję abcd
jako wyjście podczas zmniejszania terminalu. Więc to ma wpływ tylko na część $(...)
to zostaje odcięte.
Również gdy drukuję dwie linie:
echo "$(top -bn 1 | awk "/^%Cpu/{print $2}"%"
echo "20.5%"
to się wydrukuje 20.5%
dobrze, nawet rozbij go na kilka linii
2
0
.
5
%
zamiast po prostu nie drukować jego części. Pierwsza linia pokazuje jednak tylko %
bez żadnej liczby.
Jakiś pomysł, co to powoduje i jak uzyskać liczby do wyświetlenia?
Odpowiedzi:
0 dla odpowiedzi № 1Domyślnie, top
sprawdza rozmiar terminala i dostosowuje jego wyjście na podstawie tego, nawet gdy jest używany w trybie wsadowym, a wyjście jest przesyłane strumieniowo zamiast do terminala. Możesz użyć -w
opcja zastąpienia tego.
echo "$(top -w 50 -bn 1 | awk "/^%Cpu/{print $2}")%"