Podstawy Linuksa
Ta strona wymaga rozbudowy i uzupełnienia
Do zrobienia: rozwinięcie podstawowych poleceń, rozwinięcie informacji o podkatalogach szczególnie w katalogu /etc, ...
Interaktywna mapa GNU/Linux OS i FOSS
Spis treści [ukryj] |
---|
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
/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)
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 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
|-- 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,
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