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)/boot
– boot loader/dev
– urządzenia (devices)/etc
– konfiguracja systemu (et cetera)/home
,/root
– pliki osobiste użytkowników i użytkownika głównego/lib
– biblioteki dlabin
isbin
(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/*
?
- dopadowanie do jednego znaku
np.
ls /home/????
{}
- zbiór słów
np.
mkdir /home/{asia,basia,casia}
Przynależność i przywileje¶

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:
- Komendy,
- Polecenia systemowe,
- Funkcje biblioteki (w szczególności biblioteka standardowa C),
- Pliki specjalne (głównie urządzenia z
/dev
) i sterowniki, - Formaty plików i konwersje,
- Gry i wygaszacze ekranu,
- Miscellanea,
- 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¶
- Wyszukaj wszystkie pliki lub katalogi w swoim katalogu domowym zaczynające się od kropki.
- Wyszukaj wszystkie pliki lub katalogi w swoim katalogu domowym kończące się tyldą (
~
). - Wyszukaj wszystkie katalogi w swoim katalogu domowym kończące się tyldą (
~
). - Wyszukaj wszystkie katalogi w swoim katalogu domowym kończące się tyldą (
~
) lub rozpoczynające się od kropki. - Wyszukaj wszystkie pliki tekstowe o nazwie kończącej się
rc
i wyświetl ich zawartość za pomocą edytora tekstowego (npgedit
,kate
). - Przejdź do katalogu
/tmp/
. Utwórz katalog/tmp/test/
i utwórz w nim plikiasia
,basia
,casia
,dasia
,easia
,fasia
. Za pomocą komendyfind
usuń wszystkie pliki z katalogu/tmp/test/
których nazwy składają się z napisuasia
poprzedzonego dowolną literą. - Utwórz pliki i katalogi jak powyżej. Usuń wszystkie pliki z katalogu
/tmp/test/
których nazwy składają się z napisuasia
poprzedzonego dowolną literą. Niech przed usunięciem pliku komendafind
zarząda potwierdzenia od użytkownika.