Linux Professional Institute Learning Logo.
Przejdź do głównej treści
  • Strona Główna
    • Wszystkie Zasoby
    • Materiały Dydaktyczne LPI
    • Zostań Współautorem
    • Partnerzy Wydawniczy
    • Zostań Partnerem Wydawniczym
    • FAQ
    • Współautorzy
    • Harmonogram
    • Kontakt
  • LPI.org
2.4 Lekcja 1
Temat 1: Społeczność Linuxa i kariera w środowisku Open Source
1.1 Ewolucja Linuksa i popularne systemy operacyjne
  • Wkrótce...
1.2 Najważniejsze aplikacje Open Source
  • 1.2 Lekcja 1
1.3 Oprogramowanie i licencje typu open source
  • 1.3 Lekcja 1
1.4 Umiejętności ICT i praca w systemie Linux
  • 1.4 Lekcja 1
Temat 2: Poruszanie się po systemie Linux
2.1 Podstawy wiersza poleceń
  • 2.1 Lekcja 1
2.2 Korzystanie z wiersza poleceń w celu uzyskania pomocy
  • 2.2 Lekcja 1
2.3 Korzystanie z katalogów i listy plików
  • 2.3 Lekcja 1
  • 2.3 Lekcja 2
2.4 Tworzenie, przenoszenie i usuwanie plików
  • 2.4 Lekcja 1
Temat 3: Siła wiersza poleceń
3.1 Archiwizacja plików za pomocą wiersza poleceń
  • 3.1 Lekcja 1
3.2 Wyszukiwanie i wyodrębnianie danych z plików
  • 3.2 Lekcja 1
  • 3.2 Lekcja 2
3.3 Przekształcanie poleceń w skrypt
  • 3.3 Lekcja 1
  • 3.3 Lekcja 2
Temat 4: System operacyjny Linux
4.1 Wybór systemu operacyjnego
  • Wkrótce...
4.2 Zrozumienie sprzętu komputerowego
  • 4.2 Lekcja 1
4.3 Gdzie są przechowywane dane
  • 4.3 Lekcja 1
  • 4.3 Lekcja 2
4.4 Komputer w sieci
  • 4.4 Lekcja 1
Temat 5: Bezpieczeństwo i uprawnienia do plików
5.1 Podstawy bezpieczeństwa i identyfikacja typów użytkowników
  • 5.1 Lekcja 1
5.2 Tworzenie użytkowników i grup
  • 5.2 Lekcja 1
5.3 Zarządzanie uprawnieniami do plików i prawami własności plików
  • 5.3 Lekcja 1
5.4 Katalogi i pliki specjalne
  • 5.4 Lekcja 1
How to get certified
  1. Temat 2: Poruszanie się po systemie Linux
  2. 2.4 Tworzenie, przenoszenie i usuwanie plików
  3. 2.4 Lekcja 1

2.4 Lekcja 1

Certyfikat:

Linux Essentials

Wersja:

1.6

Temat:

2 Poruszanie się po systemie Linux

Cel nauki:

2.4 Tworzenie, przenoszenie i usuwanie plików

Lekcja:

1 z 1

Wstęp

Ta lekcja obejmuje zarządzanie plikami i katalogami w systemie Linux za pomocą narzędzi wiersza poleceń.

Plik to zbiór danych o nazwie i zestawie atrybutów. Na przykład, jeśli prześlesz zdjęcia z telefonu do komputera i nadasz im opisowe nazwy, będziesz mieć na komputerze wiele plików graficznych. Pliki te mają atrybuty, takie jak data ostatniego dostępu do pliku lub data ostatniej modyfikacji.

Katalog to specjalny typ pliku służący do organizowania innych plików. Pomyśl o szafce na akta, gdzie znajdują się katalogi (foldery), w których przechowywane są dokumenty jako pliki. Ale w przeciwieństwie do folderów z plikami kartonowymi, wewnątrz innego katalogu możesz przechowywać dodatkowe katalogi.

Wiersz poleceń jest najskuteczniejszym sposobem zarządzania plikami w systemie Linux. Narzędzia powłoki i wiersza poleceń mają funkcje, które sprawiają, że praca z wierszem poleceń jest szybsza i łatwiejsza niż w przypadku pracy z graficznym menedżerem plików.

W tej sekcji wykorzystasz polecenia ls, mv, cp, pwd, find, touch, rm, rmdir, echo, cat oraz mkdir do zarządzania i organizowania plików i katalogów.

Rozróżnianie dużych i małych liter

W przeciwieństwie do systemu Microsoft Windows, w systemach Linux w nazwach plików i katalogów rozróżniana jest wielkość liter. Na przykład nazwy /etc/ oraz /ETC/ są różnymi katalogami. Sprawdź następujące polecenia:

$ cd /
$ ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
$ cd ETC
bash: cd: ETC: No such file or directory
$ pwd
/
$ cd etc
$ pwd
/etc

Polecenie pwd wyświetla pełną ścieżkę do katalogu, w którym się aktualnie znajdujesz. Jak widać, przełączenie do katalogu /ETC nie zadziałało, ponieważ takiego katalogu nie ma. Z kolei przejście do istniejącego katalogu /etc powiodło się bez problemów.

Tworzenie katalogów

Do tworzenia katalogów służy polecenie mkdir.

Utwórzmy poniżej nowy katalog w naszym katalogu domowym:

$ cd ~
$ pwd
/home/user
$ ls
Desktop  Documents  Downloads
$ mkdir linux_essentials-2.4
$ ls
Desktop  Documents  Downloads  linux_essentials-2.4
$ cd linux_essentials-2.4
$ pwd
/home/emma/linux_essentials-2.4

W tej lekcji wszystkie polecenia będą wykonywane w poniższym katalogu lub w jednym z jego podkatalogów.

Aby w łatwy sposób wrócić z dowolnego miejsca w systemie plików Linuxa do katalogu z tej lekcji, możesz użyć następującego polecenia:

$ cd ~/linux_essentials-2.4

Powłoka interpretuje znak tyldy ~ jako Twój katalog domowy w systemie Linux.

W katalogu z tej lekcji utwórz dodatkowe katalogi, których użyjemy do ćwiczeń. Możesz dodać wszystkie nazwy katalogów, oddzielone spacjami po poleceniu mkdir:

$ mkdir creating moving copying/files copying/directories deleting/directories deleting/files globs
mkdir: cannot create directory ‘copying/files’: No such file or directory
mkdir: cannot create directory ‘copying/directories’: No such file or directory
mkdir: cannot create directory ‘deleting/directories’: No such file or directory
mkdir: cannot create directory ‘deleting/files’: No such file or directory
$ ls
creating  globs  moving

Zwróć uwagę na komunikat o błędzie, że zostały utworzone tylko elementy creating, globs oraz moving. Katalogi copying oraz deleting jeszcze nie istnieją. Domyślnie polecenie mkdir nie utworzy katalogu w katalogu, który jeszcze nie istnieje. Opcja -p or --parents nakazuje poleceniu mkdir utworzenie katalogów nadrzędnych, nawet jeśli one nie istnieją. Teraz wypróbuj to samo polecenie mkdir, ale z opcją -p:

$ mkdir -p creating moving copying/files copying/directories deleting/directories deleting/files globs

Teraz nie otrzymasz już żadnych komunikatów o błędach. Zobaczmy, jakie katalogi istnieją teraz:

$ find
.
./creating
./moving
./globs
./copying
./copying/files
./copying/directories
./deleting
./deleting/directories
./deleting/files

Polecenie find jest na ogół wykorzystywane do wyszukiwania plików i katalogów. Jednakże wyświetli ono listę wszystkich plików, katalogów i podkatalogów w bieżącym katalogu, jeżeli nie dodamy do tego polecenia żadnych opcji.

Tip

Podczas wyświetlania zawartości katalogu z opcją ls, szczególnie przydatne są opcje -t oraz -r. Opcje te sortują dane wyjściowe według czasu (-t) i odwracają kolejność sortowania (-r). W tym przypadku najnowsze pliki będą znajdować się na dole wyników.

Tworzenie plików

Zwykle pliki są tworzone przez programy, które pracują z danymi przechowywanymi w plikach. Jednakże sam możesz utworzyć pusty plik za pomocą polecenia touch. Jeśli uruchomisz polecenie touch na istniejącym pliku, wówczas zawartość pliku się nie zmieni, tylko zostanie zaktualizowany znacznik czasu modyfikacji pliku.

Uruchom następującą komendę, aby utworzyć kilka plików do lekcji “globs”:

$ touch globs/question1 globs/question2012 globs/question23 globs/question13 globs/question14
$ touch globs/star10 globs/star1100 globs/star2002 globs/star2013

Sprawdźmy teraz, czy wszystkie pliki znajdują się w katalogu globs:

$ cd globs
$ ls
question1   question14    question23  star1100  star2013
question13  question2012  star10      star2002

Zwróć uwagę, jak polecenie touch utworzyło pliki. Za pomocą polecenia cat możesz wyświetlić zawartość pliku tekstowego. Wypróbuj to polecenie cat na jednym z właśnie utworzonych plików:

$ cat question14

Ponieważ polecenie touch tworzy puste pliki, zatem nie powinieneś otrzymać żadnych wyników. Możesz użyć polecenia echo ze znakiem >, aby utworzyć proste pliki tekstowe. Wpisz polecenie jak poniżej:

$ echo hello > question15
$ cat question15
hello

echo wyświetla tekst w wierszu poleceń. Znak > nakazuje powłoce, aby zapisała wynik polecenia do określonego pliku, zamiast wyświetlenia go w terminalu. W konsekwencji wynik działania polecenia echo, w tym przypadku słowo hello, jest zapisywany w pliku question15. Taki rezultat jest specyficzny nie tylko dla polecenia echo. Zapis do pliku za pomoca znaku > może być użyty także z każdym innym poleceniem systemu Linux.

Warning

Zachowaj ostrożność podczas używania znaku > !!! Jeśli docelowy plik już istnieje, zostanie on nadpisany!

Zmiana nazw plików

Pliki można przenosić oraz zmieniać ich nazwy za pomocą polecenia mv.

Ustaw katalog roboczy na katalog o nazwie moving:

$ cd ~/linux_essentials-2.4/moving

Utwórz pliki do ćwiczeń. Powinieneś już znać niezbędne polecenia:

$ touch file1 file22
$ echo file3 > file3
$ echo file4 > file4
$ ls
file1  file22  file3  file4

Załóżmy, że popełniono literówkę, i zamiast pliku o nazwie file2 błędnie utworzono plik o nazwie file22. Skoryguj ten błąd za pomocą polecenia mv. Podczas zmiany nazwy pliku pierwszy argument to aktualna nazwa, a drugi to nowa nazwa:

$ mv file22 file2
$ ls
file1  file2  file3  file4

Uważaj na polecenie mv. Jeśli zmienisz nazwę pliku na nazwę istniejącego pliku, wówczas istniejący plik zostanie nadpisany przez nowy. Przetestujmy to z plikami file3 oraz file4:

$ cat file3
file3
$ cat file4
file4
$ mv file4 file3
$ cat file3
file4
$ ls
file1  file2  file3

Zauważ, że zawartość pliku file3 to teraz zawartość pliku file4. Użyj opcji -i, aby polecenie mv zapytało użytkownika o potwierdzenie chęci nadpisania istniejącego pliku:

$ touch file4 file5
$ mv -i file4 file3
mv: overwrite ‘file3’? y

Przenoszenie plików

Pliki są przenoszone z jednego katalogu do drugiego za pomocą polecenia mv.

Utwórz kilka katalogów, do których chcesz przenieść pliki:

$ cd ~/linux_essentials-2.4/moving
$ mkdir dir1 dir2
$ ls
dir1  dir2  file1  file2  file3  file5

Przenieś plik file1 do katalogu dir1:

$ mv file1 dir1
$ ls
dir1  dir2  file2  file3  file5
$ ls dir1
file1

Zwróć uwagę, że ostatnim argumentem polecenia mv jest katalog docelowy. Zawsze, jeśli ostatnim argumentem polecenia mv jest katalog, wówczas pliki zostaną przeniesione do tego katalogu. Jezeli chcemy przenieśc wiele plików, wówczas możemy je wypisać w jednym poleceniu mv:

$ mv file2 file3 dir2
$ ls
dir1  dir2  file5
$ ls dir2
file2  file3

Za pomocą polecenia mv można także przenosić i zmieniać nazwy katalogów. Jako ćwiczenie zmień nazwę katalogu dir1 na nazwę dir3:

$ ls
dir1  dir2  file5
$ ls dir1
file1
$ mv dir1 dir3
$ ls
dir2  dir3  file5
$ ls dir3
file1

Usuwanie plików i katalogów

Polecenie rm może usuwać zarówno pliki, jak i i katalogi. Natomiast polecenie rmdir może usuwać tylko katalogi. Oczyśćmy przenoszony katalog moving poprzez usunięcie pliku file5:

$ cd ~/linux_essentials-2.4/moving
$ ls
dir2  dir3  file5
$ rmdir file5
rmdir: failed to remove ‘file5’: Not a directory
$ rm file5
$ ls
dir2  dir3

Domyślnie polecenie rmdir może usuwać tylko puste katalogi, dlatego musieliśmy użyć polecenia rm, aby usunąć zwykły plik. Spróbuj usunąć katalog deleting:

$ cd ~/linux_essentials-2.4/
$ ls
copying  creating  deleting  globs  moving
$ rmdir deleting
rmdir: failed to remove ‘deleting’: Directory not empty
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 files

Domyślnie polecenie rmdir odmawia usunięcia katalogu, który nie jest pusty. Użyj polecenia rmdir, aby usunąć jeden z pustych podkatalogów w usuwanym katalogu deleting:

$ ls -a deleting/files
.  ..
$ rmdir deleting/files
$ ls -l deleting
directories

Usunięcie dużej liczby plików lub głębokich struktur katalogów z wieloma podkatalogami może wydawać się czasochłonne, jednakże w rzeczywistości jest bardzo łatwe. Domyślnie rm działa tylko na zwykłych plikach. Opcja -r służy do przesłonięcia tego zachowania. Ale uważaj, polecenie rm -r jest bardzo niebezpieczne! Kiedy używasz polecenia rm z opcją -r, wówczas rm usunie nie tylko wszystkie katalogi, ale również wszystko w tym katalogu, łącznie z podkatalogami i ich zawartością. Przekonaj się, jak działa rm -r:

$ ls
copying  creating  deleting  globs  moving
$ rm deleting
rm: cannot remove ‘deleting’: Is a directory
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
$ rm -r deleting
$ ls
copying  creating  globs  moving

Zwróciłeś uwagę, jak zniknął katalog deleting mimo, że nie był pusty? Podobnie jak polecenie mv, także polecenie rm ma opcję -i, która żąda od użytkownika potwierdzenia przed wykonaniem polecenia. Użyj rm -ri, aby usunąć niepotrzebne katalogi z katalogu moving:

$ find
.
./creating
./moving
./moving/dir2
./moving/dir2/file2
./moving/dir2/file3
./moving/dir3
./moving/dir3/file1
./globs
./globs/question1
./globs/question2012
./globs/question23
./globs/question13
./globs/question14
./globs/star10
./globs/star1100
./globs/star2002
./globs/star2013
./globs/question15
./copying
./copying/files
./copying/directories
$ rm -ri moving
rm: descend into directory ‘moving’? y
rm: descend into directory ‘moving/dir2’? y
rm: remove regular empty file ‘moving/dir2/file2’? y
rm: remove regular empty file ‘moving/dir2/file3’? y
rm: remove directory ‘moving/dir2’? y
rm: descend into directory ‘moving/dir3’? y
rm: remove regular empty file ‘moving/dir3/file1’? y
rm: remove directory ‘moving/dir3’? y
rm: remove directory ‘moving’? y

Kopiowanie plików i katalogów

Polecenie cp służy do kopiowania plików i katalogów. Skopiuj kilka plików do katalogu copying:

$ cd ~/linux_essentials-2.4/copying
$ ls
directories  files
$ cp /etc/nsswitch.conf files/nsswitch.conf
$ cp /etc/issue /etc/hostname files

Jeśli ostatnim argumentem jest katalog, wówczas polecenie cp utworzy kopię poprzednich argumentów w katalogu. Podobnie jak w przypadku polecenia mv, tak samo i w przypadku polecenia cp można w jednym poleceniu określić od razu wiele plików do skopiowania, o ile celem jest katalog.

Jeśli oba argumenty polecenia cp są plikami i oba pliki istnieją, wówczas cp nadpisuje drugi plik kopią pierwszego pliku. Przećwiczmy to, nadpisując plik issue plikiem o nazwie hostname:

$ cd ~/linux_essentials-2.4/copying/files
$ ls
hostname  issue  nsswitch.conf
$ cat hostname
mycomputer
$ cat issue
Debian GNU/Linux 9 \n \l

$ cp hostname issue
$ cat issue
mycomputer

Teraz spróbujmy utworzyć kopię katalogu files w katalogu directories:

$ cd ~/linux_essentials-2.4/copying
$ cp files directories
cp: omitting directory ‘files’

Jak widać, polecenie cp działa domyślnie tylko na pojedynczych plikach. Aby skopiować katalog, użyj opcji -r. Zauważ, że opcja -r powoduje, że polecenie cp kopiuje także zawartość katalogu, który właśnie kopiujesz:

$ cp -r files directories
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname

Zwróć uwagę, że jeśli istniejący katalog był używany jako miejsce docelowe, wówczas polecenie cp utworzyło w nim kopię katalogu źródłowego. Jeśli miejsce docelowe nie istnieje, wówczas polecenie cp utworzy je i wypełni zawartością katalogu źródłowego:

$ cp -r files files2
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
./files2
./files2/nsswitch.conf
./files2/fstab
./files2/hostname

Globbing

To, co jest powszechnie określane jako globbing, jest prostym językiem dopasowywania wzorców. Powłoki wiersza poleceń w systemach Linux używają tego języka do odwoływania się do grup plików, których nazwy pasują do określonego wzorca. POSIX.1-2017 określa następujące znaki dopasowania do wzorca:

*

Dopasowuje dowolną liczbę znaków, w tym także bez znaku

?

Dopasowuje dokładnie jeden znak

[]

Dopasowuje klasę znaków

W tłumaczeniu oznacza to, że możesz powiedzieć powłoce, aby dopasowała wzorzec zamiast dokładnego ciągu tekstu. Zwykle użytkownicy Linuxa określają wiele plików za pomocą globu, zamiast wpisywać każdą nazwę pliku osobno. Uruchom następujące polecenia:

$ cd ~/linux_essentials-2.4/globs
$ ls
question1   question14  question2012  star10    star2002
question13  question15  question23    star1100  star2013
$ ls star1*
star10  star1100
$ ls star*
star10  star1100  star2002  star2013
$ ls star2*
star2002  star2013
$ ls star2*2
star2002
$ ls star2013*
star2013

Powłoka rozszerza * na dowolną liczbę znaków, więc powłoka interpretuje star* jako cokolwiek w tym kontekście, co zaczyna się od słowa star. Po uruchomieniu polecenia ls star*, Twoja powłoka nie uruchamia polecenia ls z argumentem star*, tylko szuka w bieżącym katalogu plików, które pasują do wzorca star*, w tym także zawierających słowo star i przekształca każdy plik pasujacy do wzorca na argument dla ls. Przykład: polecenie ls star*:

$ ls star*

jest takie samo w odniesieniu do ls jak:

$ ls star10  star1100  star2002  star2013

Znak * dla polecenia ls nie oznacza dosłownie nic. Aby to udowodnić, uruchom następujące polecenie:

$ ls star\*
ls: cannot access star*: No such file or directory

Jeśli poprzedzasz dowolny znak ukośnikiem \, wówczas poinstruujesz powłokę, aby tego dowolnego znaku nie interpretowała. W tym przypadku chcesz, aby polecenie ls miało argument star* zamiast tego, co glob star* zastępuje:

Znak ? zastępuje dowolny pojedynczy znak. Wypróbuj następujące polecenia, aby się o tym przekonać:

$ ls
question1   question14  question2012  star10    star2002
question13  question15  question23    star1100  star2013
$ ls question?
question1
$ ls question1?
question13  question14  question15
$ ls question?3
question13  question23
$ ls question13?
ls: cannot access question13?: No such file or directory

Nawiasy [] służą do wskazania zastępowanych zakresów lub klas znaków.. Nawiasy [] działają tak samo, jak w wyrażeniach regularnych POSIX, z wyjątkiem tego, że w przypadku globów zamiast znaku ^ używany jest znak !.

Jako ćwiczenie, utwórz kilka plików:

$ mkdir brackets
$ cd brackets
$ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7

Zakresy w nawiasach [] są wyrażone za pomocą -:

$ ls
file1  file2  file3  file4  file5  file6  file7  filea  fileb  filec
$ ls file[1-2]
file1  file2
$ ls file[1-3]
file1  file2  file3

Można określić kilka zakresów:

$ ls file[1-25-7]
file1  file2  file5  file6  file7
$ ls file[1-35-6a-c]
file1  file2  file3  file5  file6  filea  fileb  filec

Aby dopasować określony zestaw znaków, można także użyć nawiasów kwadratowych.

$ ls file[1a5]
file1  file5  filea

Możesz również użyć znaku ^ jako pierwszego znaku, aby dopasować wszystko oprócz określonych znaków.

$ ls file[^a]
file1  file2  file3  file4  file5  file6  file7  fileb  filec

Ostatnią rzeczą, którą omówimy w tej lekcji, są klasy postaci. Aby określić klasę znaków, użyj [:nazwę_klasy:] ([:classname:]). Na przykład, aby użyć klasy cyfr, która pasuje do liczb, należy zrobić coś takiego:

$ ls file[[:digit:]]
file1  file2  file3  file4  file5  file6  file7
$ touch file1a file11
$ ls file[[:digit:]a]
file1  file2  file3  file4  file5  file6  file7  filea
$ ls file[[:digit:]]a
file1a

Glob file[[:digit:]a] dopasowuje argument file, po którym następuje cyfra lub a.

Obsługiwane klasy znaków zależą od bieżącej konfiguracji ustawień regionalnych. POSIX wymaga następujących klas znaków dla wszystkich lokalizacji:

[:alnum:]

Litery i cyfry.

[:alpha:]

Wielkie lub małe litery.

[:blank:]

Spacje i tabulatory.

[:cntrl:]

Znaki sterujące, np. backspace, dzwonek, NAK, ucieczka.

[:digit:]

Liczby (0123456789).

[:graph:]

Znaki graficzne (wszystkie znaki oprócz ctrl i spacji)

[:lower:]

Małe litery (a-z).

[:print:]

Znaki do druku ((alnum, punct i znak spacji).

[:punct:]

Znaki interpunkcyjne, tj. !, &, ".

[:space:]

Białe znaki, np. tabulatory, spacje, znaki nowej linii.

[:upper:]

Wielkie litery(A-Z).

[:xdigit:]

Liczby szesnastkowe (zwykle 0123456789abcdefABCDEF).

Ćwiczenia z przewodnikiem

  1. Biorąc pod uwagę poniższy listing, wybierz katalogi, które zostaną utworzone przez polecenie mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today

    $ pwd
    /tmp
    $ find
    .
    ./outfiles
    ./outfiles/text

    /tmp

    /tmp/outfiles

    /tmp/outfiles/text

    /tmp/outfiles/text/today

    /tmp/infiles

    /tmp/infiles/text

    /tmp/infiles/text/today

  2. Jak opcja -v zmienia polecenia mkdir, rm oraz cp?

  3. Co się stanie, jeśli przypadkowo spróbujesz skopiować trzy pliki do istniejącego pliku zamiast do katalogu w tym samym wierszu poleceń?

  4. Co się stanie, gdy użyjesz mv do przeniesienia katalogu do niego samego?

  5. Jak usunąć wszystkie pliki w bieżącym katalogu, które zaczynają się od old?

  6. Który z poniższych plików będzie pasował do log_[a-z]_201?_*_01.txt ?

    log_3_2017_Jan_01.txt

    log_+_2017_Feb_01.txt

    log_b_2007_Mar_01.txt

    log_f_201A_Wednesday_01.txt

  7. Utwórz kilka globów pasujących do następującej listy nazw plików:

    doc100
    doc200
    doc301
    doc401

Ćwiczenia eksploracyjne

  1. Skorzystaj ze strony podręcznika dla polecenia cp, aby dowiedzieć się, jak wykonać kopię pliku i sprawdzić, czy uprawnienia i czasy modyfikacji są zgodne z oryginałem.

  2. Co robi polecenie rmdir -p? Poeksperymentuj z nim i wyjaśnij, czym różni się od polecenia rm -r.

  3. NIE WYKONUJ TEGO POLECENIA: Jak myślisz, co zrobi polecenie `rm -ri /*? (NAPRAWDĘ, NIE PRÓBUJ TEGO ROBIĆ!)

  4. Oprócz wykorzystywania opcji -i, czy jest możliwe, aby zapobiec nadpisywaniu plików docelowych przez polecenie mv?

  5. Wytłumacz wynik polecenia cp -u.

Podsumowanie

Środowisko wiersza poleceń systemu Linux udostępnia narzędzia do zarządzania plikami, Niektóre powszechnie używane polecenia to cp, mv, mkdir, rm oraz rmdir. Te narzędzia, w połączeniu z globami, umożliwiają użytkownikom bardzo szybkie wykonanie dużej ilości pracy.

Wiele poleceń posiada opcję -i, której można użyć do potwierdzenia polecenia przed jego wykonaniem. Podpowiedzi mogą zaoszczędzić Ci wielu kłopotów, jeśli popełnisz błąd (np. coś wpisałeś błędnie).

Wiele poleceń ma opcję -r. Opcja -r zwykle oznacza rekurencję. W matematyce i informatyce funkcja rekurencyjna to funkcja wykorzystująca samą siebie w swojej definicji. Jeśli chodzi o narzędzia wiersza poleceń, zwykle oznacza to zastosowanie polecenia do katalogu i wszystkiego, co się w nim znajduje.

Polecenia użyte w tej lekcji:

cat

Odczytuje i wyświetla zawartość pliku.

cp

Kopiuje pliki lub katalogi.

echo

Wyświetla ciąg.

find

Przegląda drzewo systemu plików i wyszukuje pliki, które pasują do określonego zestawu kryteriów.

ls

Wyświetla właściwości plików i katalogów oraz wyświetla zawartość katalogu.

mkdir

Tworzy nowe katalogi.

mv

Przenosi pliki i katalogi lub zmienia ich nazwy.

pwd

Wyświetla bieżący katalog roboczy.

rm

Usuwa pliki lub katalogi.

rmdir

Usuwa katalogi.

touch

Tworzy nowe, puste pliki lub aktualizuje sygnaturę czasową modyfikacji istniejącego pliku.

Odpowiedzi do ćwiczeń z przewodnikiem

  1. Biorąc pod uwagę poniższy listing, wybierz katalogi, które zostaną utworzone przez polecenie mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today

    $ pwd
    /tmp
    $ find
    .
    ./outfiles
    ./outfiles/text

    Zostaną utworzone zaznaczone katalogi. Katalogi /tmp, /tmp/outfiles oraz /tmp/outfiles/text już istnieją, zatem mkdir je zignoruje.

    /tmp

    /tmp/outfiles

    /tmp/outfiles/text

    /tmp/outfiles/text/today

    X

    /tmp/infiles

    X

    /tmp/infiles/text

    X

    /tmp/infiles/text/today

    X

  2. Jak opcja -v zmienia polecenia mkdir, rm oraz cp?

    Zazwyczaj opcja -v włącza szczegółowe dane wyjściowe. Powoduje, że odpowiednie programy wyświetlają to, co aktualnie wykonują:

    $ rm -v a b
    removed 'a'
    removed 'b'
    $ mv -v a b
    'a' -> 'b'
    $ cp -v b c
    'b' -> 'c'
  3. Co się stanie, jeśli przypadkowo spróbujesz skopiować trzy pliki do istniejącego pliku zamiast do katalogu w tym samym wierszu poleceń?

    Polecenie cp odmówi zrobienia czegokolwiek i wyświetli komunikat o błędzie:

    $ touch a b c d
    $ cp a b c d
    cp: target 'd' is not a directory
  4. Co się stanie, gdy użyjesz polecenia mv do przeniesienia katalogu do niego samego?

    Otrzymasz komunikat o błędzie informujący, że polecenie mv nie może tego zrobić.

    $ mv a a
    mv: cannot move 'a' to a subdirectory of itself, 'a/a'
  5. Jak usunąć wszystkie pliki w bieżącym katalogu, które zaczynają się od old?

    Użyć globu old* z poleceniem rm:

    $ rm old*
  6. Który z poniższych plików będzie pasował do log_[a-z]_201?_*_01.txt ?

    log_3_2017_Jan_01.txt

    log_+_2017_Feb_01.txt

    log_b_2007_Mar_01.txt

    log_f_201A_Wednesday_01.txt

    X

    $ ls log_[a-z]_201?_*_01.txt
    log_f_201A_Wednesday_01.txt

    log_[a-z] pasuje do ciągu log_, po którym następuje dowolna mała litera, więc zarówno log_f_201A_Wednesday_01.txt, jak i log_b_2007_Mar_01.txt są zgodne. Ciąg znaków _201? pasuje do dowolnego pojedynczego znaku, zatem dopasowany jest tylko log_f_201A_Wednesday_01.txt. W końcu *_01.txt pasuje do wszystkiego, co kończy się na _01.txt, więc nasza pozostała opcja pasuje.

  7. Utwórz kilka globów pasujących do następującej listy nazw plików:

doc100
doc200
doc301
doc401

+ Istnieje kilka rozwiązań. Tutaj jest kilka z nich:

+

doc*
doc[1-4]*
doc?0?
doc[1-4]0?

Odpowiedzi do ćwiczeń eksploracyjnych

  1. Skorzystaj ze strony podręcznika dla polecenia cp, aby dowiedzieć się, jak wykonać kopię pliku i sprawdzić, czy uprawnienia i czasy modyfikacji są zgodne z oryginałem.

    Użyj opcji -p. W podręczniku jest napisane:

    $ man cp
    -p     same as --preserve=mode,ownership,timestamps
    --preserve[=ATTR_LIST]
                  preserve the specified attributes (default: mode,ownership,time‐
                  stamps), if  possible  additional  attributes:  context,  links,
                  xattr, all
  2. Co robi polecenie rmdir -p? Poeksperymentuj z nim i wyjaśnij, czym różni się od polecenia rm -r.

    Powoduje, że polecenie rmdir zachowuje się podobnie do mkdir -p. Jeśli zajmiesz się drzewem z pustymi katalogami, wszystkie one zostaną usunięte.

    $ find
    .
    ./a
    ./a/b
    ./a/b/c
    $ rmdir -p a/b/c
    $ ls
  3. NIE WYKONUJ TEGO POLECENIA: Jak myślisz, co zrobi polecenie `rm -ri /*? (NAPRAWDĘ, NIE PRÓBUJ TEGO ROBIĆ!)

    Spowoduje to usunięcie wszystkich plików i katalogów, do których można zapisywać z konta użytkownika. Dotyczy to także wszystkich sieciowych systemów plików.

  4. Oprócz wykorzystywania opcji -i, czy jest możliwe, aby zapobiec nadpisywaniu plików docelowych przez polecenie mv?

    Tak, opcja -n lub --no-clobber zapobiega nadpisywaniu plików przez mv.

    $ cat a
    a
    $ cat b
    b
    $ mv -n a b
    $ cat b
    b
  5. Wytłumacz wynik polecenia cp -u.

    Opcja -u powoduje, że polecenie cp kopiuje plik tylko wtedy, gdy brakuje miejsca docelowego lub jest ono starsze niż plik źródłowy.

    $ ls -l
    total 24K
    drwxr-xr-x 123 emma student  12K Feb  2 05:34 ..
    drwxr-xr-x   2 emma student 4.0K Feb  2 06:56 .
    -rw-r--r--   1 emma student    2 Feb  2 06:56 a
    -rw-r--r--   1 emma student    2 Feb  2 07:00 b
    $ cat a
    a
    $ cat b
    b
    $ cp -u a b
    $ cat b
    b
    $ cp -u a c
    $ ls -l
    total 12
    -rw-r--r-- 1 emma student 2 Feb  2 06:56 a
    -rw-r--r-- 1 emma student 2 Feb  2 07:00 b
    -rw-r--r-- 1 emma student 2 Feb  2 07:00 c

Linux Professional Insitute Inc. Wszelkie prawa zastrzeżone. Odwiedź stronę Learning Materials: https://learning.lpi.org
Dzieło jest udostępnione na licencji Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Następna lekcja

3.1 Archiwizacja plików za pomocą wiersza poleceń (3.1 Lekcja 1)

Przeczytaj następną lekcję

Linux Professional Insitute Inc. Wszelkie prawa zastrzeżone. Odwiedź stronę Learning Materials: https://learning.lpi.org
Dzieło jest udostępnione na licencji Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

LPI jest organizacją non-profit.

© 2023 Linux Professional Institute (LPI) jest światowym standardem certyfikacji i organizacją wspierającą karierę profesjonalistów open source. Posiadając ponad 200 000 certyfikatów, LPI jest pierwszą i największą na świecie neutralną w stosunku do dostawców jednostką certyfikującą Linuksa i open source. LPI certyfikuje profesjonalistów w ponad 180 krajach, przeprowadza egzaminy w wielu językach i posiada setki partnerów szkoleniowych.

Naszym celem jest stworzenie ekonomicznych i kreatywnych możliwości dla każdego poprzez powszechny dostęp do wiedzy i umiejętności open source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Skontaktuj się z nami
  • Polityka prywatności i plików cookiey

Zauważyłeś błąd lub chcesz pomóc ulepszyć tę stronę? Prosimy daj nam znać.

© 1999–2023 The Linux Professional Institute Inc. Wszelkie prawa zastrzeżone.