Narzędzia użytkownika

Narzędzia witryny


so:intro

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
so:intro [2023/02/27 22:56]
jkonczak
so:intro [2026/03/12 01:03] (aktualna)
jkonczak [Dopasowywanie nazw plików]
Linia 24: Linia 24:
 <​html><​small></​html>​ <​html><​small></​html>​
  
-GNU/Linux+Linux, dystrybucja Linuksa, ​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]]   * [[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…)   * 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ę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)   * 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)
 +  * kilka dystrybucji Linuksa jest w większości oparte na wolnym i/lub otwartoźródłowym oprogramowaniu spoza projektu GNU i dostępnym na licencjach niezwiązanych z GNU
  
 <​html></​small></​html>​ <​html></​small></​html>​
Linia 58: Linia 59:
   * 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]]]   * 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   * 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]]]+  * Android używa [[https://​www.landley.net/​toybox/​|toybox]]a [[https://​cs.android.com/​android/​platform/​superproject/main/+/main:​external/​toybox/​toys/​posix/​|[4]]]
   * Dłuższa lista alternatywnych zestawów jest np. tutaj: [[https://​wiki.archlinux.org/​title/​core_utilities]]   * Dłuższa lista alternatywnych zestawów jest np. tutaj: [[https://​wiki.archlinux.org/​title/​core_utilities]]
 <​html></​small></​html>​ <​html></​small></​html>​
  
-POSIX standaryzuje zarówno [[https://​pubs.opengroup.org/​onlinepubs/​9699919799/​utilities/​V3_chap02.html|powłokę]] +POSIX standaryzuje zarówno [[https://​pubs.opengroup.org/​onlinepubs/​9799919799/​utilities/​V3_chap02.html|powłokę]] 
-jak i kluczowe [[https://​pubs.opengroup.org/​onlinepubs/​9699919799/​utilities/​contents.html|narzędzia]].+jak i kluczowe [[https://​pubs.opengroup.org/​onlinepubs/​9799919799/​utilities/​contents.html|narzędzia]].
  
 ==== Jak dostać się do shella ==== ==== Jak dostać się do shella ====
Linia 77: Linia 78:
   * 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]]   * 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]]   * 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]]+  * popularne są też wyjeżdżające z góry terminale przywoływane/​chowane prostym skrótem klawiszowym:​\\ [[https://​apps.kde.org/​yakuake/​|yakuake]] / [[https://guake.github.io/|guake]] / [[https://​github.com/​lanoxx/​tilda|tilda]]
  
 <​html></​small></​html>​ <​html></​small></​html>​
Linia 101: Linia 102:
 W tej chwili wszystkie istotne systemy operacyjne (włącznie z Windows) mają domyślnie zainstalowaną komendę ''​ssh''​. W tej chwili wszystkie istotne systemy operacyjne (włącznie z Windows) mają domyślnie zainstalowaną komendę ''​ssh''​.
  
-<​html>​<small></​html>+<​small>​
  
 SSH (Secure SHell) szyfruje cały ruch. Poprzednik SSH – telnet – wszystko, włącznie z hasłami, wysłał czystym tekstem. SSH (Secure SHell) szyfruje cały ruch. Poprzednik SSH – telnet – wszystko, włącznie z hasłami, wysłał czystym tekstem.
  
-<html></small></html>+Przy uwierzytelnianiu hasłem, klient musi wysłać do serwera swoje hasło. 
 +\\ 
 +Krytyczne dla bezpieczeństwa jest sprawdzenie przez klienta że faktycznie 
 +komunikuje się z docelowym serwerem, a nie z podszywającym się pod niego 
 +serwerem który, odpowiednio spreparowany,​ pozwoli wykraść hasło 
 +([[https://​docs.ssh-mitm.at/​user_guide/​authentication.html#id2|gotowe narzędzie]]) 
 +i/lub przechwycić sesję. 
 +\\ 
 +Do sprawdzania tożsamości serwera używa się [[https://​pl.wikipedia.org/​wiki/​Kryptografia_klucza_publicznego|kryptografii asymetrycznej]]:​ 
 +serwer ma swój (tajny) klucz prywatny i na początku każdego połączenia wysyła 
 +klientowi klucz publiczny, a klient weryfikuje czy klucz wysłany przez serwer 
 +odpowiadający posiadanemu kluczowi prywatnemu. 
 +\\ 
 +Dlatego klient SSH przy pierwszym połączeniu do każdego serwera prosi 
 +użytkownika o sprawdzenie klucza, następnie dopisuje go do bazy kluczy 
 +(w OpenSSH trzymanej w pliku ''​~/​.ssh/​known_hosts''​) 
 +i sprawdza przy każdym kolejnym połączeniu. 
 + 
 +</small>
  
 ~~Zadanie.#​~~ Uruchom emulator terminala. Wykonaj komendy ''​date''​ i ''​echo $SHELL''​. ​ ~~Zadanie.#​~~ Uruchom emulator terminala. Wykonaj komendy ''​date''​ i ''​echo $SHELL''​. ​
Linia 115: Linia 134:
 ~~Zadanie.#​~~ Używając SSH i swojego konta zaloguj się na ''​polluks.cs.put.poznan.pl''​. ~~Zadanie.#​~~ Używając SSH i swojego konta zaloguj się na ''​polluks.cs.put.poznan.pl''​.
  
 +=== Jak zakończyć pracę z powłoką ===
 +
 +Komenda ''​exit''​ kończy pracę bieżącej powłoki. \\
 +Podobnie działa zasygnalizowanie [[https://​en.wikipedia.org/​wiki/​End-of-file|końca pliku]] (wciśnięcie //​Ctrl//​+//​d//​) w pustej linii. \\
 +Jeżeli powłoka jest powłoką logowania, to do jej zakończenia można też  użyć komendy ''​logout''​.
 ===== Korzystanie z pomocy ===== ===== Korzystanie z pomocy =====
  
Linia 136: Linia 160:
 ~~Zadanie.#​~~ Wyświetl listę wszystkich stron o tytule ''​time''​. ~~Zadanie.#​~~ Wyświetl listę wszystkich stron o tytule ''​time''​.
  
-Żeby wyświetlić stronę z wybranej sekcji, należy wpisać ''​man //sekcja// //​nazwa_strony//''​. ​+Żeby wyświetlić stronę z wybranej sekcji, należy wpisać ''​man //sekcja// //​nazwa_strony//​'',​ np. ''​man 2 write''​. ​
  
 ~~Zadanie.#​~~ Samo ''​man''​ jest opisane w dwóch sekcjach. Wyświetl obie strony o nazwie ''​man''​. Co zwiera każda z tych stron? ~~Zadanie.#​~~ Samo ''​man''​ jest opisane w dwóch sekcjach. Wyświetl obie strony o nazwie ''​man''​. Co zwiera każda z tych stron?
Linia 168: Linia 192:
 Opcje są zwykle zdefiniowane w krótkiej formie ''​-o''​ gdzie ''​o''​ to pojedynczy znak bądź długiej ''​--opcja''​ gdzie ''​opcja''​ to nazwa opcji. 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>​+<​html><​small></​html>​Nieliczne programy używają tylko długich opcji poprzedzonych pojedynczym ''​-''​ (np. ''​find'',​ ''​magick'',​ ''​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''​) 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''​)
Linia 212: Linia 236:
 ==== Wyświetlanie zawartości katalogu ==== ==== 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.+Polecenie ​''​**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.+Domyślnie ''​ls''​ nie wyświetla ukrytych plików. Przełącznik **''​-a''​** ​zmienia ​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.+Przełącznik **''​-l''​** 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 pliki w ''/​usr/​share/​zoneinfo/''​ i ''​../​../​../​../​../​bin''​. ​
Linia 260: Linia 284:
 <​html></​small></​html>​ <​html></​small></​html>​
  
-==== Dopasowywanie nazw plików ​====+==== Wildcard, regex, … ==== 
 +<​small>​
  
-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. +W informatyce wykorzystuje się wyrażenia ​opisujące oczekiwany wynik, do których 
- +następnie mogą być dopasowane dane.
-''​*''​ 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 z katalogu ''/​usr/​bin/''​ 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> +Przykładowo ​//liniektóre zaczynają się od słowa, po których ​następuje znak 
-''​mkdir -p //​dir1/​dir2/​dir3//''​ tworzy katalog ''​dir1''​i katalog ''​dir2''​ w ''​dir1'',​ i katalog ''​dir3''​ w ''​dir1/​dir2''​. +równości// można zwykle ​zapisać wyrażeniem regularnym ​''​^\w+=''​.
-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//''​**.+(Takiego wyrażenia ​można użyć ​zarówno do wybrania pasujących linii z pliku jak 
 +i sprawdzenia czy podana linia pasuje.)
  
-~~Zadanie.#​~~ Stwórz plik ''​plik1''​ z zawartością. Stwórz twarde dowiązanie do pliku ''​plik1''​ o nazwie ''​plik2''​. Zmodyfikuj ''​plik2''​. Wyświetl ''​plik1''​.+Istnieje wiele pomysłów jak mają wyglądać i działać takie wyrażenia.
  
-<​html><​small><​/html>+W powłoce najczęściej wykorzystuje się 
 +//​[[https://​pl.wikipedia.org/​wiki/​Wieloznacznik|wildcard]]//​y 
 +i [[https://​en.wikipedia.org/​wiki/​Regular_expression|wyrażenia regularne]]. \\
  
-~~Zadanie.#​~~ Komenda ''​ls''​ może wyświetlić ilość twardych dowiązań. Sprawdź gdzie ta informacja jest wyświetlana. +Składnia i implementacja zarówno wildcardów jak i wyrażeń regularnych różni się 
- +między aplikacjami ​językami programowania.
-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 ​yć przełącznika **''​-a''​** (''​--archive''​).+W powłoce ​ywa się składni opisanej m. inn. w podręczniku systemowym:​ 
 +''​[[https://​man7.org/​linux/​man-pages/​man7/​glob.7.html|man 7 glob]]''​
 +''​[[https://​man7.org/​linux/​man-pages/​man7/​regex.7.html|man 7 regex]]''​
  
-<​html><​small>​</html>+</small>
  
-Z przełącznikiem ''​-l''​ program ''​cp''​ tworzy twarde dowiązania zamiast kopiować pliki. Można to połączyć z ''​--recursive''​.+==== Dopasowywanie nazw plików ====
  
-<​html><​/small><​/html>+Przetwarzając tekst wpisany przez użytkownika powłoka próbuje zastąpić nazwami pasujących plików 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.
  
-~~Zadanie.#​~~ Skopuj jednym poleceniem pliki ''​/​etc/​os-release'' ​''​/etc/SUSE-brand''​ do bieżącego katalogu.+''​*'' ​rozwija się do dowolnego tekstu \\ 
 +''​?''​ rozwija się do dowolnego znaku \\ 
 +''​[ace]''​ rozwija się do ''​a'',​ ''​c'',​ lub ''​e''​ \\ 
 +''​[f-h]''​ do ''​f'',​ ''​g'',​ lub ''​h''​
  
-~~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.+Jeżeli istnieje co najmniej jeden plik pasujący do globa, to powłoka zastępuje glob wszystkimi pasującymi nazwami plikówJeżeli żaden ​plik nie pasuje, to glob pozostaje niezmieniony.
  
-~~Zadanie.#​~~ ​Skopiuj rekurencyjnie ​''​someDir'' ​i zawartość.+~~Zadanie.#​~~ ​Przejdź do katalogu ​''​/​usr/​bin/''​. Wypisz pliki kończące się na ''​cat''​.
  
-~~Zadanie.#​~~ ​Przenieś nowo utworzony katalog ​do środka ​katalogu ''​someDir''​.+~~Zadanie.#​~~ ​Przejdź ​do katalogu ​domowego i stamtąd wypisz pliki z katalogu ''/​usr/​bin/''​ kończące się na ''​cat''​.
  
-~~Zadanie.#​~~ ​Zmień nazwę katalogu ​''​someDir'' ​na inną.+~~Zadanie.#​~~ ​Wypisz pliki znajdujące się ''​/usr/bin/'' ​i mające dwuznakową nazwę.
  
-<​html><​small><​/html>+~~Zadanie.#​~~ Jedną komendą wypisz pliki znajdujące się w katalogu ''​/usr/​share/​zoneinfo/''​ i jego bezpośrednich podkatalogach.
  
-~~Zadanie.#​~~ ​Skopiuj nowo nazwany katalog podając przełączniki ​''​-al''​. Zmień wybrany plik 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>​+~~Zadanie.#​~~ ​Wypisz pliki o nazwie ​''​UTC'' ​znajdujące się dowolnym podkatalogu ​''/​usr/share/zoneinfo/''​.
  
-<​html></​small></​html>​ +~~Zadanie.#~~ Wypisz ​pliki o nazwie zaczynające się od ''​L'' ​znajdujące się w dowolnym podkatalogu ​''/​usr/share/zoneinfo/''​.
- +
-=== Kopiowanie plików do/z maszyny zdalnej === +
- +
-Za pomocą SSH można kopiować plikiJeś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>​ <​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.+~~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.
  
-<​html></​small></​html>​ +~~Zadanie.#​~~ ​Przejdź ​do katalogu ''/​usr/bin'' ​i wykonaj ​''​ls*''​. ​Co się stało?
- +
-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>​ <​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''​. 
  
  
so/intro.1677534986.txt.gz · ostatnio zmienione: 2023/02/27 22:56 przez jkonczak