ZADANIA:
Zadanie 1.
Korzystając z odpowiednich poleceń znajdź w systemie plików, plik specjalny swojego terminala.
Sprawdź:
-
jakiego rodzaju jest plik twojego terminala i jakie ma prawa dostępu .
-
czy jest możliwe usunięcie swojego pliku swojego terminala.
-
co się stanie, gdy przekierujesz wyjście/błąd do swojego pliku terminala ze swojego terminala.
-
co się stanie, gdy przekierujesz wyjście/błąd do swojego pliku terminala z innego terminala.
-
co się stanie, gdy przekierujesz wyjście polecenia
cat
pliku terminala
do innego terminala.
-
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:
- echo $'\e[0;1m'
- echo $'\e[0;4m'
- echo $'\e[01;35m'
- echo $'\e[01;36m'
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ź:
-
jakiego rodzaju jest ten plik i jakie ma prawa dostępu.
-
co się stanie, gdy przekierujesz coś do tego pliku.
-
co się stanie, gdy otworzysz w edytorze ten plik, zmienisz zawartość i zapiszesz.
-
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ź:
-
jakiego rodzaju jest dowiązanie twarde (
ls -l
).
-
czy dowiązanie twarde można stworzyć dla pliku i katalogu.
-
jaka jest liczba dowiązań dla pliku.
-
czy zmiana zawartości jednego pliku będzie widoczna dla drugiego.
-
czy zmiana praw dostępu jednego pliku będzie widoczna dla drugiego.
-
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ź:
-
jakiego rodzaju jest dowiązanie symboliczne (
ls -l
).
-
czy dowiązanie symboliczne można stworzyć dla pliku i katalogu.
-
jaka jest liczba dowiązań dla pliku/katalogu.
-
czy zmiana zawartości jednego pliku/katalogu będzie widoczna dla drugiego.
-
czy zmiana praw dostępu jednego pliku/katalogu będzie widoczna dla drugiego.
-
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ź:
-
jakiego rodzaju jest potok nazwany (
ls -l
).
-
jakie polecenie spowoduje przekierowanie jednego wyjścia do potoku nazwanego,
a następnie wyświetlenie jego zawartości w innym terminalu.
-
jakie polecenie spowoduje przekierowanie dwóch lub więcej wyjść do potoku nazwanego,
a następnie wyświetlenie jego zawartości w innym terminalu.
-
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ź:
-
jakiego rodzaju jest gniazdo (
ls -l
).
-
w jaki sposób nasłuchać i wysłać dane poprzez gniazdo.
-
czy można wysłać dane więcej niż jeden raz (np. z innego terminala).
Zastanów się jakie zastosowanie mają gniazda.