JustPaste.it

Satyra na hejtera

Metodyka. Przetwarzanie tekstu w bash na praktycznym przykładzie.

Metodyka. Przetwarzanie tekstu w bash na praktycznym przykładzie.

 

Krótki wstęp

na Linux, choć jakieś tam może Cygwiny są na "pingwina". Interoperacyjność "Win-Lin" tutaj nie jest ważna, Windows jest daleko w tyle, może tam rzadko np. do gier co pod WINE nie chcą się uruchamiać...

Tryb tekstowy.

Graficzny program na "terminal" bo VT switching raczej trudniejszy. Terminal to po prostu wiersz poleceń, choć i grafikę potrafi wyświetlać w odpowiednich warunkach pikselową (sterownik fbdev czy podobne, nie mam na myśli tu środowiska Xorg).

Bash, sh, dash itp. a LXTerminal, terminal podsystemu GNU Object Model Environment...

Te pierwsze to są programy które interpretują komendy tekstowe. Jak command.com w DOS i cmd.exe w Win NT. Jednak w Linux można zmienić łatwo program który odpowiada za obsługę interfejsu linii komend a w trybie pełnoekranowym (VT) nawet jest np. kursor myszy (uruchamiany po instalacji w Arch'u "systemctl start gpm", a nie samo "gpm <argumenty>"). Nakładki te zależą od środowiska ale współpracują nawet na szybkim i prostym (choć w tym DE menu cache na pasku zadań nie działa poprawnie)  LXDE

Skrypty linuksowe

Są znacznie bardziej rozwinięte od windowsowych, mają swój poziom i pewną rzetelność. Trudniejsze do nauczenia, warto. Można zacząć naukę wstępną od tldp (The Linux Documentation Project). A w praktyce wychodzi wyrobienie.
Zaczyna się od #!/bin/bash i to akurat nie jest komentarz - interpreter jest przypisany już w treści pliku.
Dalej bezpośrednio należy pisać komendy, instrukcje warunkowe i in. .
Komendy można znaleźć w katalogu /usr/bin oraz /bin, komendą dir (czyli ls). To jest ogólny katalog, jakby Program Files bez komplikowania bo przynależność pliku do pakietu czy listę pików pakietu programu można wylistować konsolowym programem zarządzającym pakietami.
W skryptach można wykonywać różniejsze rzeczy niż w Windows. Np. łatwo przetwarzać klipy wideo, zawieszać i usuwać procesy, pozyskać informację o wolnym miejscu na dysku (ale pewien limit przy systemie ext wyświetla 100% przy nie całym zapełnieniu bo jest pewien próg rezerwowy dla FS).
Komendy są krótsze i mają niemało rozbudowane opcje, które sprawdza się np. komendą man <polecenie>.

Praktyka - polecenie "xclip" i "shuf" a radzenie sobie z hejterami, itp.

Pierwsze do obsługi schowka, z tym, że są schowki typu "primary", "secondary", "clipboard", "buffer-cut". Łatwo jest akurat tutaj, bo do opisywanego tutaj zestawu programów na Xorg (aplikacji graficznych) sprawdził się "clipboard". Choć np. co robi menedżer schowka "parcellite" to nie wiem.

Shuf miesza elementy tekstu.
Tr zamienia konkretniejsze znaki tekstu, tu: zamieniając odstęp względem znaku nowego wiersza.

Uwaga! Trzeba ustawiać atrybut wykonalności: alias setexec='chmod a+x' i potem setexec <plik>. Pliki ze spacją (odstępem) otaczać trzeba w ścieżce cudzysłowem ' czy " .

Skrypcik zwany "shuffleclip", rzecz jasna do katalogu /usr/bin albo /bin (co jest notabene w zmiennej env PATH<+|>=<katalog1>:<katalog2>:...)

#!/bin/bash
xclip -o -selection clipboard |tr ' ' '\n' |shuf | tr '\n' ' ' | xclip -i -selection clipboard

Dwie linijki pisania a jaki efekt! Po uruchomieniu tego skryptu na skopiowanym CTRL+C tekście hejterów można wklejać CTRL+V i odpowiedź hater'owi gotowa.

"-o" , "-i" - kierunek operacji schowka.
-selection <...> - rodzaj schowka, na tym się prawie nie znam

(Przeglądarka Brave nie pozwala na wyświetlenie paska menu edycji, formatowania tekstu by wygodnie wstawić tag bloku kodu w do HTML artykułu).

 

Słowniczek

  1. VT - virtual terminal - w artykule chodzi o pełny ekran tekstowy, zmieniany kombinacją CTRL+ALT+Fn.
  2. Xorg - X11 - (xorg-xserver 11 liter) jest to trzon GUI Linuksa. Opcjonalny (zwłaszcza na Arch Linux, który dłużej stosuję), choć wiersz polecenia Linux jest bardzo wiele lepszy niż DOS/konsola odzyskiwania linii NT.
  3. switch - w kontekście np. przełączania "tty".
  4. Tty - nie gubię się w szczegółach, więc zob. VT
  5. DE - środowisko pulpitu (ang. Desktop Environment), podsystem związany z menedżerem okien, stylem w tym np. czcionką i wskaźnikiem myszy, pakietem aplikacji, skrótami klawiaturowymi, ekranem logowania przy późnej fazie uruchamiania komputera, zasobnikiem systemowym,  wyświetlanym zegarem (i tym czy podczas odhibernowania pokazuje poprawnie bo Linux jest trochę eksperymentalnym systemem), okienkiem przełączania aplikacji ALT+TAB itp.
  6. hibernowanie (non-hybrid save to disk) - sposób zachowania pracy z wyłączeniem komputera, polegający na zapisie zawartości pamięci na dysk masowy systemu. Po ponownym włączeniu cały stan komputera jest przywracany (problem może być z wyświetlaniem godziny wtedy - muszę to jeszcze sprawdzić pod LXDE).
  7. FS - system plików. Filesystem.

Zresztą Linux nie ma rejestru (no chyba że GConf, Dconf za taki uznajemy) - gdy nastawimy koniecznie! sync na dyski twarde to wydaje się że nie będzie większych błędów w systemie plików.