Podstawy Linuksa
Z Fedora Wiki
Spis treści |
Podstawy Linuksa
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
- /etc/rc.d/init.d - zawiera wszystkie skrypty startowe systemu (dostępny także przez link symboliczny /etc/init.d)
- /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ć na stronie Filesystem Hierarchy Standard Group (strona w języku angielskim)
Zalety Linuksowej organizacji 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 polecenieman polecenie
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 – jasioprzenosi 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
- 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,
-
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
Inne źródła pomocy, polecane strony
- lista linków pod poradnikiem
