Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

so:intro

To jest stara wersja strony!


Wstęp

Trochę historii

Terminal i konsola oznaczały sprzęt (fizyczne urządzenie) które pozwalało na interakcję z komputerem.

  • terminal: a combination of a keyboard and output device (such as a video display unit) by which data can be entered into or output from a computer or electronic communications system
  • console: a combination of readouts or displays and an input device (such as a keyboard or switches) by which an operator can monitor and interact with a system (such as a computer or dubber)

https://thevaluable.dev/guide-terminal-shell-console/

Współcześnie 'terminal' i 'konsola' oznacza tekstowy interfejs (systemu operacyjnego).

Uniksopodobne systemu operacyjne

https://en.wikipedia.org/wiki/Unix-like

POSIX - standard (organizacji IEEE i The Open Group) określający interfejs systemu operacyjnego, stworzony dla ujednolicenia uniksopodobnych systemów

GNU/Linux

  • GNU to zbiór wolnego oprogramowania, które łącznie tworzy system operacyjny uzupełniony o szeroki wybór oprogramowania użytkowego https://www.gnu.org/manual/blurbs.html
  • jądro GNU, Hurd, nie jest jeszcze na zadowalającym poziomie (od 30 lat…)
  • więc oprogramowanie GNU jest zwykle uruchamiane na kernelu Linux
  • większość dystrybucji Linuksa zawiera dużą ilość oprogramowania nie będącego częścią GNU (i niekoniecznie będącego wolnym bądź otwartym oprogramowaniem)

Powłoka (shell) i podstawowe narzędzia

Powłoka (ang. shell) to program który udostępnia tekstowy interfejs do systemu operacyjnego.

Jest wiele implementacji powłoki.
Patrz zestawienie: https://en.wikipedia.org/wiki/Comparison_of_command_shells i [1]

Dla uniksopodobnych systemów dostępne są co najmniej: sh, csh, tcsh, ksh, bash, zsh, dash, busybox, fish

W Windowsie są dostępne powłoki cmd.exe i PowerShell.

Powłoka czyta komendy z wejścia i wykonuje je. Komenda może być nazwą programu za którą podane są argumenty (oddzielone spacjami)
Do używania systemu operacyjnego, poza powłoką, potrzebny jest zestaw programów powalający wykonać podstawowe zadania. Takie programy często nazywa się narzędziami (ang. utilities).

Tak jak jest wiele implementacji powłoki, tak jest wiele implementacji podstawowych narzędzi.

POSIX standaryzuje zarówno powłokę jak i kluczowe narzędzia.

Jak dostać się do shella

Lokalnie

Używając graficznego interfejsu do dostępu do powłoki używa się emulatora terminala.

Istnieje sporo programów emulujących terminal (dłuższa lista na Wikipedii). Poniżej wybór istotniejszych:

Poza graficznym interfejsem Linux typowo startuje program umożliwiający logowanie do powłoki w konsolach wirtualnych.
Do przełączania między konsolami służy skrót Ctrl + Alt + Fn, gdzie Fn to klawisz funkcyjny (F1÷F12).
Zwykle konsole 1÷6 są tekstowe, konsola 7 to pierwsza konsola graficzna, a część systemów pokazuje komunikaty diagnostyczne na konsoli 12.

Zdalnie

Standardowy sposób pracy zdalnej na systemach uniksopodobnych to logowanie się do powłoki używając klienta SSH (Secure SHell).
Podstawowa komenda do logowania do powłoki na zdalnym systemie to:
ssh użytkownik@host
gdzie użytkownik to nazwa użytkownika, a host to nazwa bądź adres docelowego urządzenia.
Na przykład, gdyby użytkownik piotr chciał zalogować się na komputer o nazwie polluks.put.poznan.pl, musiałby wpisać:
ssh piotr@polluks.put.poznan.pl.

W tej chwili wszystkie istotne systemy operacyjne (włącznie z Windows) mają domyślnie zainstalowaną komendę ssh.

SSH (Secure SHell) szyfruje cały ruch. Poprzednik SSH – telnet – wszystko, włącznie z hasłami, wysłał czystym tekstem.

Zadanie 1 Uruchom emulator terminala. Wykonaj komendy date i echo $SHELL.

Zadanie 2 Wykonaj komendę sleep 1h i przerwij ją skrótem Ctrl + c.

Zadanie 3 Przełącz się na drugą konsolę wirtualną i zaloguj się na niej. Wykonaj pwgen. Wróć do konsoli graficznej.

Zadanie 4 Używając SSH i swojego konta zaloguj się na polluks.cs.put.poznan.pl.

Korzystanie z pomocy

Podręcznik systemowy i przełącznik 'help'

Większość programów wyświetli pomoc jeśli w po nazwie programu jako argument poda się --help. Niektóre programy obsługują też -h.

Zadanie 5 Wyświetl pomoc dla komend cat i bat dodając przełącznik 'help'. (NB: bat nie jest domyślnie instalowany w wielu dystrybucjach.)

Razem z programem zwykle dostarczane są strony podręcznika systemowego (and. system MANual). Strony wyświetla się komendą man nazwa_strony. Do wyjścia z pomocy użyj klawisza q.

Zadanie 6 Wyświetl stronę podręcznika dla komendy timeout.

Strony podręcznika podzielone są na sekcje. Wykonaj man man żeby zobaczyć listę i opis sekcji.
Nazwy muszą być unikalne w ramach sekcji, ale mogę się powtarzać w różnych sekcjach.
Komenda whatis nazwa_strony pokaże listę sekcji w których znajduje się strona o nazwie nazwa_strony i wyświetli tytuł każdej z takich stron.

Zadanie 7 Wyświetl listę wszystkich stron o tytule time.

Żeby wyświetlić stronę z wybranej sekcji, należy wpisać man sekcja nazwa_strony.

Zadanie 8 Samo man jest opisane w dwóch sekcjach. Wyświetl obie strony o nazwie man. Co zwiera każda z tych stron?

Do ostatecznego wyświetlania stron program man używa innego programy – less. Szczegóły less będą omawiane później.
Aby wyszukać tekst w less należy wpisać /, szukany tekst i wcisnąć Enter. aby przejść do kolejnego / poprzedniego wystąpienia należy wpisać odpowiednio n / N. Z kolei g przeniesie na początek dokumentu, a h wyświetli pomoc dla nawigacji w less.

Zadanie 9 Wyświetl stronę podręcznika dla bash i wyszukaj w niej printf. Potem znajdź na tej stronie dokumentację komendy dirs.

Do przeszukiwania podręcznika można użyć polecenia apropos czego które wyszuka w tytułach i nazwach stron.

Poza man jest też dostępny system dokumentacji info. Żeby wyświetlić dokumenty Info, wpisz info nazwa. Dla niektórych programów dokument Info jest bardziej szczegółowy niż strona podręcznika.

Notacja składni poleceń

W podręcznikach, dokumentacjach i przykładach komend tradycyjnie używa się kwadratowych i wąsatych nawiasów do oznaczania, odpowiedio, elementów opcjonalnych i wyboru jednej z możliwości. Czasami losowe nawiasy są używane jako lista możliwości: jest tak jeśli fragmenty zawartości są oddzielone przez |. Ostre nawiasy są czasami używane do nazywania elementów.

  • wait [pid] oznacza że zarówno wait jak i wait 1234 są poprawnymi komendami (o ile 1234 jest pidem)
  • grep --color[=WHEN] oznacza że zarówno grep --color jak i grep --color=always są poprawne
  • tar {c|x} oznacza że trzeba wpisać albo tar c albo tar x

Wielokropek zaznacza że część komendy może się powtarzać, np. cat [FILE]... wskazuje że cat może przyjmować wiele nazw plików jako argumenty.

Wiele komend przyjmuje opcje (zwane też przełącznikami) w liście argumentów.
Opcje są zwykle zdefiniowane w krótkiej formie -o gdzie o to pojedynczy znak bądź długiej --opcja gdzie opcja to nazwa opcji.
Nieliczne programy używają tylko długich opcji poprzedzonych pojedynczym - (np. find, convert, ffmpeg).
Krótkie opcje można łączyć w następujący sposób: ls -color jest równoważne ls -c -o -l -o -r (i różne od ls --color)

Opcje mogą wymagać argumentu bądź mogą opcjonalnie przyjmować argument.

Poza nazwą programu, opcjami i słowami kluczowymi (jeśli są), każdy inny tekst to wypełniacz (placeholder) do zastąpienia konkretną wartością.
Dla przykładu, we wzorcu komendy find -amin N i find -anewer FILE wyrażenia N i FILE są wypełniaczami: N musi być zastąpione liczbą minut, a FILE nazwą pliku.

Zadanie 10 Wykonaj:
man zip i przejrzyj SYNOPSIS,
more --help i wyjaśnij składnię
taskset -h i wyjaśnij składnię

Autouzupełnianie

Praktycznie każda powłoka wspiera autouzupełnianie. Wywołuje się je wciskając klawisz TAB.
Autouzupełnianie ma dokończyć wpisywanie słowa na którego końcu stoi kursor i robi to, o ile jest tylko jedno możliwe pasujące dokończenie.
Jeśli autouzupełnianie zna wiele możliwości, to nic nie wpisze. Po ponownym wciśnięciu klawisza TAB większość mechanizmów autouzupełniania wyświetli wszystkie możliwości.

Implementacja autouzupełniania różni się w zależności od powłoki. Wiele powłok wspiera skrypty pomocnicze zależne od kontekstu.

Zadanie 11 Wpisz gun i naciśnij TAB. Wpisz ba i naciśnij TAB dwukrotnie.

Zadanie 12 Wpisz man -- i naciśnij TAB dwukrotnie. Wpisz man fs i naciśnij TAB dwukrotnie.

Przeglądanie systemu plików

Drzewo katalogów i plików

W systemach uniksopodobnych wszystkie pliki zorganizowane są w strukturę drzewiastą, tzn. każde dwa pliki mają wspólny katalog najwyższego poziomu nazywany po angielsku root directory. Root directory ma ścieżkę /.
Inne systemy plików (e.g., pozostałe partitycje, płyty CD, pendrive'y), są montowane w wybranym katalogu w istniejącej hierarchii (zamiast tworzyć nową).

Ścieżka jest łańcuchem nazw oddzielonych przez /.
. oznacza bieżący katalog, a .. katalog nadrzędny.

Ścieżka zaczynająca się od / nazywana jest bezwzględną. Każda inna ścieżka nazywana jest względną.

Uniksopodobne systemy operacyjne dla każdego programu pamiętają katalog roboczy (working directory). Ścieżki względne rozwiązywane są zaczynając od katalogu roboczego.

Każdy użytkownik ma swój katalog domowy. Powłoka (i niektóre inne programy) zastępuje każde słowo ~ przez ścieżkę bieżącego użytkownika. ~user określa katalog domowy użytkownika user, więc ~/x/a.txt jest plikiem wewnątrz katalogu domowego bieżącego użytkownika, a ~x/b.txt znajduje się w katalogu domowym użytkownika x.

Wyświetlanie zawartości katalogu

Plecenie ls [katalog] wyświetla listę plików w katalogu katalog.
Bez podania argumentów ls wyświetli bieżący katalog.
Domyślnie ls nie wyświetla ukrytych plików. Przełącznik -a i --all zmieniają to zachowanie.
Przełącznik -l / --list wyświetla szczegółową listę plików zawierającą m. inn. dla każdego pliku jego właściciela, rozmiar i datę modyfikacji.

Zadanie 13 Wyświetl pliki w /usr/share/zoneinfo/ i ../../../../../bin.

Zadanie 14 Wyświetl wszystkie pliki w swoim katalogu domowym.

Zadanie 15 Przetestuj następujące przełączniki komendy ls:   -A   -d   -s   -h   -t   -1

Poza ls do wyświetlania plików dostępne są standardowe komendy dir i vdir.
Powłoka często jest konfigurowana tak by ls używał kolorów, oraz by ll było rozumiane jako ls -l, a la jako ls -l -a.

Program tree wyświetla rekurencyjnie zawartość katalogu w postaci drzewa.

Zmiana katalogu roboczego

Aby wyświetlić katalog roboczy można użyć polecenia pwd (print working directory).

Zadanie 16 Sprawdź w jakim katalogu znajdujesz się po zalogowaniu do systemu.

Aby zmienić katalog roboczy można użyć komendy cd [cel] (change directory).
Bez podania celu cd przejdzie do katalogu domowego.
Jeśli jako cel poda się -, katalog roboczy zostanie zmieniony na poprzednio używany

Zadanie 17 Wejdź do katalogu .config (w twoim katalogu domowym) i wyświetl w nim pliki.

Zadanie 18 Przejdź do /var/log. Co tam jest przechowywane?

Zadanie 19 Wróć tam gdzie byłeś wcześniej używając cd -

Aby zmienić katalog i zapamiętać poprzedni można użyć komendy pushd cel.
pushd cel umieszcza poprzedni katalog na stosie katalogów. Stos katalogów może być wyświetlony komendą dirs.
Aby wrócić do zapamiętanego katalogu, można wykonać komendę popd (usuwającą katalog ze stosu i wchodzącą do niego) lub pushd (zamieniającą bieżący katalog z katalogiem na stosie).
pushd i popd przyjmują argumenty +n/-n wybierające n-ty katalog od szczytu / dna stosu.

Dopasowywanie nazw plików

Przetwarzając tekst wpisany przez użytkownika powłoka próbuje zastąpić każde słowo zawierające znaki *, ? lub wyrażenia w kwadratowych nawiasach […]. Każde słowo zawierający takie znaki jest nazywane globem.

* rozwija się do dowolnego tekstu , ? rozwija się do dowolnego znaku, [ace] rozwija się do a, c, lub e, natomiast [f-h] do f, g, lub h.

Jeżeli istnieje co najmniej jeden plik pasujący do globa, to powłoka zastępuje glob wszystkimi pasującymi nazwami plików. Jeżeli żaden plik nie pasuje, to glob pozostaje niezmieniony.

Zadanie 20 Przejdź do katalogu /usr/bin/. Wypisz pliki kończące się na cat.

Zadanie 21 Wypisz pliki kończące się na cat będąc w swoim katalogu domowym.

Zadanie 22 Wypisz pliki znajdujące się w /usr/bin/ i mające dwuznakową nazwę.

Zadanie 23 Wypisz zawartość /usr/share/zoneinfo/ i podkatalogów jedną komendą.

Zadanie 24 Wypisz pliki o nazwie UTC znajdujące się w dowolnym podkatalogu /usr/share/zoneinfo/.

Zadanie 25 Wypisz pliki o nazwie zaczynające się od L znajdujące się w dowolnym podkatalogu /usr/share/zoneinfo/.

Zadanie 26 Wypisz pliki o nazwie zaczynające się od F lub H znajdujące się w dowolnym podkatalogu /usr/share/zoneinfo/. Użyj jednego globa.

Zadanie 27 Przejdź do katalogu /usr/bin i wykonaj ls*. Co się stało?

Kopiowanie, przenoszenie, i usuwanie plików

Do utworzenia pustego pliku możesz użyć touch plik.
Aby utworzyć plik z zawartością, możesz użyć echo zawartość > plik.
Polecenia touch i echo, jak również znaczenie > zostaną omówione później.

Aby wyświetlić plik, użyj cat plik.

Katalogi

mkdir dir tworzy nowy katalog.
mkdir -p dir1/dir2/dir3 tworzy katalog dir1, i katalog dir2 w dir1, i katalog dir3 w dir1/dir2. Podając przełącznik -p polecenie mkdir nie wyświetla błędu jeśli katalog już istnieje.

Do usunięcia pustego katalogu można użyć rmdir dir.

Zadanie 28 Stwórz następujące drzewo katalogów:

.
├── foo
│   ├── baz
│   │   └── bar
│   └── bar
└── foobaz
    └── bar

Zadanie 29 Usuń katalog foo/baz.

Twarde i symboliczne dowiązania

Wiele wpisów w katalogach może wskazywać na ten sam plik. Nazywa się to twardym dowiązaniem (hard link).
Wpis w katalogu może również wskazywać na inny wpis w katalogu. Nazywa się to dowiązaniem symbolicznym (soft link / symbolic link, zwykle skracane do symlink).

Wszystkie Linuksowe systemy obsługują dowiązania twarde do zwykłych plików i symlinki do dowolnych ścieżek (np. pliku lub katalogu).

Aby utworzyć twarde łącze, można użyć ln źródło cel.
Aby utworzyć symlink, można użyć ln -s źródło cel.

Zadanie 30 Stwórz plik plik1 z zawartością. Stwórz twarde dowiązanie do pliku plik1 o nazwie plik2. Zmodyfikuj plik2. Wyświetl plik1.

Zadanie 31 Komenda ls może wyświetlić ilość twardych dowiązań. Sprawdź gdzie ta informacja jest wyświetlana.

Miejsce na dysku wykorzystywane przez plik wraca do puli wolnej przestrzeni gdy liczba dowiązań spadnie do 0 (wszystkie wpisy w katalogach, które wskazują na plik są usunięte) i plik nie jest już otwarty w żadnym procesie.

Zadanie 32 Utwórz w swoim katalogu domowym symlink o nazwie TMP wskazujący na /tmp. Zmień katalog na TMP. Co wypisuje pwd?

Zadanie 33 Utwórz w swoim katalogu domowym symlink o nazwie loop wskazujący na twój katalog domowy. Wejdź do loop. I wejdź jeszcze raz do loop.

Zadanie 34 Utwórz symlink do nieistniejącej ścieżki. Wyświetl zawartość katalogu w którym jest ten symlink.

Polecenie readlink [-f] cel rozwiązuje wszystkie symlinki i wyświetla kanoniczną postać ścieżki.

System plików Windows NTFS też obsługuje dowiązania. Tworzenie ich jest możliwe np. poleceniem mklink.

Kopiowanie i przenoszenie plików

Pliki można kopiować komendą cp i przenosić (bądź zmieniać nazwę) komendą mv (nazwy pochodzą odpowiednio od słów copy i move).

Podstawowa składnia to cp/mv źródłocel.
Można podać wiele plików źródłowych jeżeli cel jest katalogiem.
Jeśli cel jest plikiem, to zostanie bez ostrzeżenia nadpisany (o ile nie zostanie użyty przełącznik -i bądź -n).

Domyślnie cp odmówi kopiowania katalogu. Przełącznik -r pozwoli skopiować rekurencyjnie katalog z zawartością.

cp kopiując plik tworzy nowy plik z aktualną datą, domyślnymi uprawnieniami itp.
Aby skopiować rekursywnie, zachować daty, uprawnienia i inne, można użyć przełącznika -a (--archive).

Z przełącznikiem -l program cp tworzy twarde dowiązania zamiast kopiować pliki. Można to połączyć z --recursive.

Zadanie 35 Skopuj jednym poleceniem pliki /etc/os-release i /etc/SUSE-brand do bieżącego katalogu.

Zadanie 36 Wykonaj mkdir someDir && for F in plik{1..3}; do echo $RANDOM$RANDOM > someDir/$F; done które stworzy katalog someDir z trzema plikami w środku.

Zadanie 37 Skopiuj rekurencyjnie someDir i zawartość.

Zadanie 38 Przenieś nowo utworzony katalog do środka katalogu someDir.

Zadanie 39 Zmień nazwę katalogu someDir na inną.

Zadanie 40 Skopiuj nowo nazwany katalog podając przełączniki -al. Zmień wybrany plik w którymkolwiek z katalogów. Treść których plików uległa zmianie? (Wyświetl je cat nazwa_pliku lub wyświetl daty modyfikacji plików z dokładnością do sekundy przez
ls -l --time-style=+%H:%M:%S … lub tree -D --timefmt=%H:%M:%S …)

Kopiowanie plików do/z maszyny zdalnej

Za pomocą SSH można kopiować pliki. Jeśli ktoś ma dostęp do SSH na zdalnej maszynie, to może kopiować pliki komendą scp.
scp rozumie nazwa jako ścieżkę do lokalnego pliku i użytkownik@host:nazwa jako ścieżkę do pliku na zdalnej maszynie. Zdalne względne ścieżki są rozwiązywane względem katalogu domowego.
scp przyjmuje przełącznik -r do rekursywnego kopiowania katalogów.

MS Windows ma domyślnie komendę scp, ale zwykle wygodniej jest korzystać z menadżerów plików wspierających SSH.

Większość serwerów SSH wspiera też protokół SFTP, pozwalający na wygodniejsze kopiowanie plików.
sftp użytkownik@host uruchamia linię poleceń sftp. Działają w niej ls i cd do nawigowania po zdalnych plikach oraz get i put do przenoszenia plików. help pokaże wszystkie wspierane komendy.

Zadanie 41 Stwórz plik w katalogu /tmp swojego komputera. Skopiuj go do katalogu domowego użytkownika student na innym komputerze.

Zadanie 42 Skopiuj ten plik do katalogu /tmp innego komputera.

Zadanie 43 Skopiuj ten plik do katalogu /tmp innego komputera używając sftp.

Rsync

Program rsync jest powszechnie używany do kopiowania plików i katalogów. Wydajnie porównuje pliki źródłowe z docelowymi i kopiuje tylko różnice. Może kopiować dane do/z zdalnych urządzeń, a także może kompresować dane przesyłane przez sieć dla zwiększenia przepustowości. rsync jest też powszechnie używany do tworzenia kopii zapasowych.

Usuwanie plików

Program usuwający pliki nazywa się rm (or remove).

rm domyślnie nie usunie katalogów (niezależnie czy są puste) ani plików chronionych przed zapisem.

Aby usunąć katalog poleceniem rm (wraz z całą zawartością) trzeba dodać przełącznik -r.

Aby usunąć plików zabezpieczony przed zapisem (i nie wyświetlać ostrzeżenia jeśli plik który nakazano usunąć nie istnieje) można użyć przełącznika -f (--force).

Przypadkowo bądź nieprawidłowo użyte rm -rf … jest częstą przyczyną utraty danych. Szczególnie uważaj na wszystkie * i to do czego się rozwiną.

rm przyjmuje przełączniki -I i -i które proszą o potwierdzenie usunięcia plików. -I pyta raz przed rozpoczęciem usuwania wielu plików, a -i pyta przed usunięciem każdego pliku z osobna.

Zadanie 44 Stwórz wiele plików komendą touch file_{a..z}.
Usuń wszystkie te pliki jednym poleceniem rm 1) bez przełączników 2) z przełącznikiem -f
3) z przełącznikiem -I 4) z przełącznikiem -i.

Zadanie 45 Powtórz komendę usuwającą pliki z poprzedniego zadania po usunięciu plików.
Potem powtórz tą komendę raz jeszcze z przełącznikiem -f.

Zadanie 46 Stwórz katalog i usuń go używając rm.

so/intro.1677506965.txt.gz · ostatnio zmienione: 2023/02/27 15:09 przez jkonczak