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.