Przejdź do treści
Lekcja 3 z 117

Kurs › Moduł 0 › Lekcja 3

Tworzenie, kopiowanie i kasowanie

⏱ ok. 4 min czytania· moduł 0: Pierwsze kroki

Po tej lekcji: kursant tworzy foldery i pliki, kopiuje, przenosi, zmienia nazwy, podgląda zawartość i bezpiecznie usuwa.

Wstęp

W 1998 roku w Pixarze ktoś wpisał w terminalu jedną komendę do kasowania plików. I z serwerów zaczął znikać film Toy Story 2.

Dziś poznasz tę komendę. I poznasz ją tak, żeby nigdy nie zrobić tego, co oni.

Ale najpierw zbudujemy coś, co będzie co kasować.

Tworzenie folderów

mkdir projekty

mkdir to „make directory”, czyli „zrób folder”. Proste.

A teraz chcesz zrobić od razu folder w folderze w folderze:

mkdir -p projekty/youtube/odcinek1

Bez -p Bash się obrazi, że folderu youtube nie ma. Z -p po prostu robi wszystkie brakujące po drodze. Jak budowlaniec, który dostaje zlecenie na pokój na trzecim piętrze i nie pyta, gdzie jest pierwsze i drugie, tylko je stawia.

Tworzenie plików

touch notatki.txt

touch znaczy „dotknij”. Jeśli plik nie istnieje, robi pusty. Jeśli istnieje, tylko zmienia mu datę ostatniej modyfikacji, jakbyś go dotknął. Prawdziwe pisanie do plików poznamy w lekcji o przekierowaniach.

Możesz też zrobić kilka naraz:

touch lista.txt plan.txt pomysly.txt

Kopiowanie

cp notatki.txt kopia.txt

cp to „copy”. Najpierw co, potem dokąd. Zawsze w tej kolejności: skąd, dokąd. Jak przeprowadzka: najpierw stary adres, potem nowy.

A folder z całą zawartością?

cp -r projekty projekty_kopia

-r od „rekurencyjnie”. Brzmi strasznie, a znaczy tylko „z wszystkim, co jest w środku, i w środku tego, co w środku”. Jak przeprowadzka szafy razem z szufladami, a nie samej pustej szafy.

Przenoszenie i zmiana nazwy

mv kopia.txt projekty/
mv plan.txt plan_na_listopad.txt

mv to „move”. I tu ciekawostka: w Bashu nie ma osobnej komendy do zmiany nazwy. Zmiana nazwy to po prostu przeniesienie pliku… w to samo miejsce, pod inną nazwą. Jak przeprowadzka z mieszkania numer 5 do mieszkania numer 5, ale z nowym nazwiskiem na drzwiach.

Podglądanie plików

cat notatki.txt
less dlugi_plik.txt
head -n 5 dlugi_plik.txt
tail -n 5 dlugi_plik.txt
  • cat wypluwa cały plik na ekran. Dobre dla krótkich plików.
  • less otwiera plik do przewijania. Strzałki albo spacja przewijają, a wyjście to klawisz q. Zapamiętaj q, bo pierwsza panika każdego początkującego to „jak z tego wyjść”.
  • head pokazuje początek pliku, domyślnie 10 linijek.
  • tail pokazuje koniec. Admini używają go codziennie do logów, bo w logach najważniejsze jest zawsze to, co najnowsze, czyli na końcu.

Kasowanie. Uwaga.

rm lista.txt

rm to „remove”. I teraz najważniejsze zdanie tej lekcji.

W terminalu nie ma kosza. rm nie przenosi pliku do kosza. Usuwa go. Nie ma „cofnij”. Nie ma „przywróć”. Plik po prostu znika.

Folder z zawartością:

rm -r projekty_kopia

A pusty folder można usunąć bezpieczniejszą komendą, która odmówi, jeśli w środku coś jest:

rmdir pusty_folder

I tryb dla ostrożnych, w którym Bash pyta o każdy plik:

rm -i notatki.txt

Pixar

W Pixarze użyto wersji rm z dwiema opcjami naraz: -r, czyli „z całą zawartością”, i -f, czyli „nie pytaj i nie marudź”. Do tego gwiazdka, która znaczy „wszystko”. Gwiazdkę poznasz w lekcji 5.

rm -rf * w czerwonej ramce z napisem „PRZECZYTAJ DWA RAZY”

Uruchomiona w złym folderze ta komenda grzecznie, bez jednego pytania, usuwa wszystko. Tak właśnie zniknęło około 90% plików filmu. Uratowała go kopia na domowym komputerze jednej z pracownic, bo backupy od miesiąca nie działały.

Trzy zasady, które musisz mieć w głowie przy każdym rm:

  1. Przed kasowaniem wpisz pwd. Upewnij się, gdzie stoisz.
  2. Przed kasowaniem wpisz ls z tym samym wzorcem. Zobacz, co dokładnie zniknie.
  3. Nie wklejaj rm -rf z internetu, jeśli nie rozumiesz każdego znaku.

⚠ Typowy błąd

cp projekty projekty2

Bash odpowie, że pomija folder, bo nie podałeś -r. To nie błąd systemu, tylko zabezpieczenie: kopiowanie folderu bez -r nie ma sensu, więc Bash pyta, czy na pewno wiesz, co robisz.

✎ Zadanie

Zbuduj w folderze domowym strukturę kurs/modul0/odcinek3. W środku zrób trzy pliki. Skopiuj cały folder kurs jako kurs_kopia, zmień nazwę jednego pliku w kopii, a potem bezpiecznie usuń całą kopię. Najpierw pwd i ls, potem rm.

Pokaż rozwiązanie
mkdir -p kurs/modul0/odcinek3
touch kurs/modul0/odcinek3/a.txt kurs/modul0/odcinek3/b.txt kurs/modul0/odcinek3/c.txt
cp -r kurs kurs_kopia
mv kurs_kopia/modul0/odcinek3/a.txt kurs_kopia/modul0/odcinek3/nowy.txt
pwd
ls kurs_kopia
rm -r kurs_kopia

Jeśli zrobiłeś pwd i ls przed rm, to masz już w sobie więcej dyscypliny niż połowa internetu.

Co dalej

Komend jest setki, a opcji tysiące. Nikt ich nie pamięta. W następnej lekcji pokażę, gdzie admini sprawdzają, jak coś działa, zamiast udawać, że pamiętają.