Linux

Linux

Sugestie

  • pracować pod Linuksem
  • nie używać IDE
  • … zamiast tego zacząć uczyć się porządnego edytora (Emacs albo vi), w którym można pisać wszystko
Real programmers

Real programmers

  • ale proszę nie łudzić się, że w ciągu godziny można zacząć coś sensownego pisać w Emacsie
  • … więc chwilowo można używać „głupiego” edytora typu kedit
  • mysz to zabójca produktywności, używać wiersza poleceń
  • umiejętne użycie wiersza poleceń zwiększa produktywność 10x (nieumiejętne — zmniejsza 10x)
    • strzałka góra/dół — historia
    • TAB — dopełnianie
    • CTRL-R — wyszukiwanie polecenia z historii po fragmencie
    • mc (Midnight Commander) do zarządzania plikami (NIE eksplorator plików)
  • nauczyć się gita

Powłoka

Automatyczne przetwarzanie tekstu jest najwygodniejsze w systemie Linux. Wynika to z niezwykle elastycznych mechanizmów powłoki, przede wszystkim przetwarzania potokowego.

Oto lista najważniejszych poleceń linuksowych związanych z przetwarzaniem tekstu:

  • ls — wyświetla listę plików w bieżącym katalogu
  • cd KATALOG — przechodzi do innego katalogu
  • echo NAPIS — wypisuje podany napis (i znak końca wiersza),
  • cat NAZWA_PLIKU — wypisuje na ekranie zawartość pliku,
  • head NAZWA_PLIKU — wypisuje kilka pierwszych wierszy pliku,
  • head -n N NAZWA_PLIKU — wypisuje N pierwszych wierszy pliku,
  • tail NAZWA_PLIKU — wypisuje kilka ostatnich wierszy pliku,
  • tail -n N NAZWA_PLIKU — wypisuje N ostatnich wierszy pliku,
  • less NAZWA_PLIKU — pokazuje zawartość pliku, można przewijać używając np. PgDown/PgUp,
  • less -S NAZWA_PLIKU — jak wyżej, nie zawija wierszy,
  • wc NAZWA_PLIKU — zlicza wiersze, wyrazy, bajty,
  • sort NAZWA_PLIKU — sortuje wiersze alfabetycznie,
  • sort -k 1rn NAZWA_PLIKU — sortuje wiersze numerycznie (n) w odwróconej kolejności (r) wg pierwszej kolumny (1),
  • uniq NAZWA_PLIKU — usuwa powtarzające się wiersze (jeśli są obok siebie),
  • uniq -c NAZWA_PLIKU — jak wyżej, dodatkowo wypisuje liczbę powtórzeń przy każdym wierszu,
  • shuf NAZWA_PLIKU — wypisuje wiersze w losowej kolejności,
  • egrep REGEXP — wypisuje wiersze pasujące do zadanego wyrażenia regularnego.

Większość poleceń domyślnie używa standardowego wejścia, jeśli pominięto nazwę pliku. Wyniki wypisywane są na standardowe wyjście (chyba że użyto przekierowania > NAZWA_PLIKU). Oznacza to, że polecenia można łączyć w potok używając znaku |, przykłady:

  • head -n 100 | sort — wypisuje pierwsze sto wierszy w kolejności alfabetycznej,
  • sort | uniq | wc — zlicza wiersze bez powtórzeń,
  • tail -n 5 | shuf — wyświetla 5 ostatnich wierszy z pliku w losowej kolejności,
  • shuf | head -n 5 — wyświetla 5 losowych wierszy z pliku,
  • sort | uniq | shuf | head -n 10 — wyświetla 10 losowych wierszy bez powtórzeń,
  • sort | uniq -c | sort -k 1rn — tworzy listę frekwencyjną wierszy, tzn. wyświetla wiersze według liczby powtórzeń począwszy od najczęstszych.

skąd potok pobiera dane?

Potok pobiera dane ze standardowego wejścia, domyślnie po prostu czeka na wpisanie danych, np. jeśli wydamy polecenie:

head -n 5 | shuf

będzie można wprowadzać kolejne wiersze, aż nie naciśniemy CTRL+d, w tym momencie powłoka wypisze pięć ostatnich wierszy w losowej kolejności i zakończy wykonywanie potoku.

Jeśli chcemy, aby potok działał na konkretnym pliku, powiedzmy blabla.txt, jego nazwa powinna pojawić się przy pierwszym poleceniu potoku:

head -n 5 blabla.txt | shuf

Można użyć też przekierowania:

head -n 5 < blabla.txt | shuf

Albo dołożyć do potoku polecenie cat:

cat blabla.txt | head -n 5 | shuf

ArchLinux

Arch Linux will be the preferred distribution:

  • KISS, lightweight, bleeding edge, the Arch Way
  • powerful package manager Pacman, it’s dead easy to create a package (much, much easier than in Ubuntu/Debian)
  • lots of Natural Language Processing/Machine Translation tools packaged (more than for Ubuntu)

Installing Arch Linux on your machine is recommended (if you don’t have any other specific reasons, please choose ArchLinux, it’ll be easier for our classes).

Useful links:

Python

Przykładowe pomoce w nauce Pythona: