Operacje na plikach

Everything is a file

Hierarchia systemu plików

Filesystem Hierarchy Standard (1993) – powszechnie stosowana hierarchia katalogów:

  • / – katalog główny (root)

  • /bin, /sbin – pliki wykonywalne, systemowe pliki wykonywalne (binaries, system binaries)

  • /bootboot loader

  • /dev – urządzenia (devices)

  • /etc – konfiguracja systemu (et cetera)

  • /home, /root – pliki osobiste użytkowników i użytkownika głównego

  • /lib – biblioteki dla bin i sbin (libraries)

  • /media, /mnt – punkt montowania urządzeń podłączanych do komputera i tymczasowych (mount points)

  • /opt – pakiety dodatkowe (optional)

  • /proc – jądro, stan procesów (process’ status)

  • /tmp – pliki tymczasowe (temporary files) mogą być (zazwyczaj są) usuwane przy ponownym uruchomieniu komputera

  • /var – pliki zmienne (variable files) m.in.: log, spool, www, tmp

  • /usr – zasoby systemowe, pliki użytkownika tylko-do-odczytu (Unix System Resources) bin, lib, share, src

Podstawowe komendy

ls, cd, pwd

mkdir

tworzenie katalogów (make directory)

-p, --parents

utwórz brakujące nadkatalogi

rmdir

usuwanie katalogów (remove directory)

-p, --parents

usuń puste podkatalogi

cp

kopiowanie plików (copy)

-R, -r, --recursive

rekursywnie

-u, --update

tylko nowsze wersje

-i, --interactive

nie nadpisuj bez pytania

-f, --force

nadpisuj bez pytania

-v, --verbose

wyjaśniaj wszystko co robisz

mv

przenoszenie plików, zmiana nazwy plików (move)

-u, --update

tylko nowsze wersje

-f, --force

nadpisuj bez pytania

rm

usuwanie plików (remove)

-f, --force

usuwaj bez pytania

-i, --interactive

pytaj przed usuwaniem

-R, -r, --recursive

rekursywnie (pliki i podkatalogi)

ln

utwórz odniesienie (link)

-s, --symbolic

link symboliczny (do etykiety pliku)

-P, --physical

link fizyczny (do zawartości pliku)

file

informacje o pliku

stat

informacje o pliku (dane z inode)

touch

modyfikuj czas dostępu; utwórz pusty plik, jeśli nie istnieje

cat

konkatenacja i wypisanie zawartości (catenate)

Krótko o ścieżkach

/

root, korzeń drzewa katalogów

~

katalog domowy ($HOME)

.

katalog bieżący ($PWD)

..

rodzic (katalog wyżej)

Expansion

*

dopasowanie zachłanne np. ls /home/*

?

dopasowanie do jednego znaku np. ls /home/????

{}

zbiór słów np. mkdir /home/{asia,basia,casia}

Przynależność i przywileje

../../_images/priv.svg.png

chmod

Modyfikuj uprawnienia pliku (change mod bits)

-R

rekurencyjnie (podkatalogi i pliki)

[ugoa][+-=][rwx]

ustal przywileje do zapisu, odczytu, wykonywania dla właściciela, grupy, innych użytkowników lub wszystkich użytkowników, np. chmod a+rx jakiś_program

[0-7][0-7][0-7]

ustal przywileje w zapisie oktalnym, np. chmod 755 jakiś_program

chown

Zmień właściciela pliku (change owner)

-R

rekurencyjnie (podkatalogi i pliki)

username

niech dany użytkownik będzie właścicielem, np. chown inf70001 jakiś_plik

username:group

niech dany użytkownik z danej grupy będzie właścicielem np. chown inf 70001:users jakiś_plik

chgrp

Zmień grupę pliku (change group)

-R

rekurencyjnie (podkatalogi i pliki)

Znaki specjalne

cudzysłów (quotes): ", '

np. ls 'a b' vs. ls a b

escape: \

np. \t = <tab>, \n = <newline>, \\ = \

światło (whitespaces): \t, \n, \\

inne: subshells () , `, zmienne $, !,

Więcej pomocy

man

podręcznik (manual)

Odwólanie do konkretnej sekcji podręcznika:
man sleep

informacje na temat sleep

man 1 sleep

informacje na temat komendy sleep

man 3 sleep

informacje na temat funkcji sleep

Sekcje:
  1. Komendy,

  2. Polecenia systemowe,

  3. Funkcje biblioteki (w szczególności biblioteka standardowa C),

  4. Pliki specjalne (głównie urządzenia z /dev) i sterowniki,

  5. Formaty plików i konwersje,

  6. Gry i wygaszacze ekranu,

  7. Miscellanea,

  8. Komendy administracyjne i demony.

Przyjazne klawisze:
q

wyjście

/

wyszukiwanie

n, N

nastepne, poprzednie wystąpienie

whatis

wyszukiwanie w manualu (według kluczy - nazw komend) np. whatis sleep

apropos

wyszukiwanie w manualu (według wartości - opisów komend) np. apropos sleep

info

alternatywny podręcznik

Szukanie plików

locate

znajdź pliki w bazie danych (przygotowanej przez updatedb)

locate bashrc

locate /etc/*.conf

find

znajdź pliki w systemie plików (trwa dłużej niż locate)

find MIEJSCE [TESTY] [AKCJE]

Testy:
-name

nazwa pliku (także znaki: *, ?)

-iname

j/w, case-insensitive

-type

typ pliku (m.in. f – zwykły plik, plik tekstowy, d – katalog)

-empty

pusty plik

-a

koniunkcja dwóch warunków (domyślne, więc można pominąć)

-o

alternatywa dwóch warunków (WARUNEK1 -o WARUNEK2)

Akcje:
-exec

wykonaj polecenie

-ok

zapytaj użytkownika, a następnie wykonaj polecenie (tak jak -exec)

-quit

zakończ działanie

-print0

wypisz rozdzielając znakiem \0 zamiast \n

Przykłady:

find ~ -name '*.java' -type f

find . -name ideas -exec kdialog --msgbox "{}" \;     #kde

find . -name ideas -exec zenity --info --text="{}" \; #gnome

Zadania

  1. Wyszukaj wszystkie pliki lub katalogi w swoim katalogu domowym zaczynające się od kropki.

  2. Wyszukaj wszystkie pliki lub katalogi w swoim katalogu domowym kończące się tyldą (~).

  3. Wyszukaj wszystkie katalogi w swoim katalogu domowym kończące się tyldą (~).

  4. Wyszukaj wszystkie katalogi w swoim katalogu domowym kończące się tyldą (~) lub rozpoczynające się od kropki.

  5. Wyszukaj wszystkie pliki tekstowe o nazwie kończącej się rc i wyświetl ich zawartość za pomocą edytora tekstowego (np gedit, kate).

  6. Przejdź do katalogu /tmp/. Utwórz katalog /tmp/test/ i utwórz w nim pliki asia, basia, casia, dasia, easia, fasia. Za pomocą komendy find usuń wszystkie pliki z katalogu /tmp/test/ których nazwy składają się z napisu asia poprzedzonego dowolną literą.

  7. Utwórz pliki i katalogi jak powyżej. Usuń wszystkie pliki z katalogu /tmp/test/ których nazwy składają się z napisu asia poprzedzonego dowolną literą. Niech przed usunięciem pliku komenda find zarząda potwierdzenia od użytkownika.

Więcej informacji