UNIX. Kurs początkowy. Dr inż. Lucjan Miękina upel.agh.edu.pl/wimir/login/ Katedra Robotyki i Mechatroniki 1/112

Podobne dokumenty
"Klasyczna" struktura systemu operacyjnego:

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

Linux: System Plików

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

UNIX. Kurs początkowy. Dr inż. Lucjan Miękina. upel.agh.edu.pl/wimir/login/ Katedra Robotyki i Mechatroniki 1/115

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

UNIX. Kurs początkowy. Dr inż. Lucjan Miękina upel.agh.edu.pl/wimir/login/ Katedra Robotyki i Mechatroniki. November 18, /112

Pracownia komputerowa. Dariusz wardecki, wyk II

UNIX. Kurs początkowy. Dr inż. Lucjan Miękina upel.agh.edu.pl/wimir/login/ Katedra Robotyki i Mechatroniki 1/112

Typy plików. Oznaczenie f -

System plików Linuxa. Tomasz Borzyszkowski

Technologie Informacyjne - Linux 1

Ćwiczenie 9 Linux - operacje systemu plików

Ćwiczenie 1. Podstawowe wiadomości

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

Pracownia Komputerowa wyk ad II

UŻYTKOWNIK. APLIKACJE UŻYTKOWE (wszelkie programy zawarte domyślnie w systemie operacyjnym jak i samodzielnie zainstalowane przez użytkownika systemu)

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Pracownia Komputerowa wykład II

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

Systemy Operacyjne I: System plików

Trochę o plikach wsadowych (Windows)

System plików - wprowadzenie. Ścieżki dostępu. Informatyka ćw 1

UNIX SYSTEM PLIKÓW. UNIX System plików

Umożliwia ona pokazanie ukrytych plików i katalogów, nazwa ich zaczyna się od kropki.

host name: protokół SSH System plików - wprowadzenie Ścieżki dostępu

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Instalacja Systemu Linux na maszynie writualnej

Wstęp do systemów wielozadaniowych laboratorium 02 Praca w systemie plików

MS-DOS polecenia wewnętrzne i

Pliki w systemie operacyjnym Linux

Linux cz.3: polecenia systemowe, ćwiczenia

Wstęp do systemów wielozadaniowych laboratorium 03 Praca w powłoce UNIX-owej

Znaki globalne w Linuxie

Podstawy użytkowania Linux a

Ćwiczenia Linux konsola

Zakład Systemów Rozproszonych

Współczesne systemy komputerowe

System plików. Podstawy systemu Linux

Użytkownicy I. Użytkownik. Głównym celem istnienia użytkowników i grup w systemie jest utrzymanie porządku i separacja uprawnień.

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Programowanie 1. Wprowadzenie do bash-a. Elwira Wachowicz. 06 lutego 2012

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Pracownia Technik Obliczeniowych

System operacyjny UNIX system plików. mgr Michał Popławski, WFAiIS

DOS Podstawowe komendy Przygotowanie dyskietki do pracy Praca z katalogami w systemie DOS Operacje kopiowania

Windows XP Wiersz polecenia

Serwer SAMBA UDOSTĘPNIANIE UDZIAŁÓW SIECIOWYCH PIOTR KANIA

System operacyjny Linux

tworzenie katalogów Aby utworzyć nowy katalog wpisz: mkdir katalog1 Ta komenda utworzy katalog o nazwie katalog1.

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne?

Pracownia Komputerowa wykład III

I. Interfejs użytkownika.

Systemy operacyjne. Laboratorium 2. Dowiązania. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

SYSTEM OPERACYJNY. Monika Słomian

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Powłoki systemu operacyjnego i intepretery

Podstawy systemów UNIX

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy - ćwiczenia. 012a

O historycznym systemie DOS. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

S P I S POLECEŃ LINUXA

Pracownia internetowa w szkole ZASTOSOWANIA

Ćwiczenie 1.1. Korzystając z internetu dowiedz się, czym jest system uniksopodobny (*NIX) oraz jak rozwijały się systemy z tej rodziny.

Pracownia Komputerowa wykład III

1 Przygotował: mgr inż. Maciej Lasota

Wstęp do informatyki Shell podstawy

Komendy Ubuntu MARCEL GAŃCZARCZYK 2T I 1

VinCent Administrator

IBM SPSS Modeler Social Network Analysis 16 podręcznik instalowania i konfigurowania

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Powłoka, redyrekcja, potok

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Warstwy systemu Windows 2000

BIOS, tryb awaryjny, uśpienie, hibernacja

Wstęp do obsługi Linux a

EDYTOR TEKSTOWY VIM WYBRANE POLECENIA. Pracownia Informatyczna 5

PAMIĘĆ OPERACYJNA...107

Podstawy Informatyki. Wykład 3 UNIX

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

Utwórz na pulpicie katalog: pierwsza-litera-imienia_nazwisko (np. j_kowalski). W tym katalogu zapisz pliki, które będą tworzone w ramach ćwiczenia

Podstawy Informatyki. Michał Pazdanowski

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Przykładowa konfiguracja systemu komputerowego

Zasoby dyskowe: Eksplorator Windows Z zasobami dyskowymi związane są nierozłącznie prawa dostępu gwarantujące możliwość odczytu, kasowania,

Podstawy Linuksa. Wiesław Płaczek Postawy Linuksa 1

Połączenia. Obsługiwane systemy operacyjne. Instalowanie drukarki przy użyciu dysku CD Oprogramowanie i dokumentacja

KATEGORIA OBSZAR WIEDZY NR ZADANIA Podstawowe informacje i czynności

System kontroli dostępu ACCO NET Instrukcja instalacji

Podstawy Informatyki. Michał Pazdanowski

Systemy operacyjne. Zasady lokalne i konfiguracja środowiska Windows 2000

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Transkrypt:

1/112 UNIX Kurs początkowy Dr inż. Lucjan Miękina upel.agh.edu.pl/wimir/login/ Katedra Robotyki i Mechatroniki October 25, 2016

Pierwsza wersja UNIX-a została zbudowana w 1969 przez Kena Thompsona z Research Group w Bell Laboratories dla minikomputera PDP-7. Do Thompsona wkrótce dołączył Dennis Ritchie i obaj, wspólnie z innymi członkami Research Group, opracowali wczesne wersje UNIX-a [1]. UNIX będący początkowo osobistym projektem dwóch pracowników Bell Laboratories, stał się systemem operacyjnym będącym przedmiotem zainteresowania międzynarodowych komitetów standaryzacyjnych. Równocześnie jest on przedmiotem studiów akademickich i ważnym elementem teorii i praktyki systemów operacyjnych. System jest napisany głównie w języku C, który został specjalnie stworzony do prac nad UNIX-em, ponieważ ani Thompson ani Ritchie nie byli entuzjastami programowania w języku assemblera. Porzucenie asemblera było konieczne z powodu niepewności, na jakich platformach sprzętowych ma UNIX działać. Ułatwiło to znacznie przenoszenie systemu na inne/nowe platformy. G. Gagne, A. Silberschatz, and P. Galvin. Podstawy systemów operacyjnych. WNT, 2006. D. Robbins. bash w przykładach, cz. 3. url: https://gentoo-handbook.lugons.org/doc/pl/articles/bash-by-examplep3.xml?style=printable. William E. Shotts. The Linux Command Line. LinuxCommand.org, 2010. Strona podręcznika systemu dla powłoki bash. url: http://man.cx/bash(1)/pl. 2/112

3/112 Drzewo genealogiczne 1969 1971 to 1973 1974 to 1975 Unics UnixTSS 1 to 4 UnixTSS 5 to 6 PWB/Unix 1969 Open Source Mixed/Shared Source 1971 to 1973 Closed Source 1974 to 1975 1978 1979 BSD 1.0 to 2.0 UnixTSS 7 Unix 32v 1978 1979 1980 1981 BSD 3.0 to 4.1 Xenix 1.0 to 2.3 System III 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 to 2004 2005 2006 to 2010 Minix 1.x Minix 2.x Minix 3.x Linux 0.0.1 Linux 0.95 to 1.2.x Linux 2.0 to 2.6.x NEXTSTEP/ OPENSTEP 1.0 to 4.0 Mac OS X Server Mac OS X 10.0 to 10.7 (Darwin) UnixTSS 8 UnixTSS (Time Sharing System) 9 to 10 BSD NET/2 386BSD FreeBSD 1.0 to 2.2.x FreeBSD 3.0 to 3.2 FreeBSD 3.3 to 8.0 BSD 4.2 BSD 4.3 BSD 4.3 Tahoe BSD 4.3 Reno BSD 4.4 to 4.4 lite2 NetBSD 0.8 to 1.0 NetBSD 1.1 to 1.2 NetBSD 1.3 NetBSD 1.3 to 5.x Sun OS 1 to 1.1 Sun OS 1.2 to 3.0 Sun OS 4 OpenBSD 1.0 to 2.2 OpenBSD 2.3 to 4.x AIX 1.0 AIX 3.x to 6.x Xenix 3.0 SCO Xenix SCO Xenix W286 SCO Xenix V386 SCO Xenix W386 SCO Unix 3.2.4 OpenServer 5.0 to 5.04 OpenServer 5.0.5 to 5.0.7 OpenServer 6.x System V R1 to R2 System V R3 System V R4 Unixware 1.x to 2.x Unixware 7.x Solaris 2.1 to 10 OpenSolaris 2008.05 and later HP/UX 1.0 to 1.2 HP/UX 2.0 to 3.0 HP/UX 6 to 11 HP/UX 11i to 11i v3 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 to 2004 2005 2006 to 2010

4/112 Założenia projektowe 1 UNIX zaprojektowano jako system wielodostępny z podziałem czasu. 2 Standardowy interfejs użytkownika (powłoka, shell) jest prostym procesem i może być zastąpiony przez inny. 3 System plików ma postać wielopoziomowego drzewa, pozwalając użytkownikom tworzyć własne podkatalogi. Pliki są ciągami bajtów. 4 Pliki dyskowe i urządzenia wejścia/wyjścia są traktowane (obsługiwane) możliwie identycznie. 5 UNIX równocześnie obsługuje wiele procesów. Proces może łatwo utworzyć nowe procesy (potomne). 6 Przydział czasu procesora do zadań jest oparty o priorytety. 7 Wymiana (disk swapping) jest stosowana jeśli system nie może zapewnić obsługi pamięci w trybie stronicowania. 8 UNIX był zaprojektowany przez programistów dla programistów. Jest wysoce interaktywny, a narzędzia rozwoju oprogramowania miały i mają wysoki priorytet, n.p: program make, który jest używany do kontroli, które z plików źródłowych programu wymagają kompilacji i do wykonania jej system kontroli wersji, który jest używany do zarządzania kolejnymi wersjami plików źródłowych, bez konieczności przechowywania całych plików.

5/112 Interfejs programisty i użytkownika Jak większość systemów operacyjnych, UNIX składa się z dwu oddzielnych części: 1 jądra (kernel), które dostarcza usług: systemu plików, przydziału procesora do zadań, zarządzania pamięcią i innych, za pośrednictwem eksportowanych funkcji systemowych (system calls). 2 programów systemowych, które używają funkcji systemowych udostępnianych przez jądro w celu realizacji funkcji użytkowych, jak np. kompilacja czy operacje plikowe. Funkcje systemowe tworzą tzw. interfejs programisty UNIX-a; natomiast zbiór programów (poleceń) systemowych tworzy interfejs użytkownika. Funkcje systemowe UNIX-a można ogólnie podzielić na 3 kategorie: 1 operacje plikowe, zawierające też operacje na urządzeniach, jako że urządzenia w UNIX-ie są traktowane jako (specjalne) pliki, i te same funkcje systemowe obsługują pliki i urządzenia 2 sterowanie procesami 3 manipulacja informacjami systemowymi (czas, nazwa hosta, identyfikator procesu, itp.) Większość programów systemowych jest napisana w języku C, a podręcznik programisty (UNIX Programmer s Manual) przedstawia funkcje systemowe jako funkcje języka C.

6/112 Powłoki Użytkownicy komunikują się z systemem za pomocą programu interpretera poleceń nazywanego powłoką systemu (shell). W użyciu są następujące powłoki: sh Bourne shell, mająca znak $ jako domyślny znak zachęty (prompt) csh (C shell) mająca składnię i konstrukcje podobne do języka programowania C. Prompt kończy się zwykle znakiem procentu (%) ksh powłoka Korn a tcsh TC jest powłoką C wzbogaconą o podpowiadanie nazw plików (file name completion) i edycję linii poleceń (domyślny prompt: >) bash powłoka GNU Bourne-Again jest oparta o powłokę Bourne a z dodatkiem podpowiadania nazw plików i edycji linii poleceń (domyślny prompt kończy $). dash powłoka Debian Almquist Shell jest zgodna ze standardem POSIX, pochodzi od ash. Ponieważ wykonuje skrypty szybciej niż bash i ma mniej zależności od bibliotek, jest domyślną powłoką dystrybucji Debian Linux. zsh powłoka zsh najbardziej przypomina ksh, ale dostarcza największej liczby rozszerzeń. Zsh posiada edycję linii poleceń, wbudowaną korekcję poprawności, programowalne wspomaganie poleceń, funkcje powłoki (z automatycznym ładowaniem), obsługę historii poleceń, itd. Poza przetwarzaniem pojedynczych poleceń użytkownika, powłoki UNIX-a posiadają własną składnię i struktury sterujące. Dzięki temu można znacznie zwiększyć efektywność, a nawet automatyzować powtarzalne operacje. Można nawet zapisać ciągi poleceń powłoki w pliku (tekstowym), nazywanym skryptem powłoki (shell script), a potem wykonywać go jak normalny program.

7/112 System plików Pliki plik w UNIX-ie jest ciągiem bajtów. Poszczególne programy często traktują pliki jak zapis pewnych struktur danych, ale jądro nie interpretuje tego w ogóle. Na przykład, istnieje konwencja dot. plików tekstowych, mówiąca, że składają sie one z linii znaków ASCII, oddzielonych przez pojedynczy znak końca linii newline (który jest znakiem LF w kodzie ASCII), ale jądro nic nie "wie" o tej konwencji. Katalogi pliki są zorganizowane w drzewiaste struktury katalogów. Katalogi są plikami zawierającymi informacje o lokalizacji innych plików. Aby wyświetlić drzewo katalogów i plików można użyć polecenia: tree <katalog> <opcje>, np. tree bin -L 2 wyświetli zawartość katalogu bin do dwóch poziomów wgłąb. Ścieżka (lub nazwa ścieżkowa) do pliku jest to łańcuch znaków, który identyfikuje plik, podając drogę przez strukturę katalogów do pliku. Syntaktycznie, ścieżka składa się z nazw katalogów i nazwy pliku, oddzielonych znakiem / (slash). Na przykład, w ścieżce /usr/local/font, pierwszy slash oznacza katalog główny (root). Następny element, usr, jest podkatalogiem root, local jest podkatalogiem usr, a font jest plikiem lub podkatalogiem w katalogu local. To czy font jest zwykłym plikiem czy katalogiem nie może być odczytane ze ścieżki. Ścieżki UNIX ma zarówno absolutne jak i względne nazwy ścieżkowe. Ścieżki absolutne zaczynają się od katalogu głównego i w związku z tym pierwszy znak to /, np. /usr/local/font. Ścieżki względne zaczynają się od katalogu bieżącego, który jest parametrem procesu używającego dostępu do pliku lub katalogu. Więc local/font oznacza plik lub katalog font w katalogu local w bieżącym katalogu, którym może (lub nie) być katalog /usr.

8/112 System plików Dowiązania Plik może być znany pod więcej niż jedną nazwą w katalogu/ach. Takie wielokrotne referencje nazywamy dowiązaniami (links), przy czym wszystkie one są traktowane jednakowo przez system operacyjny. UNIX ma też dowiązania symboliczne (symbolic links), które są plikami zawierającymi nazwę innego pliku. Te dwa rodzaje dowiązań są nazywane inaczej twardymi i miękkimi. Dowiązania miękkie (symboliczne), w odróżnieniu od twardych, mogą wskazywać na katalogi i mogą przekraczać granice systemu plików. "." Nazwa pliku. w danym katalogu jest twardym dowiązaniem do tego katalogu. ".." Nazwa pliku.. jest twardym dowiązaniem do katalogu nadrzędnego. Tak więc, jeśli bieżącym katalogiem jest /home/lm/programy, to../bin/wdf odnosi się do /home/lm/bin/wdf. Urządzenia Fizyczne urządzenia mają swoje nazwy w systemie plików. Te tzw. pliki specjalne są traktowane przez jądro jako interfejsy urządzeń, tym niemniej są udostępniane użytkownikom za pomocą tych samych funkcji systemowych jakie dotyczą zwykłych plików. Katalog /dev typowo zawiera pliki specjalne urządzeń, takie jak /dev/console, /dev/lp0, /dev/mt0, /dev/sda, /dev/sdc, /dev/null, itd.

Zwyczajowy układ katalogów UNIX/Linux 9/112

Zwyczajowy układ katalogów Typowa instalacja system UNIX/Linux posiada m.in. następujące katalogi: / katalog główny (root). Tu zaczyna się drzewo katalogów, które zwykle zawiera małą liczbę podkatalogów. /bin zawiera pliki binarne głównych programów systemowych, wymaganych do startu systemu i poleceń (komend) UNIX-a. /kernel binarny ładowalny obraz systemu operacyjnego UNIX /boot zawiera jądro Linux-a, początkowy obraz dysku RAM (sterowniki wymagane w czasie startu systemu) i program ładujący (boot loader). Ważne pliki: /boot/grub/grub.conf lub menu.lst, używane do konfiguracji programu ładującego /boot/vmlinuz - jądro Linux-a /dev zawiera pliki specjalne urządzeń, takie jak /dev/console, /dev/lp0, /dev/mt0, /dev/null, /dev/sda, itd. W tym katalogu jądro przechowuje listę znanych sobie i obsługiwanych urządzeń. /etc zawiera pliki i programy administracyjne i konfiguracyjne, plik haseł. Ponadto zawiera zbiór skryptów powłoki, które uruchamiają usługi systemowe w czasie startu systemu. Cała zawartość tego katalogu ma postać plików tekstowych. Ważne pliki: /etc/crontab - definiuje kiedy mają się uruchamiać zadania automatycznie realizowane. /etc/fstab - tabela urządzeń przechowujących dane (dysków) i ich punktów montowania. /etc/passwd - lista kont użytkowników. /home Normalnie każdy użytkownik posiada swój katalog domowy w katalogu /home. Zwykli użytkownicy mogą zapisywać pliki jedynie w swoim katalogu domowym. To ograniczenie zabezpiecza system przed utratą danych i zapewnia ich bezpieczeństwo. 10/112

11/112 Zwyczajowy układ katalogów /lib zawiera pliki biblioteczne współdzielone przez główne programy systemowe, podobnie jak pliki DLL w systemie Windows. Są to biblioteki funkcji języka C, Pascal, FORTRAN, itd.; mogą one też wystąpić w /usr/lib lub /usr/local/lib. /usr/local zawiera programy nie wchodzące w skład dystrybucji, ale używane przez różnych użytkowników. Programy kompilowane ze źródeł są normalnie instalowane w /usr/local/bin. W nowo zainstalowanym systemie ten katalog jest pusty, aż do momentu instalacji oprogramowania przez administratora /usr/sbin zawiera pozostałe programy do administrowania systemem. /usr/share zawiera wszystkie dane współdzielone przez programy zainstalowane w /usr/bin. Obejmują one domyślne pliki konfiguracyjne, ikony, tła ekranu, dźwięki, itd. Jako że większość zainstalowanych programów posiada swoją dokumentację, katalog /usr/share/doc przechowuje pliki dokumentacji podzielone według programów. /var z wyjątkiem /tmp i /home, katalogi omawiane dotąd były względnie statyczne, tzn., ich zawartość zmieniała się rzadko. Katalog /var jest przeznaczony na dane podlegające częstym zmianom, np. pliki baz danych, poczty elektronicznej, przeglądarek internetowych, itp. /var/log zawiera pliki logów systemowych, rejestrujących różne działania i zdarzenia występujące w systemie. Są one ważne i powinny być okresowo sprawdzane. Najbardziej istotnym jest /var/log/messages, gdzie zapisywane są rekordy dotyczące zdarzeń na poziomie systemu (np. awarii). Ze względów bezpieczeństwa, niektóre systemy wymagają uprawnień administratora dla uzyskania dostępu do tych zasobów. Wszystkie konwencje dotyczące lokalizacji plików i katalogów były zdefiniowane przez programistów i programy; jądro wymaga tylko istnienia /etc/init do inicjalizacji procesu terminala potrzebnego do udostępnienia użytkownikowi systemu.

12/112 Polecenia UNIX-a UNIX posiada rozbudowany zestaw poleceń, umożliwiających nie tylko manipulację plikami i danymi, ale i środowiskiem użytkownika. Polecenie składa się z nazwy i argumentów (opcji, nazw plików i/lub innych wyrażeń), a kończy się naciśnięciem klawisza ENTER (lub RETURN). W działaniu polecenie UNIX-a są podobne do czasowników języka angielskiego, przeważnie w formie skróconej, cp oznacza copy. Opcje działają jako przysłówki (adverbs), modyfikując działanie polecenia, a nazwy plików i wyrażenia są obiektami podlegającymi działaniu. Ogólna postać polecenia UNIX-a: nazwa [-flagi] [opcje] nazwapliku/wyrażenie Nawiasy kwadratowe obejmujące flagi i opcje oznaczają, że są one opcjonalne (występują jeśli chcemy użyć konkretnej flagi/opcji). Flagi nie muszą być podane oddzielnie (każda z poprzedzającym znakiem -). Można je podać kolejno wszystkie za jednym znakiem -. Wydając polecenia UNIX, należy stosować się do reguł: polecenia rozróżniają wielkość liter, choć większość używa małych liter polecenia mogą być wprowadzone tylko z linii poleceń linia polecenia kończy się naciśnięciem klawisza RETURN opcje poleceń występują po znaku - (minus) wiele poleceń akceptuje wiele (nie raz bardzo) opcji.

13/112 System plików UNIX/Linux organizuje pliki w hierarchiczną strukturę katalogów. Oznacza to, że katalogi (w innych systemach zwane też folderami) są elementami drzewa, każdy katalog może zawierać pliki i dalsze katalogi. Pierwszy katalog systemu plików nazywa się głównym (root directory). Posiada on pliki zwykłe i katalogi niższego rzędu (podkatalogi). W odróżnieniu od systemu Windows, tworzącego oddzielny system plików dla każdego urządzenia przechowującego dane, systemy Unix-owe zawsze mają jedno drzewo systemu plików, niezależnie od ilości urządzeń pamięci podłączonych do komputera. Urządzenia pamięci zewnętrznej są dołączane (a poprawnie - montowane) w różnych miejscach drzewa zgodnie z preferencjami administratora, odpowiedzialnego za utrzymanie systemu. Katalog bieżący W każdej chwili system udostępnia pewien katalog, w którym aktualnie działa użytkownik, mając dostęp do znajdujących się tam plików, do katalogu nadrzędnego (parent directory) i dowolnych podkatalogów. Katalog w którym aktualnie znajduje się użytkownik nazywany jest bieżącym katalogiem roboczym (current working directory). Aby wyświetlić jego nazwę należy użyć polecenia pwd (print working directory): lm@arch:~% pwd Kiedy użytkownik wchodzi do systemu (loguje się), lub uruchamia sesję terminala, bieżący katalog roboczy jest ustawiany na katalog domowy (home directory). Każde konto w systemie posiada własny katalog domowy; tylko w nim normalny użytkownik może dokonywać zapisu i zmiany plików.

14/112 System plików - zmiana katalogu bieżącego Aby zmienić katalog bieżący należy użyć polecenia cd, czyli napisać: cd <ścieżka do katalogu docelowego> lm@arch:~% cd.. lm@arch:/home% cd lm lm@arch:~% cd Downloads lm@arch:~/downloads% cd /home/lm/downloads lm@arch:~/downloads% Istnieją skrótowe notacje: lm@arch:~/apps% cd lm@arch:~% zmienia katalog bieżący na domowy lm@arch:/home% cd - /home/lm/apps lm@arch:~/apps% zmienia katalog bieżący na poprzedni katalog bieżący lm@arch:~/apps% cd ~lm lm@arch:~% zmienia katalog bieżący na katalog domowy użytkownika lm.

15/112 System plików - istotne własności nazw plików/katalogów 1 nazwy plików rozpoczynające się od kropki oznaczają pliki ukryte (hidden). Oznacza to tylko, że normalnie polecenie wyświetlające zawartość katalogu (ls) ich nie uwzględni, o ile nie użyto opcji -a. Każdy katalog domowy zawiera wiele ukrytych plików, używanych do konfiguracji konta. Dodatkowo, aplikacje zapisują swoje ustawienia w plikach ukrytych w katalogu użytkownika. 2 w nazwach plików i poleceń w systemie UNIX/Linux rozróżnia się wielkość liter. Nazwy Plik1 i plik1 oznaczają inne pliki. 3 zasadniczo UNIX/Linux nie obsługuje koncepcji rozszerzenia nazwy pliku, jak inne systemy operacyjne. W związku z tym można nazywać pliki dowolnie, a ich zawartość i przeznaczenie jest określane w inny sposób. Natomiast niektóre aplikacje użytkowe takie reguły stosują i są one pamiętane w konfiguracji przechowywanej w ramach systemu. 4 mimo że UNIX/Linux obsługuje długie nazwy plików ze spacjami i znakami interpunkcji, zaleca się nie stosować spacji, znaków interpunkcji innych niż kropka, minus i podkreślenie. W zamian spacji można stosować podkreślenie. Te reguły upraszczają pracę z poleceniami (spacja jest separatorem pól polecenia).

System plików - wyświetlanie zawartości katalogów Aby wyświetlić pliki i katalogi w bieżącym katalogu roboczym (albo w innym), należy użyć polecenia ls. Aby wyświetlić zawartość katalogu bieżącego: lm@arch:~/tests% ls IAS.png sources.list texts lm@arch:~/tests% Aby wyświetlić zawartość wybranego katalogu (tests): lm@arch:~% ls tests IAS.png sources.list texts lm@arch:~% Aby wyświetlić zawartość wielu wybranych katalogów (/home /usr /tmp): lm@arch:~% ls /home /usr /tmp lm@arch:~%... Można określić format wyświetlania, np. rozszerzony, by pokazać szczegółowe parametry plików: lm@arch:~% ls -l total 256 drwxr-xr-x 7 lm lm 4096 Oct 8 16:05 Downloads drwxr-xr-x 16 lm lm 4096 Oct 8 10:42 Documents drwxrwxr-x 7 lm lm 4096 Oct 6 15:42 vmware -rw-rw-r-- 1 lm lm 89119 Oct 5 12:10 dmesg.txt 16/112

17/112 System plików - rozszerzony format wyświetlania zawartości katalogu Rezultat wyświetlania rozszerzonej informacji o pliku za pomocą polecenia ls -l: -rw-rw-r-- 1 lm lm 89119 Oct 5 12:10 dmesg.txt zawiera następujące pola: - pierwszy znak określa typ pliku. Znak minus oznacza plik zwykły, znak d oznacza katalog a l link (dowiązanie) symboliczne. rw-rw-r wyświetla prawa dostępu do pliku. Grupa pierwszych 3 znaków określa prawa dostępu dla posiadacza pliku, następna grupa dla użytkowników należących do jego grupy, a ostatnia grupa dla pozostałych. 1 ilość twardych dowiązań prowadzących do pliku. lm nazwa użytkownika do którego należy plik lm nazwa grupy użytkownika do którego należy plik 89119 rozmiar pliku w bajtach Oct miesiąc ostatniej modyfikacji pliku 5 dzień ostatniej modyfikacji pliku 12:10 godzina ostatniej modyfikacji pliku dmesg.txt nazwa pliku. Kiedy wyświetlana linia reprezentuje symboliczne dowiązanie, ma ona specjalną postać, np.: lrwxrwxrwx 1 lm lm 21 Oct 12 09:50 sources.list -> /home/lm/sources.list

18/112 System plików - wyświetlanie zawartości katalogu poleceniem ls Większość poleceń obsługuje opcje w postaci pojedynczego znaku, poprzedzonego znakiem minus, na przykład, -l, ale wiele poleceń, w tym pochodzące z Projektu GNU [3] dodatkowo obsługuje pełne nazwy opcji (long options), składające się ze słowa poprzedzonego dwoma znakami minus. Dodatkowo, wiele poleceń pozwala podawać łącznie wiele opcji za pojedynczym znakiem minus, np. ls -larth. Polecenie ls ma dużą liczbę opcji, z których najczęściej stosuje się: -a ( all) wyświetla wszystkie pliki, nawet te o nazwie zaczynającej się od kropki (ukryte) (hidden) -d ( directory) Normalnie jeśli polecenie ls dotyczy katalogu, wyświetlana jest jego zawartość. Ta opcja łącznie z opcją -l pozwala wyświetlić informacje o katalogu, a nie jego zawartość -F ( classify) pozwala dołączyć znak identyfikujący typ elementu na końcu każdej nazwy. Na przykład, / jeśli nazwa dotyczy katalogu -h ( human-readable) wyświetla rozmiary elementów w bardziej czytelny sposób, używając jednostek (kb, MB) a nie w bajtach -l wyświetla zawartość katalogu w rozszerzonej postaci -r ( reverse) wyświetla w odwrotnym porządku. Normalnie, ls wyświetla sortując alfabetycznie w rosnącym porządku -S sortuje w zależności od rozmiaru -t sortuje w zależności od czasu modyfikacji.

19/112 System plików - operacje plikowe Określanie typu pliku za pomocą polecenia file Zawartość (typ) pliku jest istotną własnością, natomiast konwencja nazewnicza Unix-a nie wymaga by nazwa odzwierciedlała typ i zawartość pliku. Do wyświetlenia informacji o typie używa się polecenia file: lm@arch:~/tests% ls -lrth total 32K -rw-rw-r-- 1 lm lm 26K Sep 30 13:45 IAS.png -rw-rw-r-- 1 lm lm 18 Oct 12 10:55 texts lrwxrwxrwx 1 lm lm 21 Oct 12 11:05 sources.list -> /home/lm/sources.list lm@arch:~/tests% file texts texts: ASCII text lm@arch:~/tests% file sources.list sources.list: symbolic link to '/home/lm/sources.list' lm@arch:~/tests% file IAS.png IAS.png: PNG image data, 446 x 584, 8-bit/color RGB, non-interlaced Wyświetlanie zawartości plików tekstowych poleceniem less Polecenie less pozwala podglądać pliki tekstowe. W systemie Unix jest ogromna liczba plików zawierających nie formatowany tekst, np. pliki konfiguracyjne. Polecenie less jest bardziej wygodne niż znane polecenie more, na przykład: lm@arch:~/tests% less /etc/passwd

20/112 System plików - operacje plikowe Kopiowanie plików Używając plecenia cp kopiujemy plik passwd z katalogu /etc do katalogu bieżącego: lm@arch:~/tests% cp /etc/passwd. lm@arch:~/tests% ls dir1 dir2 IAS.png passwd sources.list texts Katalog bieżący jest reprezentowany przez kropkę (twarde dowiązanie do katalogu wewnątrz niego samego). lm@arch:~/tests% cp -v /etc/passwd. '/etc/passwd' -> './passwd' lm@arch:~/tests% ls dir1 dir2 IAS.png passwd sources.list texts Polecenie cp wykonało kopiowanie powtórnie, tym razem wyświetlając komunikat o swoim działaniu. Zauważmy że odbyło się to bez jakiegokolwiek ostrzeżenia, nadpisując istniejący plik. Jest to efekt ogólnego założenia, że użytkownik Unix-a wie co robi. Aby uniknąć tego typu sytuacji, należy użyć opcji -i (tryb interaktywny): lm@arch:~/tests% cp -i /etc/passwd. cp: overwrite './passwd'? n # n zablokuje wykonanie polecenia lm@arch:~/tests% ls

21/112 System plików - operacje plikowe Tworzenie katalogów Polecenie mkdir jest przeznaczone do tworzenia katalogu, lub katalogów (akceptuje wiele argumentów): lm@arch:~/tests% mkdir dir1 dir2 lm@arch:~/tests% ls -F dir1/ dir2/ file IAS.png passwd Usuwanie katalogów Polecenie rm jest przeznaczone do usuwania plików i katalogów, ale domyślnie rm obsługuje tylko usuwanie plików. Aby usunąć katalog razem z jego zawartością należy użyć opcji -r lub -R ( recursive). lm@arch:~/tests% ls -F dir1/ dir2/ file IAS.png passwd lm@arch:~/tests% mkdir dir3 lm@arch:~/tests% cp file dir3 lm@arch:~/tests% ls dir3 file lm@arch:~/tests% rm dir3 rm: cannot remove 'dir3': Is a directory lm@arch:~/tests% rm -ri dir3 rm: descend into directory 'dir3'? y rm: remove regular file 'dir3/file'? y rm: remove directory 'dir3'? y Pozostałe istotne opcje to: -i zatwierdzanie przed usuwaniem każdego elementu -I jednokrotne zatwierdzanie przed usuwaniem więcej niż 3 elementów, lub usuwaniem rekurencyjnym. Mniej pedantyczny sposób niż -i, ale w pewnym stopniu chroniący przez pomyłkami -v ( verbose) informowanie o podejmowanych działaniach

22/112 System plików - operacje plikowe Przenoszenie i zmiana nazwy plików lm@arch:~/tests% ls -F dir1/ dir2/ IAS.png passwd texts lm@arch:~/tests% mv texts file lm@arch:~/tests% ls -F dir1/ dir2/ file IAS.png passwd lm@arch:~/tests% mv file dir1 lm@arch:~/tests% ls -F dir1/ dir2/ IAS.png passwd lm@arch:~/tests% ls dir1 file lm@arch:~/tests% mv dir1/file dir2 lm@arch:~/tests% ls dir1 lm@arch:~/tests% ls dir2 file lm@arch:~/tests% mv dir2/file. lm@arch:~/tests% ls dir2 lm@arch:~/tests% ls -F dir1/ dir2/ file IAS.png passwd

System plików - operacje plikowe Przenoszenie i zmiana nazwy katalogów lm@arch:~/tests% ls -F dir1/ dir2/ file IAS.png passwd lm@arch:~/tests% mv file dir1 lm@arch:~/tests% mv dir1 dir2 lm@arch:~/tests% ls -F dir2/ IAS.png passwd lm@arch:~/tests% ls -F dir2 dir1/ lm@arch:~/tests% mv dir2/dir1. lm@arch:~/tests% mv dir1/file. lm@arch:~/tests% mv file dir1 lm@arch:~/tests% ls -F dir1/ dir2/ IAS.png passwd lm@arch:~/tests% mv dir1 dir2 lm@arch:~/tests% ls -F dir2/ IAS.png passwd lm@arch:~/tests% ls -F dir2 dir1/ lm@arch:~/tests% ls dir2/dir1 file lm@arch:~/tests% mv dir2/dir1. lm@arch:~/tests% mv dir1/file. lm@arch:~/tests% ls -F dir1/ dir2/ file IAS.png passwd UWAGA: ponieważ katalog dir2 istniał, polecenie mv dir1 dir2 przeniosło dir1 do dir2. Gdyby dir2 nie istniał, polecenie mv zmieniłoby nazwę katalogu dir1 na dir2. 23/112

24/112 System plików - dowiązania twarde i symboliczne Dowiązania twarde (hard links) są pierwotnym podejściem Unix-a do tworzenia łącz do plików, w odróżnieniu do dowiązań symbolicznych (symbolic links), które są nowszą konstrukcją. Każdy plik ma początkowo jedno twarde dowiązanie definiujące jego nazwę. Tworząc twarde dowiązanie, tworzymy dla istniejącego pliku nowe łącze w wybranym katalogu. Ograniczenia twardych dowiązań: nie mogą odnosić się do plików istniejących poza własnym systemem plików. Oznacza to, że twarde dowiązanie nie może wskazywać na plik istniejący w innej partycji dysku systemowego. nie mogą wskazywać na katalogi. Twarde dowiązanie nie jest odróżnialne od samego pliku, który reprezentuje. Przy wyświetlaniu zawartości katalogu zawierającego twarde dowiązanie nie jest ono w żaden sposób wyróżniane. Kiedy takie dowiązanie jest usuwane, plik przez nie reprezentowany pozostaje, o ile nie było to ostatnie dowiązanie. Dowiązania symboliczne (symbolic links) stworzono by wyeliminować ograniczenia twardych dowiązań. Dowiązania symboliczne realizuje się za pomocą specjalnego typu pliku, który zawiera ścieżkę do innego pliku lub katalogu. Są one podobne do skrótów systemu Windows, ale wyprzedzają je w czasie o wiele lat, ;-). Plik reprezentowany przez dowiązanie symboliczne i samo dowiązanie są zwykle nie odróżniane. Na przykład, przy zapisie do dowiązania, w istocie wykonujemy zapis do pliku przez nie reprezentowanego. Natomiast jeśli dowiązanie symboliczne zostanie usunięte, to plik pozostanie. Jeśli natomiast usunięty zostanie plik reprezentowany przez dowiązanie symboliczne, to dowiązanie pozostanie, ale nie będzie już reprezentować niczego. Wtedy nazywa się je pustym (broken).

System plików - tworzenie dowiązań twardych lm@arch:~/tests% ls -l total 12 drwxrwxr-x 2 lm lm 4096 Oct 16 11:46 dir1 drwxrwxr-x 2 lm lm 4096 Oct 16 11:46 dir2 -rw-rw-r-- 1 lm lm 18 Oct 12 10:55 file lm@arch:~/tests% ln file file-hard lm@arch:~/tests% ls -lih total 16K 7346653 drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir1 7346654 drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir2 7346515 -rw-rw-r-- 2 lm lm 18 Oct 12 10:55 file 7346515 -rw-rw-r-- 2 lm lm 18 Oct 12 10:55 file-hard lm@arch:~/tests% cat file 1st line 2nd line lm@arch:~/tests% cat file-hard 1st line 2nd line lm@arch:~/tests% rm file lm@arch:~/tests% ls -lh total 12K drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir1 drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir2 -rw-rw-r-- 1 lm lm 18 Oct 12 10:55 file-hard lm@arch:~/tests% cat file-hard 1st line 25/112

26/112 System plików - tworzenie dowiązań symbolicznych do plików lm@arch:~/tests% ls -lih total 16K 7346653 drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir1 7346654 drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir2 7346515 -rw-rw-r-- 2 lm lm 18 Oct 12 10:55 file lm@arch:~/tests% ln -s file file-symb lm@arch:~/tests% ls -lih total 16K 7346653 drwxrwxr-x 2 lm lm 4.0K Oct 16 12:35 dir1 7346654 drwxrwxr-x 2 lm lm 4.0K Oct 16 11:46 dir2 7346515 -rw-rw-r-- 2 lm lm 18 Oct 12 10:55 file 7345882 lrwxrwxrwx 1 lm lm 4 Oct 16 12:34 file-symb -> file lm@arch:~/tests% ln -s../file dir1/file-symb lm@arch:~/tests% ls -lih dir1 total 0 7346518 lrwxrwxrwx 1 lm lm 7 Oct 16 12:35 file-symb ->../file Tworząc dowiązanie symboliczne, tworzymy tekstowy opis lokalizacji docelowego elementu (pliku lub katalogu) względem dowiązania. Listing elementu file-symb w katalogu dir1 zawiera oznaczenie dowiązania symbolicznego (znak l w pierwszym polu) i ścieżkę../file, podaną względem położenia file-symb, jako że file występuje w katalogu nadrzędnym. Rozmiar pliku tego dowiązania symbolicznego jest równy 7, czyli ilości znaków w ścieżce../file, a nie rozmiarowi pliku docelowego.

System plików - tworzenie dowiązań symbolicznych do katalogów lm@arch:~/tests% ln -s dir1 dir1-symb lm@arch:~/tests% ls -lih total 12K 7346653 drwxrwxr-x 2 lm lm 4.0K Oct 16 12:35 dir1 7346655 lrwxrwxrwx 1 lm lm 4 Oct 16 13:00 dir1-symb -> dir1 7346515 -rw-rw-r-- 1 lm lm 18 Oct 12 10:55 file lm@arch:~/tests% mv file dir1-symb lm@arch:~/tests% ls -lih total 8.0K 7346653 drwxrwxr-x 2 lm lm 4.0K Oct 16 12:35 dir1 7346655 lrwxrwxrwx 1 lm lm 4 Oct 16 13:00 dir1-symb -> dir1 lm@arch:~/tests% ls -lih dir1 total 4.0K 7346515 -rw-rw-r-- 1 lm lm 18 Oct 12 10:55 file lm@arch:~/tests% ls -lih dir1-symb 7346655 lrwxrwxrwx 1 lm lm 4 Oct 16 13:00 dir1-symb -> dir1 lm@arch:~/tests% cd dir1-symb lm@arch:~/tests/dir1-symb% ls file lm@arch:~/tests/dir1% cd.. lm@arch:~/tests% mv dir1 dir3 lm@arch:~/tests% ls -lih total 8.0K 7346654 drwxrwxr-x 2 lm lm 4.0K Oct 16 13:01 dir3 7346655 lrwxrwxrwx 1 lm lm 4 Oct 16 13:00 dir1-symb -> dir1 // BROKEN! 27/112

28/112 System plików - dowiązania symboliczne Tworząc dowiązania symboliczne można użyć ścieżek bezwzględnych: lm@arch:~/tests% ln -s /home/lm/tests/file dir1/file-symb lub względnych, jak w poprzednim przykładzie. Użycie ścieżek względnych jest bardziej optymalne, ponieważ pozwala zmieniać nazwę lub lokalizację katalogu w którym znajduje się dowiązanie bez wpływu na jego poprawność. Większość operacji wykonywanych na dowiązaniu dotyczy elementu docelowego, a nie samego dowiązania. Istotnym wyjątkiem jest polecenie rm. Gdy usuwa się dowiązanie, element przez nie wskazywany (plik lub katalog) nie jest usuwany, tylko dowiązanie. Tworzenie dowiązań z poziomu GUI Programy zarządzające plikami w środowiskach GNOME i KDE pozwalają łatwo tworzyć dowiązania symboliczne. W środowisku GNOME, przyciśnięcie klawiszy Ctrl+Shift w czasie przeciągania pliku utworzy dowiązanie, zamiast kopiowania lub przeniesienia pliku. W środowisku KDE, przy upuszczaniu elementu pojawia się małe menu z opcjami kopiowania, przenoszenia i tworzenia dowiązania.