Linux | Terminal - operacje na plikach i katalogach · Technik informatyk egzamin zawodowy

Soisk / Linux

Linux | Terminal - operacje na plikach i katalogach

Podstawowe operacje na plikach i katalogach z poziomu wiersza poleceń / terminala systemu Linux.

Tworzenie katalogów

mkdir

mkdir --help
Składnia: mkdir [OPCJA]... KATALOG...
Utworzenie KATALOGU/ÓW, jeżeli jeszcze nie istnieją.
Argumenty obowiązkowe dla opcji długich obowiązują również dla krótkich.
  -m, --mode=UPRAWN ustawienie uprawnień (jak w chmod)
  -p, --parents     bez błędu gdy istnieje, utworzenie całej ścieżki katalogów
  -v, --verbose     wypisanie komunikatu o każdym utworzonym katalogu
  -Z                ustawienie kontekstu bezpieczeństwa podanego pliku jako typu domyślnego

 

Przykładowo:

student@student:~/Pulpit$ dir
student@student:~/Pulpit$ mkdir katalog1
student@student:~/Pulpit$ dir
katalog1
student@student:~/Pulpit$ mkdir katalog2 katalog3
student@student:~/Pulpit$ dir
katalog1  katalog2  katalog3
student@student:~/Pulpit$ mkdir katalog4/katalog5
mkdir: nie można utworzyć katalogu „katalog4/katalog5”: Nie ma takiego pliku ani katalogu
student@student:~/Pulpit$ mkdir katalog4/katalog5 -p
student@student:~/Pulpit$ dir
katalog1  katalog2  katalog3  katalog4
student@student:~/Pulpit$ cd katalog4
student@student:~/Pulpit/katalog4$ dir
katalog5
student@student:~/Pulpit/katalog4$ cd ..
student@student:~/Pulpit$ ls -l
razem 16
drwxrwxr-x 2 student student 4096 mar 13 10:37 katalog1
drwxrwxr-x 2 student student 4096 mar 13 10:37 katalog2
drwxrwxr-x 2 student student 4096 mar 13 10:37 katalog3
drwxrwxr-x 3 student student 4096 mar 13 10:38 katalog4
student@student:~/Pulpit$ mkdir --mode=700 katalog6
student@student:~/Pulpit$ ls -l
razem 20
drwxrwxr-x 2 student student 4096 mar 13 10:37 katalog1
drwxrwxr-x 2 student student 4096 mar 13 10:37 katalog2
drwxrwxr-x 2 student student 4096 mar 13 10:37 katalog3
drwxrwxr-x 3 student student 4096 mar 13 10:38 katalog4
drwx------ 2 student student 4096 mar 13 10:39 katalog6

 

Tworzenie plików

touch

touch --help
Składnia: touch [OPCJA]... PLIK...
Uaktualnienie czasu ostatniego odczytu albo modyfikacji każdego PLIKU do bieżącego czasu.
Jeżeli argument PLIK nie istnieje, jest tworzony jako pusty PLIK, chyba że podana jest opcja -c albo -h.
PLIK o nazwie „-” jest traktowany specjalnie: touch ustawia czas pliku związanego ze standardowym wyjściem.
Argumenty obowiązkowe dla opcji długich obowiązują również dla krótkich.
  -a                     zmiana tylko czasu dostępu
  -c, --no-create        bez tworzenia nowych plików
  -d, --date=SPECYFIKACJA  użycie SPECYFIKACJI zamiast bieżącego czasu
  -f                     (ignorowane)
  -h, --no-dereference   operowanie na dowiązaniach symbolicznych zamiast na
                         wskazywanych plikach (tylko dla systemów, które
                         umieją zmienić właściciela dowiązania symbolicznego)
  -m                     zmiana tylko czasu modyfikacji
  -r, --reference=PLIK   użycie czasu tego PLIKU zamiast czasu bieżącego
  -t CZAS                użycie [[CC]YY]MMDDhhmm[.ss] zamiast bieżącego czasu
      --time=SŁOWO       ustawienie czasu wg SŁOWA: access atime use (czas
                           dostępu, to samo co -a), modify mtime (czas
                           modyfikacji, to samo co -m)
      --help     wyświetlenie tego opisu i zakończenie
      --version  wyświetlenie informacji o wersji i zakończenie
Należy zauważyć, że opcje -d i -t akceptują różne formaty daty/czasu.

 

Przykładowo:

student@student:~/Pulpit$ touch plik1
student@student:~/Pulpit$ touch plik2 plik3
student@student:~/Pulpit$ ls -l
-rw-rw-r-- 1 student student 0 mar 13 10:50 plik1
-rw-rw-r-- 1 student student 0 mar 13 10:50 plik2
-rw-rw-r-- 1 student student 0 mar 13 10:50 plik3
student@student:~/Pulpit$ touch plik1 -d 20180219
student@student:~/Pulpit$ ls -l
-rw-rw-r-- 1 student student 0 lut 19 00:00 plik1
-rw-rw-r-- 1 student student 0 mar 13 10:50 plik2
-rw-rw-r-- 1 student student 0 mar 13 10:50 plik3
student@student:~/Pulpit$ touch plik2 -t 201802011324
student@student:~/Pulpit$ ls -l
-rw-rw-r-- 1 student student 0 lut 19 00:00 plik1
-rw-rw-r-- 1 student student 0 lut  1 13:24 plik2
-rw-rw-r-- 1 student student 0 mar 13 10:50 plik3
student@student:~/Pulpit$ touch plik* -t 201802011324
student@student:~/Pulpit$ ls -l
-rw-rw-r-- 1 student student 0 lut  1 13:24 plik1
-rw-rw-r-- 1 student student 0 lut  1 13:24 plik2
-rw-rw-r-- 1 student student 0 lut  1 13:24 plik3

W ostatnim przykładzie użyłem symbolu * zastępującego dowolny ciąg znaków. Zmiana czasu utworzenia pliku nastąpiła więc dla wszystkich plików w obecnym katalogu, których nazwa rozpoczyna się od słowa plik.

 

Zmiana nazwy pliku

mv

mv --help
Składnia: mv [OPCJA]... [-T] ŹRÓDŁO CEL
    albo: mv [OPCJA]... ŹRÓDŁO... KATALOG
    albo: mv [OPCJA]... -t KATALOG ŹRÓDŁO...
Przemianowanie ŹRÓDŁA na CEL albo przeniesienie jednego lub wielu ŹRÓDEŁ do KATALOGU.
Argumenty obowiązkowe dla opcji długich obowiązują również dla krótkich.
      --backup[=TRYB]          zrobienie kopii zapasowej każdego istniejącego
                                 pliku docelowego
  -b                           jak --backup, ale bez podawania argumentu
  -f, --force                  bez pytania przed zamazaniem pliku
  -i, --interactive            pytanie przed zamazaniem
  -n, --no-clobber             bez nadpisywania istniejących plików
      --strip-trailing-slashes  usunięcie końcowych ukośników z każdego
                                argumentu ZRÓDŁOWEGO
  -S, --suffix=ROZSZERZ        zmiana domyślnego rozszerzenia kopii zapasowej
  -t, --target-directory=KATALOG  przeniesienie wszystkich argumentów
                                  ŹRÓDŁOWYCH do KATALOGU
  -T, --no-target-directory    traktowanie CELU jak zwykłego pliku
  -u, --update                 przenoszenie tylko gdy ŹRÓDŁO jest nowsze od
                                 CELU albo nie ma CELU
  -v, --verbose                wyjaśnianie co się dzieje
  -Z, --contex                 ustawienie domyślnego kontekstu bezpieczeństwa
                                 SELinux
      --help     wyświetlenie tego opisu i zakończenie
      --version  wyświetlenie informacji o wersji i zakończenie

 

Przykładowo:

student@student:~/Pulpit$ touch plik1 plik2
student@student:~/Pulpit$ dir
plik1  plik2
student@student:~/Pulpit$ mv plik1 plik3
student@student:~/Pulpit$ dir
plik2  plik3
student@student:~/Pulpit$ mkdir old
student@student:~/Pulpit$ dir
old  plik2  plik3
student@student:~/Pulpit$ mv plik2 plik3 -t old
student@student:~/Pulpit$ dir
old
student@student:~/Pulpit$ cd old
student@student:~/Pulpit/old$ dir
plik2  plik3

 

Usuwanie plików / katalogów

rm

rm --help
Składnia: rm [OPCJA]... [PLIK]...
Kasowanie (unlink) PLIKU/PLIKÓW.
  -f, --force           ignorowanie nieistniejących plików i argumentów,
                          bez pytań
  -i                    pytanie przez każdym kasowaniem
  -I                    pojedyncze pytanie przez usunięciem więcej niż trzech
                          plików przy usuwaniu rekursywnym; mniej
                          przeszkadzające niż -i, ale nadal zabezpieczające
                          przed większością błędów
      --interactive[=KIEDY]  pytania zależnie od KIEDY: never (nigdy), once
                          (raz, -I) albo always (zawsze, -i); bez KIEDY zawsze
                          jest zadawane pytanie
      --one-file-system  poddczas rekurencyjnego usuwania katalogu pomijane
                          są katalogi znajdujące się na innym systemie plików
                          niż ten, na którym znajduje się argument polecenia
      --no-preserve-root bez traktowania katalogu „/” w specjalny sposób
      --preserve-root   odmowa usunięcia „/” (domyślnie)
  -r, -R, --recursive   usuwanie katalogów z zawartością rekursywnie
  -d, --dir             usuwanie pustych katalogów
  -v, --verbose         wyjaśnianie co się dzieje
      --help     wyświetlenie tego opisu i zakończenie
      --version  wyświetlenie informacji o wersji i zakończenie
Domyślnie rm nie usuwa katalogów. Użyj opcji --recursive (albo -r albo -R)
żeby skasować również wszystkie podane katalogi z zawartością.
Żeby usunąć plik z nazwą zaczynająca się od „-”, np. „-foo”, można użyć
jednego z poleceń:
  rm -- -foo
  rm ./-foo

 

Przykładowo:

student@student:~/Pulpit$ touch plik1
student@student:~/Pulpit$ touch plik1 plik2 plik3
student@student:~/Pulpit$ mkdir katalog1 katalog2
student@student:~/Pulpit$ touch katalog1/plik4 katalog2/plik5
student@student:~/Pulpit$ tree
.
├── katalog1
│   └── plik4
├── katalog2
│   └── plik5
├── plik1
├── plik2
└── plik3
student@student:~/Pulpit$ rm plik1
student@student:~/Pulpit$ tree
.
├── katalog1
│   └── plik4
├── katalog2
│   └── plik5
├── plik2
└── plik3
2 directories, 4 files
student@student:~/Pulpit$ rm plik2 -i
rm: usunąć pusty zwykły plik 'plik2'? t
student@student:~/Pulpit$ tree
.
├── katalog1
│   └── plik4
├── katalog2
│   └── plik5
└── plik3
2 directories, 3 files
student@student:~/Pulpit$ rm -r katalog1
student@student:~/Pulpit$ tree
.
├── katalog2
│   └── plik5
└── plik3
1 directory, 2 files
student@student:~/Pulpit$ rm -r *
student@student:~/Pulpit$ tree
.
0 directories, 0 files

 

Kopiowanie plików

cp

cp --help
Składnia: cp [OPCJA]... [-T] ŹRÓDŁO CEL
    albo: cp [OPCJA]... ŹRÓDŁO... KATALOG
    albo: cp [OPCJA]... -t KATALOG ŹRÓDŁO...
Skopiowanie ŹRÓDŁA do CELU lub ŹRÓDŁA/ŹRÓDEŁ do KATALOGU.
Argumenty obowiązkowe dla opcji długich obowiązują również dla krótkich.
  -a, --archive                to samo co -dR --preserve=all
      --attributes-only        bez kopiowania danych, same atrybuty
      --backup[=TRYB]          robienie kopii zapasowej każdego istniejącego
                               pliku docelowego
  -b                           jak --backup, ale bez podawania argumentu
      --copy-contents          kopiowanie zawartości pliku specjalnego w
                               przypadku rekursji
  -d                           to samo co --no-dereference --preserve=links
  -f, --force                  jeżeli istniejący plik docelowy nie daje się
                                 otworzyć, będzie skasowany i otwierany
                                 ponownie (ignorowane jeżeli użyta jest
                                 też opcja -n)
  -i, --interactive            pytanie przed zamazaniem (wyłącza opcję -n)
  -H                           podążanie za dowiązaniami symbolicznymi w
                                 ŹRÓDLE podanymi jako argumenty polecenia
  -l, --link                   dowiązania zwykłe zamiast kopiowania
  -L, --dereference            podążanie za wszystkimi dowiązaniami
                                 symbolicznymi w ŹRÓDLE
  -n, --no-clobber             bez nadpisywania istniejących plików (wyłącza
                                 opcję -i)
  -P, --no-dereference         bez podążania za dowiązaniami symbolicznymi w
                                 ŹRÓDLE
  -p                           to samo co --preserve=mode,ownership,timestamps
      --preserve[=LISTA_ATR]   zachowanie podanych atrybutów (domyślnie: mode
                                 (uprawnienia), ownership (właściciel, grupa),
                                 timestamps (czasy)); jeżeli możliwe, to
                                 również dodatkowych atrybutów: context, links
                                 (dowiązania), xattr (rozszerzone atrybuty),
                                 all (wszystkie)
      --no-preserve=LISTA_ATR  bez zachowania podanych atrybutów
      --parents                użycie pełnej ścieżki źródłowej KATALOG
  -R, -r, --recursive          rekursywnie kopiowanie podkatalogów
      --reflink                ustawienia kopiowania CoW/clone. Zobacz poniżej.
      --remove-destination     usunięcie każdego istniejącego pliku docelowego
                                 przed próbą jego otwarcia (por. z --force)
      --sparse=GDY             sterowanie tworzeniem plików rzadkich. Zobacz
                                 poniżej.
      --strip-trailing-slashes  skasowanie ewentualnych końcowych ukośników z
                                 nazw argumentów ŹRÓDŁOWYCH
  -s, --symbolic-link          dowiązywanie symboliczne zamiast kopiowania
  -S, --suffix=ROZSZERZENIE    zmiana domyślnego ROZSZERZ. kopii zapasowej
  -t, --target-directory=KATALOG  skopiowanie wszystkich ŹRÓDEŁ do KATALOGU
  -T, --no-target-directory    traktowanie CELU jak zwykłego pliku
  -u, --update                 kopiowanie tylko plików, dla których ŹRÓDŁO
                                 jest nowsze niż CEL albo brakuje CELU
  -v, --verbose                wyjaśnianie co się dzieje
  -x, --one-file-system        pozostanie w jednym systemie plików
  -Z                           ustawienie kontekstu bezpieczeństwa podanego
                                 pliku jako typu domyślnego
      --context=[KONTEKST]     jak -Z, ale jeżeli jest podany KONTEKST,
                                 ustawienie kontekstu bezpieczeństwa SELinux
                                 albo SMACK jako KONTEKSTU
      --help     wyświetlenie tego opisu i zakończenie
      --version  wyświetlenie informacji o wersji i zakończenie

 

Przykładowo:

student@student:~/Pulpit$ touch plik1 plik2 plik3
student@student:~/Pulpit$ mkdir katalog1 katalog2
student@student:~/Pulpit$ dir
katalog1  katalog2  plik1  plik2  plik3
student@student:~/Pulpit$ cp plik1 plik1_kopia
student@student:~/Pulpit$ dir
katalog1  katalog2  plik1  plik1_kopia    plik2  plik3
student@student:~/Pulpit$ cp katalog1 katalog1_kopia -r
student@student:~/Pulpit$ dir
katalog1  katalog1_kopia  katalog2  plik1  plik1_kopia    plik2  plik3
student@student:~/Pulpit$ cp plik1 plik2 plik3 katalog1
student@student:~/Pulpit$ tree
.
├── katalog1
│   ├── plik1
│   ├── plik2
│   └── plik3
├── katalog1_kopia
├── katalog2
├── plik1
├── plik1_kopia
├── plik2
└── plik3
3 directories, 7 files
student@student:~/Pulpit$ cp katalog1 katalog2 -r
student@student:~/Pulpit$ tree
.
├── katalog1
│   ├── plik1
│   ├── plik2
│   └── plik3
├── katalog1_kopia
├── katalog2
│   └── katalog1
│       ├── plik1
│       ├── plik2
│       └── plik3
├── plik1
├── plik1_kopia
├── plik2
└── plik3
4 directories, 10 files
student@student:~/Pulpit$ cp katalog1/* katalog1_kopia -r
student@student:~/Pulpit$ tree
.
├── katalog1
│   ├── plik1
│   ├── plik2
│   └── plik3
├── katalog1_kopia
│   ├── plik1
│   ├── plik2
│   └── plik3
├── katalog2
│   └── katalog1
│       ├── plik1
│       ├── plik2
│       └── plik3
├── plik1
├── plik1_kopia
├── plik2
└── plik3
4 directories, 13 files

 

Ćwiczenia: Linux | Terminal - Operacje na plikach i katalogach

🗸 Przejdź do katalogu domowego użytkownika
Zaloguj się, aby sprawdzić odpowiedź.
🗸 Utwórz katalog las
Zaloguj się, aby sprawdzić odpowiedź.
Zaloguj się, aby zobaczyć pozostałe 6 ćwiczeń i zapisywać wyniki.