przejście do zawartości
Jan Kończak
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Ostatnie zmiany
Menadżer multimediów
Indeks
Jesteś tutaj:
start
»
so
»
intro
so:intro
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
===== Wstęp ===== <html><small></html> ==== Trochę historii ==== Terminal i konsola oznaczały sprzęt (fizyczne urządzenie) które pozwalało na interakcję z komputerem. * [[https://www.merriam-webster.com/dictionary/terminal|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 * [[https://www.merriam-webster.com/dictionary/console|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). <html></small></html> ==== 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 <html><small></html> GNU/Linux * [[https://www.gnu.org/gnu/gnu.html|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, [[https://www.gnu.org/software/hurd/|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) <html></small></html> ==== 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 <html><small></html>i [[https://wiki.archlinux.org/title/Command-line_shell|[1]]]<html></small></html> <html><small></html> 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''. <html></small></html> 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. <html><small></html> * Systemy GNU/Linux zwykle używają [[https://en.wikipedia.org/wiki/GNU_Core_Utilities|GNU core utilities]] i [[https://en.wikipedia.org/wiki/Util-linux|Linux utilities]] * Systemy .*BSD dostarczają własnych implementacji: [[https://cvsweb.openbsd.org/src/bin/|OpenBSD]], [[https://svnweb.freebsd.org/base/head/bin/|FreeBSD]] * Apple w swoich systemach (np. MacOS) dostarcza zmodyfikowane narzędzia z BSD [[https://opensource.apple.com/releases/|[1]]] [[https://github.com/apple-oss-distributions/file_cmds|[2]]] [[https://github.com/apple-oss-distributions/text_cmds|[3]]] * Minimalistyczne i wbudowane systemy często używają [[https://www.busybox.net/downloads/BusyBox.html|BusyBox]]a * Android używa [[https://www.landley.net/toybox/|toybox]]a [[https://cs.android.com/android/platform/superproject/+/master:external/toybox/toys/posix/|[4]]] * Dłuższa lista alternatywnych zestawów jest np. tutaj: [[https://wiki.archlinux.org/title/core_utilities]] <html></small></html> POSIX standaryzuje zarówno [[https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html|powłokę]] jak i kluczowe [[https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html|narzędzia]]. ==== Jak dostać się do shella ==== === Lokalnie === Używając graficznego interfejsu do dostępu do powłoki używa się [[https://en.wikipedia.org/wiki/Terminal_emulator|emulatora terminala]]. <html><small></html> Istnieje sporo programów emulujących terminal (dłuższa [[https://en.wikipedia.org/wiki/List_of_terminal_emulators|lista]] na Wikipedii). Poniżej wybór istotniejszych: * starożytny i dostępny praktycznie wszędzie [[https://en.wikipedia.org/wiki/Xterm|xterm]] * programy dołączane do środowisk graficznych Linuksa: [[https://docs.xfce.org/apps/terminal/start|xfce4-terminal]], [[https://en.wikipedia.org/wiki/GNOME_Terminal|GNOME Terminal]], [[https://konsole.kde.org/|konsole]] * MacOS domyślne używa aplikacji [[https://en.wikipedia.org/wiki/Terminal_(macOS)|Terminal]] * popularne są też wyjeżdżające z góry terminale przywoływane/chowane prostym skrótem klawiszowym:\\ [[https://apps.kde.org/yakuake/|yakuake]] / [[http://guake-project.org/|guake]] / [[https://github.com/lanoxx/tilda|tilda]] <html></small></html> Poza graficznym interfejsem Linux typowo startuje [[https://en.wikipedia.org/wiki/Getty_(Unix)|program]] umożliwiający logowanie do powłoki w [[https://en.wikipedia.org/wiki/Virtual_console|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''. <html><small></html> SSH (Secure SHell) szyfruje cały ruch. Poprzednik SSH – telnet – wszystko, włącznie z hasłami, wysłał czystym tekstem. <html></small></html> ~~Zadanie.#~~ Uruchom emulator terminala. Wykonaj komendy ''date'' i ''echo $SHELL''. ~~Zadanie.#~~ Wykonaj komendę ''sleep 1h'' i przerwij ją skrótem //Ctrl + c//. ~~Zadanie.#~~ Przełącz się na drugą konsolę wirtualną i zaloguj się na niej. Wykonaj ''pwgen''. Wróć do konsoli graficznej. ~~Zadanie.#~~ 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.#~~ Wyświetl pomoc dla komend ''cat'' i ''bat'' dodając przełącznik 'help'. <html><small></html>(NB: ''bat'' nie jest domyślnie instalowany w wielu dystrybucjach.)<html></small></html> 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.#~~ 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.#~~ Wyświetl listę wszystkich stron o tytule ''time''. Żeby wyświetlić stronę z wybranej sekcji, należy wpisać ''man //sekcja// //nazwa_strony//''. ~~Zadanie.#~~ 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.#~~ Wyświetl stronę podręcznika dla ''bash'' i wyszukaj w niej ''printf''. Potem znajdź na tej stronie dokumentację komendy ''dirs''. <html><small></html> 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. <html></small></html> ==== 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. <html><small></html>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.<html></small></html> \\ * ''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. \\ <html><small></html>Nieliczne programy używają tylko długich opcji poprzedzonych pojedynczym ''-'' (np. ''find'', ''convert'', ''ffmpeg'').<html></small></html> \\ 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.#~~ 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.#~~ Wpisz ''bad'' i naciśnij //TAB//. Wpisz ''ba'' i naciśnij //TAB// dwukrotnie. ~~Zadanie.#~~ 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 //[[https://en.wikipedia.org/wiki/Root_directory|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 [[https://en.wikipedia.org/wiki/Home_directory|katalog domowy]]. Powłoka (i niektóre inne programy) zastępuje każde słowo ''~'' przez ścieżkę bieżącego użytkownika. <html><small></html>''~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''.<html></small></html> ==== 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.#~~ Wyświetl pliki w ''/usr/share/zoneinfo/'' i ''../../../../../bin''. ~~Zadanie.#~~ Wyświetl wszystkie pliki w swoim katalogu domowym. <html><small></html> ~~Zadanie.#~~ 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. <html></small></html> ==== Zmiana katalogu roboczego ==== Aby wyświetlić katalog roboczy można użyć polecenia ''pwd'' (print working directory). ~~Zadanie.#~~ 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. \\ <html><small></html>Jeśli jako cel poda się ''-'', katalog roboczy zostanie zmieniony na poprzednio używany<html></small></html> ~~Zadanie.#~~ Wejdź do katalogu ''.config'' (w twoim katalogu domowym) i wyświetl w nim pliki. ~~Zadanie.#~~ Przejdź do ''/var/log''. Co tam jest przechowywane? <html><small></html> ~~Zadanie.#~~ 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. <html></small></html> ==== 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 [[https://en.wikipedia.org/wiki/Glob_(programming)|glob]]em. ''*'' 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.#~~ Przejdź do katalogu ''/usr/bin/''. Wypisz pliki kończące się na ''cat''. ~~Zadanie.#~~ Wypisz pliki kończące się na ''cat'' będąc w swoim katalogu domowym. ~~Zadanie.#~~ Wypisz pliki znajdujące się w ''/usr/bin/'' i mające dwuznakową nazwę. ~~Zadanie.#~~ Wypisz zawartość ''/usr/share/zoneinfo/'' i podkatalogów jedną komendą. ~~Zadanie.#~~ Wypisz pliki o nazwie ''UTC'' znajdujące się w dowolnym podkatalogu ''/usr/share/zoneinfo/''. ~~Zadanie.#~~ Wypisz pliki o nazwie zaczynające się od ''L'' znajdujące się w dowolnym podkatalogu ''/usr/share/zoneinfo/''. <html><small></html> ~~Zadanie.#~~ 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.#~~ Przejdź do katalogu ''/usr/bin'' i wykonaj ''ls*''. Co się stało? <html></small></html> ==== Kopiowanie, przenoszenie, i usuwanie plików ==== <html><small></html> 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//''. <html></small></html> === Katalogi === ''mkdir //dir//'' tworzy nowy katalog. \\ <html><small></html> ''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. <html></small></html> Do usunięcia pustego katalogu można użyć ''rmdir //dir//''. ~~Zadanie.#~~ Stwórz następujące drzewo katalogów: . ├── foo │ ├── baz │ │ └── bar │ └── bar └── foobaz └── bar ~~Zadanie.#~~ Usuń katalog ''foo/baz''. === Twarde i symboliczne dowiązania === Wiele wpisów w katalogach może wskazywać na ten sam plik. Nazywa się to [[https://en.wikipedia.org/wiki/Hard_link|twardym dowiązaniem]] (//hard link//). \\ Wpis w katalogu może również wskazywać na inny wpis w katalogu. Nazywa się to [[https://en.wikipedia.org/wiki/Symbolic_link|dowiązaniem symbolicznym]] (//soft link// / //symbolic link//, zwykle skracane do //symlink//). Wszystkie Linuksowe systemy [[https://en.wikipedia.org/wiki/Comparison_of_file_systems#File_capabilities|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.#~~ Stwórz plik ''plik1'' z zawartością. Stwórz twarde dowiązanie do pliku ''plik1'' o nazwie ''plik2''. Zmodyfikuj ''plik2''. Wyświetl ''plik1''. <html><small></html> ~~Zadanie.#~~ 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. <html></small></html> ~~Zadanie.#~~ Utwórz w swoim katalogu domowym symlink o nazwie ''TMP'' wskazujący na ''/tmp''. Zmień katalog na ''TMP''. Co wypisuje ''pwd''? ~~Zadanie.#~~ 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.#~~ Utwórz symlink do nieistniejącej ścieżki. Wyświetl zawartość katalogu w którym jest ten symlink. <html><small></html> Polecenie ''readlink [-f] //cel//'' rozwiązuje wszystkie symlinki i wyświetla [[https://en.wikipedia.org/wiki/Canonicalization|kanoniczną]] postać ścieżki. System plików Windows NTFS też obsługuje dowiązania. Tworzenie ich jest możliwe np. poleceniem [[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/mklink|mklink]]. <html></small></html> === 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ło//… //cel//''. \\ 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 <html><small></html>(o ile nie zostanie użyty przełącznik ''-i'' bądź ''-n'')<html></small></html>. <html><small></html> Domyślnie ''cp'' odmówi kopiowania katalogu. Przełącznik ''-r'' pozwoli skopiować rekurencyjnie katalog z zawartością. <html></small></html> ''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''). <html><small></html> Z przełącznikiem ''-l'' program ''cp'' tworzy twarde dowiązania zamiast kopiować pliki. Można to połączyć z ''--recursive''. <html></small></html> ~~Zadanie.#~~ Skopuj jednym poleceniem pliki ''/etc/os-release'' i ''/etc/SUSE-brand'' do bieżącego katalogu. ~~Zadanie.#~~ 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.#~~ Skopiuj rekurencyjnie ''someDir'' i zawartość. ~~Zadanie.#~~ Przenieś nowo utworzony katalog do środka katalogu ''someDir''. ~~Zadanie.#~~ Zmień nazwę katalogu ''someDir'' na inną. <html><small></html> ~~Zadanie.#~~ 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? <html><small></html> (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 …'')<html></small></html> <html></small></html> === 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. <html><small></html> MS Windows ma domyślnie komendę ''scp'', ale zwykle wygodniej jest korzystać z [[https://en.wikipedia.org/wiki/Comparison_of_FTP_client_software#Protocol_support|menadżerów plików]] wspierających SSH. <html></small></html> 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.#~~ Stwórz plik w katalogu ''/tmp'' swojego komputera. Skopiuj go do katalogu domowego użytkownika ''student'' na innym komputerze. ~~Zadanie.#~~ Skopiuj ten plik do katalogu ''/tmp'' innego komputera. ~~Zadanie.#~~ Skopiuj ten plik do katalogu ''/tmp'' innego komputera używając ''sftp''. <html><small></html> === Rsync === Program ''[[https://en.wikipedia.org/wiki/Rsync|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. <html></small></html> === 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.#~~ 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.#~~ 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.#~~ Stwórz katalog i usuń go używając ''rm''. ~~META: language = pl ~~
so/intro.1677506762.txt.gz
· ostatnio zmienione: 2023/02/27 15:06 (edycja zewnętrzna)
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Złóż / rozłóż wszystko
Do góry