TERMINALE TEKSTOWE, PLIKI SPECJALNE

W systemach uniksowych urządzenia zewnętrzne (fizyczne i abstrakcyjne) mają swoje odpowiedniki w systemie plików jako tak zwane pliki specjalne. Standardowo pliki specjalne urządzeń umieszczone sa w katalogu /dev (device - urządzenie). W szczególności terminale tekstowe użytkowników mają odpowiadające im pliki. W przypadku łączności przez sieć komputerową przy użyciu odpowiednich programów do otwierania tekstowej sesji pracy mówimy o pseudoterminalach. Pliki pseudoterminali umieszczone są w katalogu /dev/pts (pseudoterminals), a ich nazwy są kolejnymi liczbami naturalnymi (0, 1, 2, ...)

Ważne komendy

ZADANIA:


Zadanie 1. Korzystając z odpowiednich poleceń znajdź w systemie plików, plik specjalny swojego terminala.
Sprawdź:
  1. jakiego rodzaju jest plik twojego terminala i jakie ma prawa dostępu .
  2. czy jest możliwe usunięcie swojego pliku swojego terminala.
  3. co się stanie, gdy przekierujesz wyjście/błąd do swojego pliku terminala ze swojego terminala.
  4. co się stanie, gdy przekierujesz wyjście/błąd do swojego pliku terminala z innego terminala.
  5. co się stanie, gdy przekierujesz wyjście polecenia cat pliku terminala do innego terminala.
  6. co się stanie, gdy przekierujesz wejście z pliku terminala do polecenia cat (w celu zakończenia działania przydatny może być ctrl+c).
Stosując odpowiednie polecenie wypróbuj możliwość pisania na kilku terminalach jednocześnie.

Przeczytaj opis polecenia stty. Odczytaj: stty -a . Zmień ustawienia, np. stty -echo (wypróbować też inne).
Przywróć pierwotne ustawienia: stty sane . Uwaga: po zmianie ustawień może być potrzebne naciskanie ctrl-j zamiast Enter.

Zajrzyj do opisu bazy danych terminala (polecenie man terminfo). Wypróbuj możliwości dynamicznej zmiany atrybutów wyprowadzanych znaków przy użyciu sekwencji sterujących: Jakie zmiany zachodzą po wprowadzeniu każdej z nich? Sprawdź skutki przekierowania takich sekwencji do pliku cudzego terminala (za zgodą właściciela).
Przejrzyj opis pakietu ncurses (man ncurses) udostępniającego interfejs programisty w języku C do zaawansowanych własności terminala tekstowego. Wypróbuj działanie poniższego programu w C:
#include <stdio.h>
#include <ncurses.h>

main(){
	initscr();
 	start_color();
 	init_pair(1,COLOR_RED,COLOR_GREEN);
 	attrset(COLOR_PAIR(1));
 	move(10,30);
 	printw("%s","Ala ma kota");
 	refresh();
 	getchar();
 	endwin();
return;
}
UWAGA: w poleceniu kompilacji należy użyć opcji -lncurses . Spróbuj wykonać samodzielnie kilka modyfikacji powyższego skryptu.
Sprawdzić skutki przekierowania wyjścia programu do pliku cudzego terminala (za zgodą właściciela)

Zadanie 2. Znajdź plik, do którego prowadzi ścieżka: /dev/null
Sprawdź:
  1. jakiego rodzaju jest ten plik i jakie ma prawa dostępu.
  2. co się stanie, gdy przekierujesz coś do tego pliku.
  3. co się stanie, gdy otworzysz w edytorze ten plik, zmienisz zawartość i zapiszesz.
  4. jaki rozmiar będzie miał plik, gdy go przekopiujesz do swojego katalogu domowego.
Zastanów się jakie zastosowanie ma plik /dev/null.

Zadanie 3. Zapoznaj się z możliwością tworzenia dowiązań twardych, np. możesz utworzyć plik aaa.txt i utworzyć do niego dowiązanie twarde bbb.txt.
Sprawdź:
  1. jakiego rodzaju jest dowiązanie twarde (ls -l).
  2. czy dowiązanie twarde można stworzyć dla pliku i katalogu.
  3. jaka jest liczba dowiązań dla pliku.
  4. czy zmiana zawartości jednego pliku będzie widoczna dla drugiego.
  5. czy zmiana praw dostępu jednego pliku będzie widoczna dla drugiego.
  6. usunięcie jednego pliku usuwa drugi.
Zastanów się jakie zastosowanie ma dowiązanie trwałe.

Zadanie 4. Zapoznaj się z możliwością tworzenia dowiązań symbolicznych, np. możesz utworzyć plik aaa.txt i utworzyć do niego dowiązanie symboliczne bbb.txt.
Sprawdź:
  1. jakiego rodzaju jest dowiązanie symboliczne (ls -l).
  2. czy dowiązanie symboliczne można stworzyć dla pliku i katalogu.
  3. jaka jest liczba dowiązań dla pliku/katalogu.
  4. czy zmiana zawartości jednego pliku/katalogu będzie widoczna dla drugiego.
  5. czy zmiana praw dostępu jednego pliku/katalogu będzie widoczna dla drugiego.
  6. usunięcie jednego pliku/katalogu usuwa drugi.
Zastanów się jakie zastosowanie ma dowiązanie symboliczne.

Zadanie 5. Stwórz potok nazwany o dowolnej nazwie.
Sprawdź:
  1. jakiego rodzaju jest potok nazwany (ls -l).
  2. jakie polecenie spowoduje przekierowanie jednego wyjścia do potoku nazwanego, a następnie wyświetlenie jego zawartości w innym terminalu.
  3. jakie polecenie spowoduje przekierowanie dwóch lub więcej wyjść do potoku nazwanego, a następnie wyświetlenie jego zawartości w innym terminalu.
  4. jakie polecenie spowoduje początkowe wyświetlenie zawartości potoku nazwanego, a następnie przekierowanie do niego zawartości.
Zastanów się jakie zastosowanie mają potoki nazwane.

Zadanie 6. Stwórz gniazdo o dowolnej nazwie.
Sprawdź:
  1. jakiego rodzaju jest gniazdo (ls -l).
  2. w jaki sposób nasłuchać i wysłać dane poprzez gniazdo.
  3. czy można wysłać dane więcej niż jeden raz (np. z innego terminala).
Zastanów się jakie zastosowanie mają gniazda.