Czym się różni Linux od Windows? Często osoba zaczynająca przygodę z Linuksem instaluje jedną z wielu dostępnych dystrybucji i ze zdziwieniem dostrzega, że w Linuksie nie ma „dysków” w rozumieniu systemu Windows. Żadnego „C:\”, „D:\” itd.
Partycje i system plików
W przeciwieństwie do Windows w Linuksie nie ma podziału na dyski. W Linuksie wszystko opiera się na partycjach i systemie plików (ang. filesystem).. W uproszczeniu partycje to części dysków fizycznych zainstalowanych w komputerze. W celu umożliwienia dostępu do partycji (zapis i odczyt plików, katalogów, programów) na partycji tworzony jest system plików. W obrębie systemu plików tworzone są katalogi oraz pliki.
Wszystko zaczyna się w głównym katalogu (ang. root directory – korzeń katalogów (?)) oznaczanym „/” (slash). Od katalogu głównego odgałęzia się struktura podkatalogów systemu Linux. Najważniejszymi, spotykanymi we wszystkich dystrybucjach katalogami są:
- /bin – katalog zawierający polecenia systemowe wykorzystywane zarówno przez zwykłego użytkownika jak i przez głównego użytkownika systemu tzw. root (odpowiednik Administratora z systemu Windows, root nazywany jest często superużytkownikiem (ang. superuser). Polecenia z tego katalogu są niezbędne do działania w tzw. trybie jednoużytkownikowym (ang. single-user mode)
- /boot – zawiera pliki niezbędne do uruchomienia systemu
- /dev – tu znajdują się pliki specjalne i pliki urządzeń
- /etc – zawiera pliki konfiguracyjne programów i usług.
- /etc/rc.d/init.d – zawiera wszystkie skrypty startowe systemu (dostępny także przez link symboliczny
- /etc/init.d)
- /etc/rc.d/rc[n].d – gdzie n przybiera wartości od 0 do 6. Wartości te są zgodne z numerami poziomów uruchamiania systemu
- /etc/sysconfig – tu znajdują się bardzo ważne skrypty konfiguracyjne Fedory. Są to m.in:
iptables – skrypt konfiguracyjny firewalla. Nie edytować ręcznie! Korzystamy z narzędzi iptables-save, iptables-restore
i18n – odpowiedzialny za ustawienia języka używanego w systemie
init – ustawienia tekstowego bootwania komputera (widoczne po wyłączeniu parametru jądra rhgb)
network – m.in.nazwa komuptera (jeśli inna niż domyślna localhost.localdomain) - /etc/X11 – skrypty konfiguracyjne serwera Xorg m.in.xorg.conf (o ile jest potrzebny)
- /etc/yum.repos.d – zawiera pliki *.repo konfigurujące dostęp do repozytoriów Fedory
- /home – katalog w którym tworzone są podkatalogi domowe użytkowników
- /lib – katalog zawierający współdzielone biblioteki systemowe
- /lib64 – podobnie jak /lib, ale zawiera biblioteki specyficzne dla systemu 64-bitowego
- /media – punkt montowania wszystkich urządzeń zewnętrznych takich jak CD-ROM, USB itp.
- /mnt – katalog pozostawiony ze względów historycznych związanych ze wsteczna kompatybilnością. Pełnił kiedyś podobne funkcje jak obecnie /media
- /opt – miejsce instalacji dodatkowego oprogramowania zazwyczaj dostarczanego przez dostawców nie związanych z dana dystrybucją (np.CrossOver)
- /root – katalog domowy użytkownika root.
- /sbin – katalog zawierający programy i skrypty systemowe. Domyślnie niedostępny dla użytkownika tj. nieumieszczony w zmiennej systemowej $PATH zwykłych użytkowników.
- /var – katalog na pliki wykorzystywane przez usługi systemowe.
Więcej na temat standardowej sturktury katalogów możesz przeczytać wydając w terminalu polecenie
man hier
lub na stronie Filesystem Hierarchy Standard Group (strona w języku angielskim)
Linuksowa organizacja danych
Jako że dyski w sensie oddzielnych logicznych tworów nie istnieją, pojawiają się nowe możliwości. Proces podłączania dysku lub partycji do głównego systemu plików nazywamy montowaniem. Dyski lub partycje podłączone do /, widoczne są w katalogach zwanych punktami montowania. Taki układ głównego systemu plików pozwala na rozbicie poszczególnych składników systemu na oddzielne partycje, dyski fizyczne lub nawet zasoby sieciowe (NFS). W ekstremalnym przypadku, możliwe jest korzystanie z komputera pozbawionego dysku twardego (diskless mode) z głównym systemem plików montowanym przez sieć. Najpopularniejszym rozwiązaniem w zastosowaniach desktop jest utworzenie oddzielnej partycji /home, gdzie przechowywane są wszystkie ustawienia i dane użytkownika. Jest to znaczące ułatwienie w przypadku reinstalacji systemu – wszystkie nasze dane pozostają nietknięte, bez potrzeby zabawy w kopie zapasową.
Wszystko jest plikiem
Jedną z unikalnych właściwości systemów Uniksopobnych, jest „wszystko jest plikiem”. Co to oznacza? Między innymi niewiarygodną wręcz elastyczność systemu operacyjnego jeżeli chodzi o dostęp do urządzeń. Wyróżniamy trzy rodzaje plików:
- pliki zwykłe – programy, pliki danych, pliki tekstowe
- katalogi – katalog to też plik, tyle że zawiera listę plików które się w nim znajdują
- pliki specjalne – czyli np. urządzenia, potoki i tzw. gniazda (ang. sockets)
Jaki to ma wpływ na zwykłego użytkownika? Najprostszy przykład to stworzenie kopii partycji dysku. W innych systemach, potrzebne do tego są specjalne (najczęściej płatne) programy. W Linuksie wystarczy jedna linijka w konsoli. Jest to możliwe ponieważ wszystko jest plikiem.
Podstawowe polecenia
Na temat wszystkich poniższych poleceń oraz związanymi z nimi opcjami możesz przeczytać uruchamiając terminal i wpisując polecenie
man polecenie
Niektóre proste polecenia są wbudowane w domyślną powłokę „bash” i jeśli zamiast strony konkretnego polecenia dostajemy stronę o bash, wówczas lepiej użyć polecenia „help”:
help polecenie
Istnieją również strony „info”, często zastępujące strony man w przypadku obszerniejszych dokumentacji.
info polecenie pinfo polecenie # wersja kolorowa
Wiele poleceń wydawanych w terminalu to mnemoniczne skróty słów angielskich np. ls – list, cp – copy, rm – remove itd. Warto to wiedzieć, bo ułatwi to ich zapamiętanie.
Składnię polecenia możemy uzyskać wpisując:
polecenie -h
lub
polecenie --help
Najważniejsze polecenie w systemie Fedora
su – (ang. substitute user) przenosi na konto innego użytkownika przejmując jego prawa np.
su - jasio
przenosi nas na konto jasio i nadaje wszystkie jego uprawnienia (oczywiście o ile znamy hasło). To samo polecenie bez podania nazwy użytkownika
su -
przenosi nas (po podaniu właściwego hasła) na konto root’a.
Polecenia związane z operacjami na plikach
Wybrane podstawowe polecenia (GNU Coreutils)
- pwd – wyświetla katalog w którym się znajdujemy,
- cd – zmienia katalog, np:
cd – bez parametrów przechodzimy do katalogu domowego,
cd ~/pobrane – przejście do katalogu pobrane w katalogu domowym użytkownika (tylda (~) oznacza katalog domowy),
cd / – przejście do głównego systemu plików (cd /etc -przejście do katalogu etc, cd /usr/lib – przejście do katalogu /usr/lib, itd.),
cd pobrane/muzyka – przejście do katalogu muzyka znajdującego się w katalogu pobrane,
cd .. – przejście do katalogu nadrzędnego,
cd ../.. – przejście dwa katalogi „wyżej”,
cd ../pobrane – przejście do katalogu pobrane znajdującego się katalog „wyżej”, - touch – tworzy puste pliki (jeżeli plik istnieje, uaktualnia jego datę utworzenia), np:
touch plik.txt plik1.txt – zostaną utworzone dwa pliki o podanych nazwach, - mkdir – tworzy katalogi, np:
mkdir 1 2 3 4 5 – utworzono pięć katalogów o nazwach 1, 2, itd.,
mkdir muzyka/ulubione – tworzy katalog ulubione w katalogu muzyka, jeśli taki katalog istnieje,
mkdir -p muzyka/ulubione – tworzy katalog ulubione w katalogu muzyka. Jeśli katalog muzyka nie istnieje to zostanie także utworzony,
mkdir katalog{1,2,3} – tworzy 3 katalogi, katalog1, katalog2 itd… („rozwijanie” takiej listy to funkcja shella)
mkdir {a..z} – utworzy cały alfabet katalogów (przydatne do sortowania)
mkdir -p projekt/{lib/ext,bin,src,doc/{pl/{html,pdf},en},test/stat} – utworzy całe drzewo katalogów
projekt
|– bin
|– doc
| |– en
| `– pl
| |– html
| `– pdf
|– lib
| `– ext
|– src
`– test
`– stat - ls – wyświetla listę plików, np:
ls -a – wyświetla także ukryte pliki (ich nazwy zaczynają się od kropki),
ls -l – wyświetla szczegółowe informacje o plikach,
ls -F – do nazw plików dołączane są symbole oznaczające typ pliku – dla katalogów lewy ukośnik (/), dla plików wykonywalnych gwiazdka (*), dla linków symbolicznych (@),
ls -R – wypisywana jest także zawartość podkatalogów,
Wyświetlając listę plików można skorzystać także z polecenia grep, które filtruje otrzymane wyniki, np:
ls | grep tar.bz2 – wyświetlone zostaną tylko archiwa bzip,
ls | grep ‚file*’ – wyświetlone zostaną pliki, których nazwa rozpoczyna się od file,
ls | grep -v jakiśplik – wyświetla wszystko, poza nazwą „jakiśplik”. - cp – kopiuje pliki i katalogi, np:
cp plik1 plik2 – kopiuje zawartość pliku plik1 do plik2,
cp plik1 pobrane/ – kopiuje plik1 do katalogu pobrane,
cp plik1 pobrane/plik2 – kopiuje plik1 do katalogu pobrane jako plik2,
cp -a katalog1/ katalog2/ – kopiuje całą zawartość katalogu katalog1 do katalog2,
cp -f plik1 plik2 – wymusza wykonanie kopiowania, jeśli plik2 już istnieje zostanie on zastąpiony, - mv – przesuwa pliki i katalogi lub zmienia ich nazwę, np:
mv plik1 plik2 – zmienia nazwę pliku plik1 na plik2,
mv bardzodługanazwa{,.kopia} – zmienia nazwę pliku bardzodługanazwa na bardzodługanazwa.kopia
mv -f plik1 plik2 – wymusza przeniesienie/zmianę nazwy, jeśli plik docelowy istnieje zostanie on zastąpiony,
mv plik1 pobrane/ – przenosi plik plik1 do katalogu pobrane,
mv plik1 pobrane/plik2 – przenosi plik plik1 do katalogu pobrane jako plik2, - rm – kasuje pliki i katalogi, np:
rm plik1 plik2 plik3 – usuwa wymienione pliki,
rm pl* – usuwa pliki, których nazwa zaczyna się od pl,
rm -r katalog1 katalog2 katalog3 – usuwa wymienione katalogi,
rm -f plik1 – wymuszenie usunięcia pliku, błędy i ostrzeżenia są ignorowane,
rm -rf katalog1 – wymuszenie rekursywnego usunięcia katalogu,
Warn.png
Uwaga
Wykonanie polecenia rm -rf powoduje usunięcie katalogów bez wyświetlenia ostrzeżeń. Należy stosować je niezwykle ostrożnie. Szczególnie niebezpieczne jest wykonywanie tego polecenia z uprawnieniami użytkownika root – można skasować całą zawartość dysku !!! - cat – wyświetla plik (nie stronicuje), np:
cat plik.txt – wyświetla zawartość pliku plik.txt,
cat -n plik.txt – umieszcza numery linii w wyświetlanym pliku, - more, less – wyświetlają pliki zatrzymując po każdym ekranie, np :
ls -R | more – <ENTER> wyświetla kolejne pliki, <q> kończy wyświetlanie plików, - ln – tworzy dowiązanie (link) do innego pliku znajdującego się na dysku, np:
ln -s plik.txt link – tworzy dowiązanie symboliczne link do pliku plik.txt. Jeśli plik.txt zostanie usunięty dowiązanie link nie będzie już prawidłowe,
ln plik.txt link – tworzy „twarde” dowiązanie do pliku plik.txt. Jeśli plik.txt zostanie usunięty dowiązanie link będzie nadal poprawne. Można stosować w obrębie tej samej partycji, - chmod, chown – zmienia uprawnienia/właściciela do pliku/katalogu. Więcej informacji w artykule opisującym uprawnienia.
Wyszukiwanie plików
Find
Polecenie find przegląda określony katalog oraz znajdujące się w nim podkatalogi w poszukiwaniu plików spełniających wprowadzone kryteria. Składnia polecenia ma postać:
find katalog_wyszukiwania kryteria_wyszukiwania
W przypadku braku podania katalogu_wyszukiwania zostanie przeszukany katalog w którym aktualnie się znajdujemy. Można stosować wiele kryteriów jednocześnie.
Najczęściej stosowane kryteria:
- nazwa
find katalog_wyszukiwania -name szukana_nazwa
find -name fedora – wyszukanie w bieżącym katalogu pliku o nazwie fedora,
find -name „fedora*” – wyszukanie plików, których nazwa rozpoczyna się od słowa fedora,
find -name „*fedora*” – wyszukanie plików, których nazwa zawiera słowo fedora,
find /usr/bin -name krusader – szukanie pliku krusader w katalogu /usr/bin,
find /usr/bin -name „kru*” – wyszukiwanie w katalogu /usr/bin plików których nazwa zaczyna się na kru,
find -name „*.rpm” – wyszukiwanie plików o rozszerzeniu rpm, - typ
find katalog_wyszukiwania -type f | d | l | b | c | s
Szukane pliki mogą być: f – zwykłym plikiem, d – katalogiem, l – dowiązaniem, b – urządzeniem blokowym, c – urządzeniem znakowym, s – gniazdem.
find -type d – wyszukiwanie katalogów,
find -type d -name „*fedora*” – wyszukiwanie katalogów których nazwa zawiera słowo fedora,
find /usr/bin -type l -name „g*” – wyszukiwanie w katalogu /usr/bin dowiązań (linków symbolicznych) o nazwach rozpoczynających się na g, - wielkość pliku
find katalog_wyszukiwania -size +/-wielkość
Wielkość pliku można podać w: bajtach – c, kilobajtach – k, megabajtach – M, gigabajtach – G. Podając znak „+” wyszukamy pliki większe od wprowadzonej wartości, analogicznie „-” pliki mniejsze.
find -size +500M – wyszukanie plików większych niż 500 megabajtów,
find -size +700M -name „The*” – wyszukanie plików większych niż 700 megabajtów których nazwa rozpoczyna się na The,
find -size +500M -size -1000M – wyszukanie plików większych niż 500 i mniejszych niż 1000 megabajtów, - Pozostałe, wybrane kryteria wyszukiwania:
- właściciel pliku : -user nazwa_użytkownika,
- grupa do której plik należy : -group nazwa_grupy,
- ostatni dostęp do pliku : -atime n, n -liczba dni które upłynęły od ostatniego dostępu,
- ostatnia modyfikacja pliku : -ntime n, n – liczba dni od ostatniej modyfikacji,
- uprawnienia pliku : -perm p, p – kod uprawnień pliku,
- puste pliki : -empty,
Locate
Locate przeszukuje bazę danych z nazwami i lokalizacją plików. Baza plików jest aktualizowana raz dziennie. Jeśli zachodzi taka potrzeba można to zrobić samodzielnie wydając jako root polecenie updatedb.
locate amarok – wyszukanie plików i katalogów zawierających amarok,
Bardziej przydatne może okazać się filtrowanie wyników za pomocą grep, np:
locate amarok | grep rpm – wyszukanie pakietów rpm zawierających amarok,
locate amarok | grep /usr/bin – pliki zawierające amarok znajdujące się w katalogu /usr/bin.
Whereis
Polecenie whereis wyszukuje pliki binarne (programy) oraz strony man danego polecenia, np:
whereis init
Napisz komentarz