OnWorks Linux i Windows Online WorkStation

logo

Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

Przesuwanie kursora

Kody ucieczki mogą być używane do pozycjonowania kursora. Jest to powszechnie używane do wyświetlania zegara lub innego rodzaju informacji w innym miejscu na ekranie, np. w górnym rogu za każdym razem, gdy wyświetlany jest monit. Oto lista kodów ucieczki, które pozycjonują kursor:


Tabela 13-4: Sekwencje wyjścia z ruchu kursora

Escape Code Action

\033[l;cH Przesuń kursor do linii l i kolumna c


obraz

\033[nA Przesuń kursor w górę n linie


obraz

\033[nB Przesuń kursor w dół n linie


obraz

\033[nC Przesuń kursor do przodu n znaków


obraz

\033[nD Przesuń kursor do tyłu n znaków


obraz

\033[2J Wyczyść ekran i przesuń kursor do lewego górnego rogu (linia 0, kolumna 0)


obraz

\033[K Wyczyść od pozycji kursora do końca bieżącego wiersza


obraz

\033[s Zapisz bieżącą pozycję kursora


obraz

\033[u Przywołaj zapisaną pozycję kursora


obraz


Używając powyższych kodów, zbudujemy monit, który rysuje czerwony pasek na górze ekranu zawierający zegar (wyświetlany żółtym tekstem) za każdym razem, gdy monit jest wyświetlany. Kod monitu to ten groźnie wyglądający ciąg:



PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]

<\u@\h \W>\$ "

PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]

<\u@\h \W>\$ "


Przyjrzyjmy się bliżej każdej części ciągu znaków, aby zobaczyć, co ona robi:

Przesuwanie kursora


Tabela 13-5: Podział złożonego ciągu poleceń


Sekwencja Akcja

Sekwencja Akcja

\[ Rozpoczyna sekwencję znaków niedrukowalnych. Celem tego jest umożliwienie bashowi prawidłowego obliczenia rozmiaru widocznego monitu. Bez dokładnego obliczenia funkcje edycji wiersza poleceń nie mogą poprawnie ustawić kursora.


obraz

\033[s Zapisz pozycję kursora. Jest to potrzebne do powrotu do lokalizacji monitu po narysowaniu paska i zegara na górze ekranu. Należy pamiętać, że niektóre emulatory terminali nie rozpoznają tego kodu.


obraz

\033[0;0H Przesuń kursor do lewego górnego rogu, czyli do wiersza 0, kolumny 0.


obraz

\033[0;41m Ustaw kolor tła na czerwony.


obraz

\033[K Wyczyść od bieżącej lokalizacji kursora (lewy górny róg) do końca linii. Ponieważ kolor tła jest teraz czerwony, linia jest czyszczona do tego koloru, tworząc nasz pasek. Zauważ, że czyszczenie do końca linii nie zmienia pozycji kursora, która pozostaje w lewym górnym rogu.


obraz

\033[1;33m Ustaw kolor tekstu na żółty.


obraz

\t Wyświetl aktualny czas. Chociaż jest to element „drukowalny”, nadal uwzględniamy go w niedrukowalnej części monitu, ponieważ nie chcemy, aby bash uwzględniał zegar podczas obliczania rzeczywistego rozmiaru wyświetlanego monitu.


obraz

\033[0m Wyłącz kolor. Dotyczy to zarówno tekstu, jak i tła.


obraz

\033[u Przywróć wcześniej zapisaną pozycję kursora.


obraz

\] Zakończ sekwencję znaków niedrukowalnych.


obraz

<\u@\h \W>\$ Ciąg znaków monitu.


obraz


Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: