8 stycznia 2016

04. Dyski i pliki

W dzisiejszym odcinku będzie coś o organizacji dysku i plików w systemach Linux. Struktura ta znacząco różni się od tej znanej z rodziny DOS/Windows i wymaga osobnego omówienia.

Zarządzanie plikami

W środowisku graficznym GNOME do zarządzania plikami służy program Pliki (nazywany dawniej Nautilus). Przypomina on z wyglądu i działania File Explorer z win:


W tym miejscu warto napomknąć o sposobie obsługi wielu programów w środowisku GNOME. Otóż menu programów wyświetlane jest z przycisku okna na pasku górnym. Wybierając z menu programu Pliki opcję Preferencje otrzymujemy okno ustawień:



Warto w tym miejscu nieco skonfigurować ten program (chociażby kolejność wyświetlania czy widoczne kolumny).


Ale powróćmy do dysku naszego komputera. Natychmiast po uruchomieniu program Pliki wyświetla zawartość katalogu domowego zalogowanego użytkownika (/home/nazwa_użytkownika): 


Ten katalog pełni funkcję foldera Moje dokumenty z win. Znajdują się w nim już wstępnie przygotowane do użycia katalogi takie jak Dokumenty, Obrazy, Muzyka, Pobrane itd. Jeszcze więcej katalogów (zawierających głównie pliki ustawień użytkownika można zobaczyć po włączeniu opcji wyświetlania plików ukrytych. Ok - a jak wygląda cały dysk? Jego widok jest dostępny po kliknięciu w panelu bocznym pozycji Komputer


Na początek ważna uwaga: W systemach Linux nie ma znanych z dos/win literek napędów. Wszystkie zasoby plikowe (i nie tylko) obecne są jako gałęzie wspólnego drzewa katalogów którego katalog główny "/" nazywany jest root (ang. korzeń) - nie mylić z głównym administratorem systemu, który również nazywa się root. Właśnie ten katalog wyświetlany jest jako Komputer. Zawiera on szereg podkatalogów które pokrótce omówię - ale jeszcze jedna uwaga: W systemach Linux podkatalogi są oddzielane znakiem "/" (slash) a nie jak w dos/win "\" (backslash).

Zatem zawartość katalogu głównego przedstawia się następująco:


/bin/ - zawiera podstawowe programy (polecenia konsoli).

/boot/ - zawiera pliki niezbędne do uruchomienia systemu tj. jądro, initrd oraz program rozruchowy GRUB.

/dev/ - zawiera pliki urządzeń zainstalowanych w komputerze (dyski, karty dźwiękowe, itp.) oraz urządzeń wirtualnych (np. /dev/null, /dev/zero).

/etc/ - zawiera główne pliki konfiguracyjne systemu.

/home/ - to katalog zawierający katalogi domowe użytkowników, każdy w osobnym podkatalogu (/home/nazwa_użytkownika/). W katalogach domowych użytkownicy przechowują swoje dokumenty oraz pliki konfiguracyjne.

/lib/ - podstawowe współdzielone biblioteki oraz moduły jądra systemu.

/media/ - tu znajdują się punkty montowania nośników wymiennych — napędów DVD-ROM, dysków USB itp.

/mnt/ - to punkty montowania dla dysków zainstalowanych w komputerze na stałe.

/opt/ - miejsce na dodatkowe oprogramowanie od zewnętrznych dostawców (np. google-chrome).

/proc/ - wirtualne pliki z danymi o aktualnie uruchomionych procesach oraz urządzeniach jak procesory czy RAM.

/root/ - katalog domowy administratora systemu.

/sbin/ - podstawowe programy dostępne tylko dla administratora.

/tmp/ - miejsce na pliki tymczasowe, zawartość tego katalogu jest usuwana przy starcie systemu.

/usr/ - rozmaite dane, bez możliwości zapisu przez użytkownika w szczególności:

  • /usr/bin/ — większość programów dostępnych dla użytkowników,
  • /usr/include/ — pliki nagłówkowe programów
  • /usr/lib/ — biblioteki programów
  • /usr/local/ — katalog programów zainstalowanych lokalnie, struktura tego katalogu jest podobna do struktury /usr/ (tj. /usr/local/bin/, /usr/local/lib/)
  • /usr/sbin/ — programy dostępne dla roota o niekrytycznym znaczeniu
  • /usr/share/ — dane współdzielone np. dokumentacja, przykładowe konfiguracje, ikony, itp.
/var/ - często zmieniające się pliki systemowe: logi, cache, bazy danych, pliki blokad, itp.

Za pomocą programu Pliki oprócz manipulowania plikami w wirtualnym drzewie możemy również wykonać pewne operacje dotyczące fizycznych urządzeń np wyświetlić informację o urządzeniu:



W wyświetlonym oknie można się dowiedzieć ile zostało wolnego miejsca na danym fizycznym nośniku: 



Podręczne menu również umożliwia manipulowanie fizycznymi urządzeniami: 


  
Na przykład formatowanie:



Z poziomu programu pliki można również wirtualnie podłączyć dysk sieciowy: 


Zarządzanie fizycznymi dyskami


W systemach Linux fizyczne urządzenia są odwzorowane według sposobu i kolejności podłączenia. Dyski typu IDE są odwzorowane jako hda, hdb, hdc, hdd (hd od hard drive). Na tej samej zasadzie dyski SCSI były odwzorowane jako sda, sdb itd. Obecnie w tej kategorii znajdują się wszystkie urządzenia, zarówno dyski SATA jak i USB a nawet starsze IDE. Kolejne partycje są numerowane cyframi. W konsekwencji tych oznaczeń sda2 to druga partycja na pierwszym dysku, a sdb1 to pierwsza partycja na drugim dysku, itd.

Aby wyświetlić informację o zainstalowanych w danej chwili napędach dyskowych można użyć polecenia lsblk. Nieco więcej informacji zwraca polecenie blkid (wymaga uprawnień administratora: 



Do zarządzania fizycznymi urządzeniami dyskowymi służy polecenie fdisk (z opcja -l) zwraca bardzo pełne informacje.

Znacznie wygodniej jednak użyć aplikacji Dyski



Po lewej stronie wyświetlane są dostępne fizycznie urządzenia dyskowe, a po prawej szczegóły wybranego urządzenia (w szczególności podział na partycje). Można utworzyć nową partycję: 


A także zmodyfikować już istniejące: 


Można też zarządzać całym urządzeniem: 


Na przykład odtworzyć obraz dysku z pliku: 


Problemy z kodowaniem polskich znaków

Dwa odcinki temu pokazywałem problem z właściwym wyświetlaniem polskich znaków w pliku tekstowym pochodzącym z systemu Windows. Ponieważ problemy takie mogą wystąpić uznałem za stosowne pokazać jak te problemy rozwiązać oraz wyjaśnić czym są one spowodowane.

Jak pamiętamy, aby poprawnie załadować plik tekstowy pochodzący z Windows wystarczyło ustawić właściwe kodowanie przy otwieraniu pliku w programie gedit. Jest to jednak niezbyt wygodne. Poszukajmy więc rozwiązania - w okno wyszukiwarki internetowej wpisujemy słowa kluczowe: "debian gedit polskie znaki" i już pierwszy link podaje rozwiązanie: 



Uruchamiamy zatem Edytor konfiguracji dconf i postępujemy wg. instrukcji zmieniając wpis na wskazany: 


Sprawdźmy zatem czy tym razem dwukrotnie klikając dokument z poziomu programu Pliki otrzymamy właściwie zdekodowane polskie znaki:


Wygląda na to że jest ok, sprawdźmy jakie to kodowanie wybierając z menu opcję Zapisz jako... 


Jak widać jest to kodowanie środkowoeuropejskie (Windows-1250), ale obok jest jeszcze do wyboru opcja Koniec wiersza.

O co chodzi z tym kodowaniem?

Trzeba zacząć od lat 60-tych, kiedy na użytek dalekopisów stworzono sposób kodowania znaków za pomocą liczb. Standard ten został zatwierdzony przez American Standards Association pod nazwą ASCII (American Standard Code for Information Interchange). Dalekopisy używały zapisu liczb na 7 bitach, stąd możliwych do zakodowania było 128 znaków. Alfabet angielski liczy 26 znaków, plus drugie tyle na wielkie litery, plus cyfry i znaki interpunkcyjne i przestankowe - razem 
95 różnych znaków które przypisano kody od liczby 32. Pozostałe 33 znaki o kodach 0-31 i 127 to znaki sterujące służące do kontroli urządzenia (drukarki czy terminala dalekopisowego). 

Pierwsze komputery zaadoptowały kod ASCII do własnego użytku. Z tym że komputery używały zwykle 8-bitów do kodowania informacji, możliwe było 
zatem zakodowanie dodatkowych 128 znaków. W 1981 roku w wersji systemu operacyjnego MS-DOS dla komputera IBM PC te dodatkowe znaki zostały wykorzystane do przedstawienia rozmaitych znaków semigraficznych, głównie kombinacji ramek, które uatrakcyjniały wygląd aplikacji pracujących w trybie tekstowym. To rozszerzenie nazwano CP437. 

CP to skrót od ang. Code Page - strona kodowa. Strona kodowa to wariant przypisania numerom znaków różnych znaków. O ile kody do 128 są zawsze takie same - zgodne z ASCII - o tyle pozostałe znaki mogą być różne w zależności od użytej strony kodowej. Bo wraz z ekspansją komputerów i oprogramowania na rynki innych krajów konieczna stała się możliwość przedstawiania znaków narodowych. Taką stroną była opracowana w 1983 roku CP850 umożliwiająca wyświetlanie tekstów w językach krajów Europy Zachodniej. W 1991 roku wraz z wersją MS-DOS 5.0 pojawiła się strona kodowa CP852 umożliwiająca wyświetlanie znaków narodowych krajów Europy Środkowej i Wschodniej w tym Polski. Nie była to jednak pierwsza Polska strona kodowa. W połowie lat 80-tych na użytek opracowywanego w Polsce komputera Mazovia powstała i zyskała sporą popularność, strona kodowa o tej samej nazwie.

Wymienione strony kodowe to zaledwie początek "komputerowej wieży Babel". W połowie lat 80-tych powstała bowiem rodzina standardów ISO/IEC 8859 utworzonych przez European Computer Manufacturers Association i uznanych przez Międzynarodową Organizacją Normalizacyjną (ISO). W ramach standardu funkcjonują m.in. ISO 8859-1 (Latin-1) ze znakami zachodnioeuropejskimi oraz ISO 8859-2 (ISO Latin-2) znaki "środkowo–" i "wschodnioeuropejskie". Na jego podstawie ISO 8859-2 została utworzona również Polska Norma (PN-T-42118:1993), przez długi czas było również zalecanym standardem kodowania dla polskich stron internetowych, oraz dla polskich wersji systemów Unix/Linux.

Norma ISO 8859 w USA została przyjęta przez tamtejszy urząd ANSI (ang. American National Standards Institute). Microsoft w systemie Windows zaadoptował strony ISO-8859-1 i ISO-8859-2 tworząc na ich podstawie nowe strony kodowe - odpowiednio CP-1252 i CP-1250, nazywając je ANSI. Problem w tym że strony te nie są do końca kompatybilne z ISO - np. dla alfabetu polskiego różnią się kodami dla 6 znaków (Ą, ą, Ś, ś, Ź, ź).

W latach 90-tych były zatem w użytku jednocześnie co najmniej 3-różne strony kodowe z polskimi znakami:

  • CP-852 - stosowana przez aplikacje pracujące w DOS,
  • CP-1250 - używana przez Windows,
  • ISO 8859-2 - stosowana w systemach Unix/Linux i przez długi czas będąca standardem dla polskich stron www.
Od przybytku głowa jednak boli - wybór niewłaściwej strony kodowej sprawia że pewne znaki stają się nieczytelne (wyświetlają się jako „robaki” lub „krzaczki”). Ponadto w jednym tekście nie można użyć wielu języków (z różnych stron kodowych). Problemy te spowodowały powstanie Unikodu.

Unikod (ang. Unicode) to komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma używane na świecie. Standard ten został opracowany w latach 90-tych i jest rozwijany przez międzynarodowe konsorcjum. W unikodzie jeden znak jest kodowany przez liczby które mogą być większe niż 256 czyli jeden znak może zajmować więcej niż jeden bajt. Zdefiniowano kilka formatów transformacji unikodu do pliku tekstowego (ang. Unicode Transformation Format), z których najpopularniejszym jest UTF-8. Pliki UTF mogą zaczynać się od specjalnego znacznika kolejności bajtów BOM (ang. Byte Order Mark) - znaku niedrukowalnego (dla UTF-8 są to 3 bajty: EF BB BF - na podglądzie "").

Właśnie UTF-8 jest obecnie standardem plików tekstowych w Linux i standardem kodowania stron internetowych. Windows również obsługuje ten standard kodowania, niestety domyślnie nadal preferuje CP-1250...

Poza problemami ze stroną kodową w plikach tekstowych można napotkać też problem znaku końca linii - EOL (ang. End Of Line). Otóż w kodowaniu ASCII istnieją dwa znaki kontrolne pierwotnie używane do sterowania drukarką:

  • CR (ang. Carriage Return 0x0D) - powrót głowicy drukującej,
  • LF (ang. Line Feed 0x0A) - wysuw papieru o jedną linię.
W różnych systemach operacyjnych stosuje się różne znaki końca linii, ale zwykle kombinacje tych kodów sterujących:
  • CR - w systemach: Commodore, Apple II, Mac OS
  • LF - w systemach: Unix, BeOS, AmigaOS, GNU/Linux, Mac OS X
  • CRLF - w systemach: DOS, OS/2, Windows, Symbian
Edytory tekstu i inne programy dla Linux zwykle obsługują wszystkie sposoby oznaczania końca linii, ale w Windows mogą być problemy. Błędna identyfikacja oznaczenia końca linii spowoduje albo odstępy między liniami, albo sklejenie linii w jedną, długą.

Ale dość wykładów na dziś. Ostatnim razem zainstalowaliśmy edytor Leafpad - sprawdźmy jak on się sprawdza w praktyce. Otwórzmy plik używając opcji z menu kontekstowego programu Pliki: Otwórz za pomocą > Leafpad



Po uruchomieniu plik otwiera się automatycznie z właściwą stroną kodową: 


Ten program jest dużo prostszy od Gedit, za to uruchamia się szybciej i prezentuje klasyczną formę ze standardowym paskiem menu.

Jak widać dokument jest wyświetlany prawidłowo - Leafpad poprawnie wykrył kodowanie co można sprawdzić wybierając opcję Plik > Zapisz jako...



Można pokusić się o ustawienie tego edytora jako domyślnego dla plików tekstowych. Jak to zrobić? Najprościej w programie Pliki z menu kontekstowego pliku tekstowego wybrać opcję Właściwości


W wyświetlonym oknie Właściwości wybrać zakładkę Otwieranie


A w niej zaznaczyć pozycję Leafpad i kliknąć Ustaw jako domyślny


Następnym razem będzie o dalszych możliwościach dostosowania środowiska graficznego GNOME do własnych potrzeb i upodobań.

A na koniec tabelka zawierająca kodowanie polskich znaków diakrytycznych w różnych standardach: 


Standard   Ą Ć Ę Ł Ń Ó Ś Ź Ż ą ć ę ł ń ó ś ź ż
ISO 8859-2 #A1 #C6 #CA #A3 #D1 #D3 #A6 #AC #AF #B1 #E6 #EA #B3 #F1 #F3 #B6 #BC #BF
CP-1250 #A5 #C6 #CA #A3 #D1 #D3 #8C #8F #AF #B9 #E6 #EA #B3 #F1 #F3 #9C #9F #BF
CP-852 #A4 #8F #A8 #9D #E3 #E0 #97 #8D #BD #A5 #86 #A9 #88 #E4 #A2 #98 #AB #BE
Unicode #104 #106 #118 #141 #143 #D3 #15A #179 #17B #105 #107 #119 #142 #144 #F3 #15B #17A #17C
UTF-8 #C4
#84
#C4
#86
#C4
#98
#C5
#81
#C5
#83
#C3
#93
#C5
#9A
#C5
#B9
#C5
#BB
#C4
#85
#C4
#87
#C4
#99
#C5
#82
#C5
#84
#C3
#B3
#C5
#9B
#C5
#BA
#C5
#BC

Brak komentarzy:

Prześlij komentarz