Z pogranicza » Linux

Interfejs uzytkownika - pliki

  • 5 komentarzy
  • 1825 odsłon
  • Oceń ten tekst jako pierwszy
<html> <body style="FONT-FAMILY: Verdana; FONT-SIZE: 10pt;">  <style> table {font-size: 10pt}  h3  { color: #000000;        font-weight: bold;       font-size: 18pt;       background-color: #e8d5ba;       text-align: center;       padding: 5;       border: double 1pt;       width: 100%;       margins: 0;       paddings: 4  }  h4  { color: #000000;       font-weight: bold;       font-size: 16pt;       background-color: #c5dcdc;       text-align: center;       padding: 5;       border: double 1pt;       width: 100%;       margins: 0;       paddings: 4  }  h5  { color: #000000;       font-weight: normal;       font-size: 11pt;       background-color: #c5dcc5;       text-align: left;       padding: 5;       border: double 1pt;       width: 100%;       margins: 0;       paddings: 4  }  h6  {         color:       #0000cd;         font-weight:  bold;         font-size:    12pt;         font-family:  monospace, Courier, "Courier CE";         text-align:   left;         text-indent:  10pt;         word-spacing: 3pt;         width:        auto }  em  {         color:        #0000cd;         font-weight:  normal;         font-size:    12pt;         font-family:  Courier, "Courier CE";         text-align:   left;         text-indent:  10pt;         word-spacing: 0pt;         width:        auto }    </style>  

LINUX - Interfejs użytkownika.

    <center>

3. PLIKI

</center> Każdy system operacyjny ma do spełnienia 2 podstawowe cele: efektywne zarządzanie zasobami systemu komputerowego i zapewnienie wygodnej pracy użytkownikom. Użytkownicy systemu mają do czynienia ze zbiorem programów systemowych, które umożliwiają wykonywanie typowych działań takich, jak:                  
  • manipulowanie plikami,
  • tworzenie i wykonywanie programów,
  • komunikację sieciową,
  • informowanie o stanie systemu.
                

Do takich programów zalicza się zarówno tekstowy interpreter poleceń oraz programy tworzące graficzne środowisko pracy użytkownika, jak i przeglądarka WWW, edytor tekstów czy kompilator jakiegoś języka programowania. Ten zestaw programów stanowi rodzaj interfejsu dla użytkowników systemu operacyjnego.

                

Jedną z podstawowych usług świadczonych przez system na rzecz użytkowników jest wykonywanie programów. Wykonujący się program nosi nazwę procesu. W lekcji 2 przybliżamy pojęcia procesu, grupy współpracujących procesów oraz sesji procesów korzystających ze wspólnego terminala sterującego. Przedstawiamy metody uruchamiania procesów oraz wpływu na przebieg ich wykonania poprzez zmianę priorytetu i przesyłanie sygnałów. Omawiamy również sterowanie pracami przez interpreter poleceń, umożliwiające wybiórcze wstrzymywanie i wznawianie działających procesów.

    <center>

System plików

</center>                

System plików tworzy mechanizm bezpośredniego przechowywania i dostępu do informacji w systemie operacyjnym. Odwzorowuje logiczną koncepcję pliku na fizyczne urządzenia pamięci.

                

Plik jest logiczną jednostką przechowywania informacji w pamięci pomocniczej. Zawiera ciąg bajtów, których znaczenie określa twórca pliku i korzystający z niego program.

                
(1.1) Typy plików
                

System Linux, podobnie jak system Unix, rozpoznaje 7 typów plików opisanych w tablicy 3.1. Typ pliku przechowywany jest jako jeden z atrybutów pliku i nie ma żadnego odzwierciedlenia w jego nazwie.

                
                         Tablica 3.1 Typy plików w systemie Linux</caption>                                                                                                                           <center>                                                         Typ pliku</center>                                         </th>                                                                                          <center>                                                         Przeznaczenie</center>                                         </th>                                 </tr>                                                                          Plik zwykły</td>                                         Plik służacy do przechowywania różnego rodzaju danych,
                                                 np.: kodu wykonywalnego programu, kodu źródłowego, danych dla programu, tekstu.</td>                                 </tr>                                                                          Katalog</td>                                         Plik przechowujący informacje o położeniu innych plików w strukturze katalogowej.</td>                                 </tr>                                                                          Plik specjalny blokowy</td>                                         Plik reprezentujący urządzenie o dostępie blokowym.</td>                                 </tr>                                                                          Plik specjalny znakowy</td>                                         Plik reprezentujący urządzenie o dostępie znakowym.</td>                                 </tr>                                                                          Dowiązanie symboliczne</td>                                         Plik wskazujący na położenie innego pliku w strukturze katalogowej.</td>                                 </tr>                                                                          Kolejka FIFO</td>                                         Plik implementujący łącze nazwane - jeden z mechanizmów komunikacji międzyprocesowej.</td>                                 </tr>                                                                          Gniazdo</td>                                         Plik implementujący gniazdo w dziedzinie Unixa - jeden z mechanizmów komunikacji międzyprocesowej.</td>                                 </tr>                         </table>                
                

                

                  

(1.2) Struktura katalogowa
                 </p>                

Pliki w systemie Linux zorganizowane są w drzewiastą strukturę katalogową z wyróżnionym korzeniem w postaci katalogu głównego /. Typową strukturę katalogową przedstawiono na rys. 3.1 a przeznaczenie poszczególnych katalogów opisano w tablicy 3.2.

                
                        

                        
SYSTEMPLIKOW.JPG
Rys.3.1 Struktura systemu plików w systemie Linux
                        

                        

                        

Tablica 3.2 System plików - przeznaczenie katalogów

                                 </caption>                                                                                                                           <center>                                                         Nazwa katalogu</center>                                         </td>                                                                                          <center>                                                         Zawartość</center>                                         </td>                                 </tr>                                                                          /</td>                                         Katalog główny (ang. root - czyli korzeń drzewa katalogów).</td>                                 </tr>                                                                          /bin</td>                                         Pliki z kodem wykonywalnym programów systemowych.</td>                                 </tr>                                                                          /boot</td>                                         Pliki wykorzystywane w czasie uruchamiania systemu m.in. plik zawierający kod jądra systemu vmlinuz.</td>                                 </tr>                                                                          /dev</td>                                         Pliki specjalne reprezentujące urządzenia wejścia/wyjścia.</td>                                 </tr>                                                                          /etc</td>                                         Pliki konfiguracyjne jądra systemu oraz demonów realizujących usługi systemowe.</td>                                 </tr>                                                                          /lib</td>                                         Pliki zawierające biblioteki funkcji.</td>                                 </tr>                                                                          /sbin</td>                                         Pliki z kodem wykonywalnym programów służących do administracji systemem.</td>                                 </tr>                                                                          /tmp</td>                                         Pliki tymczasowe.</td>                                 </tr>                                                                          /usr</td>                                         Katalog o podobnej do katalogu głównego strukturze podkatalogów.</td>                                 </tr>                                                                          /var</td>                                         Pliki konfiguracyjne i informacyjne systemu, m.in. skrzynki pocztowe użytkowników,
                                                                                                  pliki komunikatów systemowych.</td>                                 </tr>                                                                          /proc</td>                                         Interfejs do struktur danych jądra opisujących wszystkie aktywne procesy.</td>                                 </tr>                                                                          /home</td>                                         Katalogi domowe użytkowników.</td>                                 </tr>                                                                          /mnt</td>                                         Typowe punkty dołączenia innych fragmentów systemu plików do wspólnej struktury katalogowej.</td>                                 </tr>                                                                          /mnt/cdrom</td>                                         Punkt dołączenia dysku CD-ROM.</td>                                 </tr>                                                                          /mnt/floppy</td>                                         Punkt dołączenia dyskietki.</td>                                 </tr>                                                                          /mnt/win</td>                                         Punkt dołączenia systemu plików Windows xx.</td>                                 </tr>                                                                          /opt</td>                                         Opcjonalne, dodatkowe oprogramowanie.</td>                                 </tr>                         </table>                
                

                

W każdym katalogu istnieją dwie specjalne pozycje: . i .. wskazujące odpowiednio na katalog bieżący i katalog nadrzędny.

                

Nazwa każdego pliku (również katalogu) może składać się z 255 znaków. System rozróżnia małe i duże litery oraz dopuszcza stosowanie dowolnych znaków specjalnych. Użycie niektórych znaków, takich jak spacja czy tabulator, wymusza jednak specjalne traktowanie nazw plików ze względu na możliwość niewłaściwej interpretacji przez program interpretera poleceń. Nazwy takie podaje się zazwyczaj w cudzysłowach lub zabezpiecza w inny sposób (patrz Lekcja 4).

                

Pliki, których nazwy rozpoczynają się od kropki, określane są jako pliki ukryte i traktowane w specjalny sposób przez niektóre polecenia (patrz opis polecenia ls). Nazwy plików nie są unikalne, więc w różnych katalogach mogą występować pliki o tej samej nazwie.

                

Plik można w pełni zidentyfikować podając jego nazwę ścieżkową, składającą się z właściwej nazwy pliku oraz ścieżki dostępu w strukturze katalogowej. Ścieżka zawiera nazwy kolejnych katalogów, prowadzących do pliku, rozdzielone znakiem /.

                

Ścieżka bezwzględna rozpoczyna się od katalogu głównego / - np.: <em class="przyklad">/usr/local/bin.
                         </em>Ścieżka względna ustalana jest zawsze względem katalogu bieżącego i rozpoczyna się od nazwy jednego z jego podkatalogów (brak znaku / na początku) np.: <em class="przyklad">local/bin</em> , <em class="przyklad">./local/bin</em> , <em class="przyklad">../bin</em>.

                

W nazwach ścieżkowych można również posługiwać się znakiem specjalnym ~ oznaczającym katalog domowy zalogowanego użytkownika np.:<em class="przyklad"> ~/Mail</em> . Zapis ~użytkownik oznacza natomiast katalog domowy wskazanego użytkownika.

                
Pliki nie rezydują fizycznie w katalogach. Katalog zawiera jedynie listę pozycji wiążących nazwy plików z ich fizycznym położeniem w systemie plików.
                

W ten sam sposób dowiązane są pliki wszystkich typów, a więc również podkatalogi do katalogu nadrzędnego. Taki zapis w katalogu nosi nazwę dowiązania albo dowiązania twardego (ang. hard link). Możliwość utworzenia wielu dowiązań oznacza, że ten sam plik może być widoczny pod różnymi nazwami w kilku katalogach. Nie dotyczy to jednak podkatalogów. Zakaz tworzenia dowiązań twardych do istniejących katalogów zapobiega powstawaniu cykli w strukturze katalogowej.

                

Istnieje również drugi rodzaj dowiązań - dowiązanie symboliczne (ang. symbolic link). Jest to plik specjalnego typu, który wskazuje na położenie innego pliku w strukturze katalogowej, czyli przechowuje jego pełną nazwę ścieżkową. Dowiązanie symboliczne może wskazywać na dowolny plik lub katalog. Co więcej, może nawet wskazywać na nazwę, która nie istnieje.

                

Przeglądanie struktury katalogowej umożliwiają trzy podstawowe polecenia: pwd, cd i ls.

                

Polecenie pwd wypisuje pełną nazwę ścieżkową katalogu bieżącego. Zmianę katalogu bieżącego, czyli przejście do innego katalogu, umożliwia polecenie cd:

                
cd [katalog]
                

W przypadku braku argumentu katalog, domyślnie następuje przejście do katalogu domowego użytkownika.

                

                         Program ls wyświetla informacje o plikach podanych jako argumenty wywołania lub o plikach zawartych w podanych katalogach:

                
ls [opcje] [plik...]
                

gdzie:

                
plik - nazwa pliku (również katalogu),

opcje

- przełączniki określające rodzaj i format wyświetlanych informacji.
                

Program wywołany bez argumentów wyświetla zawartość katalogu bieżącego. Domyślnie nie są wyświetlane informacje o plikach, których nazwy zaczynają się od znaku '.' (kropka), czyli mają postać .nazwa np. <em class="przyklad">..</em> lub <em class="przyklad">.bashrc</em>. Takie pliki nazywane są plikami ukrytymi. Zakres informacji o plikach podawanych przez program ls można modyfikować za pomocą bogatego zestawu opcji, z których najważniejsze z nich zamieszczamy poniżej:

                
-a - wyświetla wszystkie plik, również ukryte,
-A - nie wyświetla pozycji . i ..,
-d - nie wyświetla zawartości katalogów, podanych jako argumenty, jedynie ich nazwy,
-i - wyświetla dodatkowo numery i-węzłów plików,
-l - wyświetla więcej atrybutów plików (długi format).
                

Polecenie ls -l jest jednym z najczęściej wykorzystywanych. Wyświetla ono w kolejnych kolumnach następujące atrybuty plików:

                
  1. typ i prawa dostępu w postaci symbolicznej,
  2. liczbę dowiązań,
  3. nazwę właściciela i grupy,
  4. rozmiar i datę ostatniej modyfikacji
  5. nazwę pliku.
                

Pierwsza kolumna składająca się z 10-ciu znaków przedstawia symbolicznie typ pliku (1 znak) i prawa dostępu (9 znaków). Symbole określające typ plik to:

                
- - plik zwykły,
d - katalog,
b - plik specjalny blokowy,
c - plik specjalny znakowy,
l - dowiązanie symboliczne,
p - FIFO,
s - gniazdo.
                

Znaczenie praw dostępu zostało opisane w punkcie 1.3.

                

Jeśli użytkownik korzysta z sesji graficznej to do przeglądania struktury katalogowej można wykorzystać liczne programy menedżerów plików. Pomocny może być również program o nazwie Midnight Commander, którego interfejs, pokazany na Rys. 3.2 jest podobny do programów Norton Commander i Windows Commander. Program umożliwia oglądanie zawartości katalogów, manipulację plikami, przeglądanie i edycję zawartości plików. Wersję programu działającą w środowisku tekstowym uruchamiamy poleceniem mc, zaś wersję działającą w środowisku graficznym - poleceniem gmc.

                
                        

                        
MC.GIF
Rys.3.2 Zastosowanie programu Midnight Commander do przeglądania plików
                        

                
                

                  

(1.3) Ochrona plików
                 </p>                

Systemy przeznaczone dla wielu użytkowników, muszą zapewnić każdemu użytkownikowi ochronę jego zasobów a w szczególności ochronę jego plików. W systemach Linux i Unix ochrona plików realizowana jest poprzez prawa własności i prawa dostępu do plików. Informacje te przechowywane są w systemie plików w postaci trzech atrybutów każdego pliku.

                

Prawa własności opisane są przez dwa atrybuty pliku:

                
  1. numer użytkownika będącego właścicielem pliku,
  2. numer grupy użytkowników posiadających specjalne uprawnienia do pliku.
                

Atrybuty te ustawiane są zgodnie z wartościami UID i GID użytkownika tworzącego plik. Wartości te mogą być później zmienione przy pomocy następujących poleceń:

                
chown [opcje] właściciel[:grupa] plik ...
                
chown [opcje] :grupa plik ...
                
chgrp [opcje] grupa plik ...
                

gdzie:

                
właściciel - nazwa nowego właściciela pliku
grupa - nazwa nowego właściciela pliku
plik - nazwa nowego właściciela pliku
                
                

Polecenie chown umożliwia zmianę właściciela pliku i/lub grupy użytkowników w zależności od sposobu wywołania. Polecenie chgrp zmienia grupę użytkowników wskazanym plikom. Dowolnych zmian tych atrybutów dla każdego pliku może dokonać wyłącznie administrator (użytkownik root). Zwykły użytkownik może jedynie ustawić swoim plikom numer jednej z grup, do których sam należy.

                

Programy chown i chgrp wykorzystują ten sam zestaw opcji:

                
-R - rekurencyjnie zmienia atrybuty plików
-f - nie wyświetla większości informacji o błędach
-v - wyświetla diagnostykę plików o zmienionych atrybutach
                

Kontrolowany dostęp do plików może być realizowany na wiele sposobów. Podstawowym mechanizmem stosowanym w systemach Linux i Unix są tzw. dostępy grupowe. Oznacza to, że prawa dostępu do plików nie są nadawane indywidualnym użytkownikom, ale pewnym kategoriom (grupom) użytkowników. Wyróżnione zostały trzy takie kategorie:

                
  1. właściciel pliku,
  2. grupa użytkowników, określona przez prawa własności,
  3. pozostali użytkownicy.
                

Dla każdej z powyższych kategorii zdefiniowane są trzy rodzaje uprawnień:

                
  1. prawo czytania z pliku - oznaczone literą r,
  2. prawo pisania do pliku - oznaczone literą w,
  3. prawo wykonywania pliku - oznaczone literą x.
                

Znaczenie poszczególnych praw w odniesieniu do plików zwykłych i katalogów opisano w Tablicy 3.3.

                
                         Tablica 3.3 Znaczenie praw dostępu do pliku zwykłego i katalogu</caption>                                                                          </td>                                                                                          <center>                                                         Plik zwykły</center>                                         </td>                                                                                          <center>                                                         Katalog</center>                                         </td>                                 </tr>                                                                          Prawo czytania</td>                                         Prawo odczytania zawartości pliku, prawo kopiowania pliku.</td>                                         Prawo odczytania zawartości katalogu, czyli odczytania listy plików poleceniem ls.</td>                                 </tr>                                                                          Prawo pisania</td>                                         Prawo modyfikacji zawartości pliku poprzez dopisanie, nadpisanie lub usunięcie fragmentów.</td>                                         Prawo modyfikacji zawartości katalogu, czyli dodania bądź usunięcia pliku z katalogu.</td>                                 </tr>                                                                          Prawo wykonywania</td>                                         Prawo uruchomienia programu lub skryptu zapisanego w pliku.</td>                                         Prawo przejścia do katalogu poleceniem cd.</td>                                 </tr>                         </table>                
                

Wszystkie prawa dostępu przechowywane są łącznie w jednym atrybucie pliku jako 9 kolejnych bitów, przy czym odpowiedni bit jest ustawiony na '1', jeśli prawo jest przyznane. Symbolicznie prawa dostępu przedstawiane są w postaci 9 pól wypełnionych literami r, w, x lub kreskami, co widać na rysunku 3.3. Litera oznacza nadanie odpowiedniego prawa, podczas gdy kreska - brak danego prawa.

                
                        
PRAWADOSTEPU.JPG

Rys. 3.3 Prawa dostępu do pliku

                
                

Prawa dostępu mogą być modyfikowane przez właściciela pliku lub administratora. Właściciel sam ustala, jakie prawa do swoich plików przyzna poszczególnym kategoriom użytkowników. Również sobie musi ustawić odpowiednie prawa dostępu, aby korzystać z własnych plików. Właściwie dobrane prawa dostępu mogą posłużyć jako zabezpieczenie przed przypadkowym zniszczeniem zawartości wybranych plików przez właściciela. Polecenie chmod pozwala dokonać wszystkich zmian:

                
chmod [opcje] tryb[, tryb]... plik ...
                
chmod [opcje] tryb_liczbowy plik ...
                

gdzie:

                
tryb - prawa dostępu w postaci symbolicznej,
tryb_liczbowy - prawa dostępu w kodzie ósemkowym,
plik - nazwa pliku.
                

Nowe uprawnienia mogą być podane w postaci symbolicznej lub numerycznej. Stosując postać symboliczną, należy wyspecyfikować w postaci argumentu tryb jakie uprawnienia, dla kogo i w jaki sposób modyfikujemy. Argument tryb składa się z trzech pól kategoriaoperatorprawa. Znaczenie poszczególnych pól jest wyjaśnione w tablicy 3.4:

                
                         Tablica 3.4 </caption>                                                                                                                          
                                                         Pole
                                         </td>                                                                                          
                                                         Znaczenie
                                         </td>                                                                                          
                                                         Zawartość
                                         </td>                                 </tr>                                                                          kategoria</td>                                         kategoria użytkowników</td>                                         dowolna kombinacja znaków:                                                  
  • u (właściciel),
  • g (grupa),
  • o (pozostali użytkownicy),
  • a (wszyscy)
                                         </td>                                 </tr>                                                                          operator</td>                                         rodzaj operacji na prawach dostępu</td>                                         jeden ze znaków:                                                  
  • + (dodanie),
  • - (odebranie),
  • = (ustawienie wyłącznie uprawnień podanych w poleceniu)
                                         </td>                                 </tr>                                                                          prawa</td>                                         prawa dostępu </td>                                         dowolna kombinacja znaków:                                                  
  • r,
  • w,
  • x
                                         </td>                                 </tr>                         </table>                
                

Elementy kategoria i prawa mogą zostać pominięte w argumencie tryb polecenia chmod. Brak kategorii oznacza, że operacja zmiany praw dotyczy wszystkich użytkowników.

                

<em class="przyklad">Przykład 3.1</em>

                
<em class="przyklad">chmod u+wx plik</em> - <em class="przyklad">dodanie prawa czytania i pisania dla właściciela pliku,</em>
<em class="przyklad">chmod +x plik</em> - <em class="przyklad">dodanie prawa wykonywania dla wszystkich użytkowników,</em>
<em class="przyklad">chmod go-w plik</em> - <em class="przyklad">odebranie prawa pisania dla grupy i innych użytkowników.</em>
                

W trybie numerycznym prawa dostępu opisuje się w postaci trzech cyfr w kodzie ósemkowym. Każda cyfra koduje wartości trzech bitów praw dostępu, czyli zapisuje uprawnienia jednej kategorii użytkowników.

                

<em class="przyklad">Przykład 3.2</em>

                
<em class="przyklad">chmod 755 plik</em> - <em class="przyklad">ustawia następujące prawa: rwx r-x r-x,</em>
<em class="przyklad">chmod 640 plik</em> - <em class="przyklad">ustawia następujące prawa: rw- r-- ---.</em>
                

Początkowe ustawienia praw dostępu dla tworzonych plików określane są na podstawie parametru umask jako dopełnienie jego wartości do pełnych uprawnień, czyli tryb = 777 - umask .

                

Maska uprawnień do tworzonych plików powinna być zdefiniowana w sesji każdego użytkownika. Służy do tego polecenie umask o składni:

                
umask [-S] maska
                

Argument maska może być podany w postaci numerycznej lub w postaci symbolicznej. Postać numeryczna opisuje w kodzie ósemkowym dopełnienie praw dostępu, czyli te prawa, których nie nadajemy. W postaci symbolicznej stosujemy składnię jak w poleceniu chmod. Polecenie wywołane bez argumentu wypisuje aktualną maskę praw dostępu w postaci numerycznej lub w postaci symbolicznej jeśli wywołane zostanie z opcją -S.

    <center>

Manipulowanie plikami

</center>                

Podstawowe operacje manipulowania plikami obejmują tworzenie i usuwanie plików, zmiany nazw, przesuwanie pomiędzy katalogami, kopiowanie oraz tworzenie dowiązań.

                

Nowy plik może powstać w systemie w wyniku działania wielu różnych programów. Utworzenie nowego katalogu wymaga zazwyczaj użycia specjalnego polecenia:

                
mkdir [opcje] katalog ...
                

Pusty katalog (zawierający jedynie pozycje . i ..) można usunąć poleceniem:

                
rmdir katalog ...
                

Jeżeli katalog jest niepusty, trzeba użyc polecenia, które usuwa całą gałąź drzewa rozpoczynającą się od wskazanego katalogu:

                
rm -r|R katalog ...
                

Polecenie rm w ogólnej postaci umożliwia usunięcie dowolnego pliku:

                
rm [opcje] plik ...
                

Użytkownik musi posiadać jednak odpowiednie uprawnienia do katalogu, w którym znajduje się plik. Same uprawnienia do pliku nie mają tu znaczenia, gdyż operacja polega na usunięciu zapisu z katalogu.

                

Najważniejsze opcje polecenia rm opisano poniżej:

                
-f - tryb forsowny, usuwa istniejące pliki docelowe bez prośby o potwierdzenie,
-i - tryb interaktywny, prosi o potwierdzenie operacji dla każdego argumentu,
-r - rekurencyjnie usuwa zawartość katalogów,
-R - rekurencyjnie usuwa zawartość katalogów.
                

Zmiana nazwy pliku i przesuwanie pliku pomiędzy katalogami, to w istocie te same operacje polegające na usunięciu jednego wpisu w katalogu i dodaniu innego. Polecenie mv umożliwia wykonanie obydwu operacji, Jego składnia jest następująca:

                
mv [opcje] plik_źródłowy plik_docelowy
                
mv [opcje] plik... katalog
                

gdzie:

                
plik_źródłowy - nazwa pliku,
plik_docelowy - nazwa pliku,
plik - nazwa pliku dowolnego typu (również katalogu),
katalog - nazwa katalogu docelowego.
                

Jeżeli plik docelowy istnieje, to zostanie usunięty pod warunkiem posiadania odpowiednich uprawnień do katalogu. Użycie jednej z poniższych opcji wpływa na przebieg tej operacji:

                
-f - tryb forsowny, usuwa istniejące pliki docelowe bez prośby o potwierdzenie,
-i - tryb interaktywny, prosi o potwierdzenie operacji.
                

                

Do kopiowania plików służy polecenie cp o składni:

                
cp [opcje] plik_źródłowy plik_docelowy
                
cp [opcje] plik... katalog
                

gdzie:

                
plik_źródłowy - nazwa pliku,
plik_docelowy - nazwa pliku,
plik - nazwa pliku dowolnego typu (również katalogu),
katalog - nazwa katalogu docelowego.
                

Możemy skopiować jeden plik na drugi lub kilka plików do katalogu. Poprzez dobór odpowiednich opcji można określić sposób wykonania tej operacji np. wymusić rekurencyjne kopiowanie całej gałęzi drzewa katalogów. Najważniejsze opcje przedstawiono poniżej:

                
-f - tryb forsowny, usuwa istniejące pliki docelowe bez prośby o potwierdzenie,
-i - tryb interaktywny, prosi o potwierdzenie operacji,
-r - rekurencyjnie kopiuje katalogi,
-R - rekurencyjnie kopiuje katalogi,
-p - zachowuje atrybuty pliku oryginalnego.
                

                

Polecenie ln umożliwia stworzenie nowego dowiązania twardego lub dowiązania symbolicznego:

                
ln [-s] plik_źródłowy plik_docelowy
                

gdzie:

                
plik_źródłowy - nazwa istniejącego pliku (dowiązania),
plik_docelowy - nazwa nowego dowiązania,
-s - tworzenie dowiązania symbolicznego.
                

    <center>

Przeglądanie i edycja plików

</center>                

Edycja i przeglądanie zawartości plików w systemie Linux nie różni się w szczególny sposób od innych systemów, takich jak MS-DOS czy MS Windows xx. W tym segmencie Lekcji 3 przedstawione zostanie, na zasadzie ogólnej informacji, najczęściej spotykane oprogramowanie.

                
(3.1) Przeglądanie zawartości pliku
                

Przeglądanie pliku to nic innego jak wyświetlenie jego zawartości na ekranie i operacja taka ma sens oczywiście tylko w przypadku plików tekstowych. W tym celu można użyć takich programów jak more, page, less czy cat. Pierwsze trzy z nich charakteryzują się tym, że treść pliku prezentowana jest strona po stronie. Z tego powodu są one wykorzystawane przez system pomocy systemowej man do wyświetlania odpowiednio sformatowanych dokumentów opisujących działanie i sposób wykorzystania licznych w systemie Linux programów użytkowych (więcej informacji można uzyskać wydając polecenie man man). Ponadto, wspomniane programy są bardzo często używane do tworzenia bardziej złożonych poleceń z wykorzystaniem przetwarzania potokowego, np.:

                

<em class="przyklad">ps -ef | more</em>

                

<em class="przyklad">more passwd | grep zj</em>

                

Warto zwrócić tu uwagę na polecenie cat. Kopiuje ono dane wejściowe na standardowy strumień wyjściowy. Zastosowania polecenia cat mogą być bardziej &quot;twórcze&quot; niż samo wyświetlenie jego zawartości. Może to być scalenie zawartości kilku plików bez uciekania się do pomocy edytora jak na pokazanym poniżej przykładzie:

                

<em class="przyklad">cat plik1 pliki2 plik3 &gt; plik_wynikowy</em>

                

Do przeglądania zawartości plików można też wykorzystać edytory w trybie pracy &quot;tylko do czytania&quot; (ang. read only). Warto zauważyć, że taki tryb pracy edytora jest włączany automatycznie, gdy użytkownik otwiera do edycji plik, do którego nie posiada uprawnień do pisania (prawo w). Przykład takiej operacji, wywołanie edytora vi do edycji pliku passwd, pokazano na rys. 3.4.

                
                        
VIM.GIF
Rys. 3.4 Edytor vi - próba edycji passwd pliku przy braku uprawnień do pisania
                
                

Podobny efekt osiągniemy próbując wykorzytać do tego celu edytor wbudowany do programu Midnight Commander (rys 3.5).

                
                        
MC_VIEW.GIF
Rys. 3.5 Midnight Commander - próba edycji pliku passwd przy braku uprawnień do pisania
                
                

                
(3.2) Edytory
                

Jak już powiedziano, edycja plików w systemie Linux nie wyróżnia się niczym szczególnym w porównaniu z innymi systemami operacyjnymi. Dostępne edytory można podzielić na dwie grupy: do pracy w trybie tekstowym i trybie graficznym. Do pierwszej z nich należą m.in. vi, vim, pico, joe, emacs czy też edytor wbudowany do programu Midnight Commander. Druga grupa to programów np. gvim (wersja edytora vim), Nedit, Xemacs (wersja edytora emacs dla środowiska XWindows) czy narzędzia dostępne w środowiskach systemu aktywnego pulpitu (np. KDE lub GNOME). Oprogramowanie to jest zwykle dostępne bezpłatnie jako freeware lub na warunkach licencji GPL (GNU General Public Lincense).

                

Oprócz edytorów istnieje też grupa procesorów tekstu dostępnych na platformę Linux. Warto tu zwrócić uwagę na narzędzia dostępne w pakiecie Starr Office. Istnieje też oprogramowanie komercyjne, które nie będzie tu omawiane.

                

<em class="uwaga">Autorzy tego wykładu zalecają, aby każdy użytkownik zapoznał się z co najmniej jednym edytorem działającym w trybie tekstowym. Jest to istotne z tego względu, iż stosunkowo często występuje konieczność pracy właśnie w trybie tekstowym a nie graficznym. Przykłady takich sytuacji to np. praca zdalna z wykorzystaniem wolnego połączenia (np. modemowego), zdalne korzystanie z poczty elektroniczej za pomocą protokołu telnet, ssh, itp.
Wszystkich, którzy zamierzają stać się administratorami namawiamy do opanowania edytora vi. Jest to jedyny edytor uznany za w pełni stabilny i w związku z tym bezpieczny w użytkowaniu, co jest szczególnie ważne dla administratora. Ponadto vi jest dostępny w każdym systemie typu Unix. Warto tu zaznaczyć, że mimo istnienia szeregu znacznie wygodniejszych w użytkowaniu narzędzi posłużenie się edytorem vi może okazać się jedyną szansą na poprawienie błędów w plikach konfiguracyjnych, które to błędy uniemożliwiają uruchomienie sesji graficznej. </em>

                

W dalszym ciągu tej lekcji będzie zaprezentowana krótka instrukcja pracy z edytorem vi oraz będą zaprezentowane inne typowe edytory.

                

Specyfika pracy z edytorem vi polega na tym, że edytor ten ma dwa oddzielne tryby pracy:

                
  • tryb wydawania poleceń,
  • tryb wprowadzania tekstu.
                
                        
W trybie wydawania poleceń wprowadzone za pomocą klawiatury znaki są interpretowane jako polecenia (np. przemieszczania kursora, kopiowania i kasowania tekstu, zapisu do pliku, wyszukiwania i/lub zamiany wzorców).
                                 W trybie wprowadzania tekstu wszystkie znaki są traktowane jako treść pliku i nie ma możliwości wydania żadnego polecenia.
                        

                                                  
Użytkownik musi więc w trakcie pracy wielokrotnie przełączać się z jednego trybu w drugi, co obok dużej liczby poleceń stanowi istotną niedogodność - zwłaszcza dla początkujących. W miarę nabywania wprawy w posługiwaniu się edytorem vi niedogodności te przestają przeszkadzać i ustępują miejsca zaletom - np. szerokim możliwościom niedostępnym w innych edytorach.                          
                        
<em class="uwaga">Dla wszystkich, którzy nie byli w stanie zaakceptować &quot;surowej elegancji&quot; edytora vi opracowano jego &quot;ucywilizowaną&quot; wersję - vim. Trzeba jednak pamiętać, że vim ma stosunkowo krótką historię w porównaniu z vi i nie można go obdarzać równie dużym zaufaniem.</em>                        
                        
                        
                        
Po uruchomieniu edytora vi znajduje się on w trybie wydawania poleceń. W celu przejścia do trybu wprowadzania tekstu należy wydać jedno z poleceń:  i, I, a,  A, o, O, a więc wykonać operację rozpoczęcia wstawiania lub dopisywania w bieżącym (lub sąsiednim) wierszu. Jeśli w trakcie wprowadzania tekstu użytkownik zamierza wydać polecenie (np. zapisu do pliku i zakończenia pracy) musi najpiew zakończyć  tryb wprowadzania tesktu przez naciśnięcie klawisza ESC. Powrót do trybu wprowadzania wymaga ponownego wydania jednego z poleceń: i, I, a, A, o, O. W tablicy 3.5 zebrano najbardziej podstawowe polecenia edytora vi.                          
                        
                        
                        
                        
                
                
                         Tablica 3.5 Wybrane polecenia edytora vi</caption>                                                                                                                          
                                                         Zapisywanie tekstu i kończenie pracy z edytorem:
                                         </td>                                 </tr>                                                                          :w</td>                                         zapis do bieżącego pliku</td>                                 </tr>                                                                          :w nazwa</td>                                         nazwa zapis do pliku o podanej nazwie</td>                                 </tr>                                                                          :w! nazwa</td>                                         zapis do pliku o podanej nazwie z zamazaniem poprzedniej zawartości</td>                                 </tr>                                                                          :x,y w nazwa</td>                                         zapis wierszy od numeru x do y do pliku o podanej nazwie</td>                                 </tr>                                                                          :x,y w! nazwa</td>                                         zapis wierszy od numeru x do y do pliku o podanej nazwie z zamazaniem poprzedniej zawartości</td>                                 </tr>                                                                          :wq</td>                                         zapis bieżącego pliku i wyjście z edytora</td>                                 </tr>                                                                          ZZ</td>                                         zapis bieżącego pliku i wyjście z edytora</td>                                 </tr>                                                                          :q </td>                                         wyjście z edytora</td>                                 </tr>                                                                          :q! </td>                                         wyjście z edytora bez zapisywania dokonanych zmian</td>                                 </tr>                                                                                                                          
                                                         Przemieszczanie kursora:
                                         </td>                                 </tr>                                                                          ARROW_L.GIF ARROW_R.GIF ARROW_U.GIF ARROW_D.GIF</td>                                         zgodnie z kierunkiem strzałki</td>                                 </tr>                                                                          $</td>                                         na koniec wiersza</td>                                 </tr>                                                                          0</td>                                         na początek wiersza</td>                                 </tr>                                                                          ^</td>                                         do pierwszego znaku w wierszu, nie będącego spacją ani znakiem tabulacji</td>                                 </tr>                                                                          G</td>                                         do ostatniego wiersza w pliku</td>                                 </tr>                                                                          nG</td>                                         do n-tego wiersza w pliku</td>                                 </tr>                                                                                                                          
                                                         Wprowadzanie tekstu:
                                         </td>                                 </tr>                                                                          i</td>                                         wstawianie tekstu przed kursorem</td>                                 </tr>                                                                          I</td>                                         wstawianie tekstu na początku wiersza</td>                                 </tr>                                                                          a</td>                                         dodawanie tekstu za kursorem</td>                                 </tr>                                                                          A</td>                                         dodawanie tekstu na końcu wiersza</td>                                 </tr>                                                                          o</td>                                         utworzenie pustego wiersza za wierszem bieżącym i przejście do trybu edycji</td>                                 </tr>                                                                          O</td>                                         utworzenie pustego wiersza przed wierszem bieżącym i przejście do trybu edycji</td>                                 </tr>                                                                                                                          
                                                         Usuwanie tekstu:
                                         </td>                                 </tr>                                                                          x</td>                                         znaku znajdującego się pod kursorem</td>                                 </tr>                                                                          X</td>                                         znaku znajdującego się przed kursorem</td>                                 </tr>                                                                          nx</td>                                         n-znaków zaczynając od bieżącej pozycji kursora</td>                                 </tr>                                                                          dkomenda_kursora</td>                                         usuwanie tekstu od bieżącej pozycji kursora do pozycji określonej przez polecenie komenda_kursora</td>                                 </tr>                                                                          dd</td>                                         bieżącego wiersza</td>                                 </tr>                                                                          ndd</td>                                         kolejnych n-wierszy poczynając od bieżącego</td>                                 </tr>                                                                          D</td>                                         od pozycji kursora do końca bieżącego wiersza</td>                                 </tr>                                                                          d0</td>                                         od pozycji kursora do początku bieżącego wiersza</td>                                 </tr>                                                                          dG</td>                                         wszystkich wierszy do końca pliku, poczynając od bieżącego wiersza</td>                                 </tr>                                                                          p</td>                                         wstawienie usuniętego tekstu za kursorem</td>                                 </tr>                                                                          P</td>                                         wstawienie usuniętego tekstu przed kursorem</td>                                 </tr>                                                                          xp</td>                                         zamiana pozycji dwóch sąsiednich znaków</td>                                 </tr>                                                                                                                          
                                                         Wycofywanie zmian:
                                         </td>                                 </tr>                                                                          u</td>                                         powrót do stanu sprzed ostatniego polecenia</td>                                 </tr>                                                                          U</td>                                         wczytanie bieżącego wiersza z pliku do bufora</td>                                 </tr>                                                                          :q!</td>                                         wyjście z edytora bez zapisywania dokonanych zmian</td>                                 </tr>                                                                                                                          
                                                         Modyfikowanie tekstu:
                                         </td>                                 </tr>                                                                          r znak</td>                                         zamiana bieżącego znaku</td>                                 </tr>                                                                          s znaki ESC</td>                                         zamiana bieżącego znaku na ciąg znaków</td>                                 </tr>                                                                          cwtekst ESC</td>                                         zamiana bieżącego wyrazu na ciąg znaków</td>                                 </tr>                                                                                                                          
                                                         Przewijanie:
                                         </td>                                 </tr>                                                                          CTRL-U </td>                                         do tyłu o pół ekranu</td>                                 </tr>                                                                          CTRL-D</td>                                         do przodu o pół ekranu</td>                                 </tr>                                                                          CTRL-B</td>                                         do tyłu o cały ekran</td>                                 </tr>                                                                          CTRL-F</td>                                         do przodu o cały ekran</td>                                 </tr>                                                                                                                          
                                                         Kopiowanie i wstawianie:
                                         </td>                                 </tr>                                                                          yy</td>                                         kopiowanie do bufora bieżącego wiersza</td>                                 </tr>                                                                          nyy</td>                                         kopiowanie do bufora n-kolejnych wierszy</td>                                 </tr>                                                                          p</td>                                         wstawianie tekstu z bufora za kursorem</td>                                 </tr>                                                                          P</td>                                         wstawianie tekstu z bufora przed kursorem</td>                                 </tr>                                                                          .</td>                                         powtarzanie ostatnio wydanego polecenia</td>                                 </tr>                                                                                                                          
                                                         Wyszukiwanie wzorców:
                                         </td>                                 </tr>                                                                          /wzorzec</td>                                         poszukiwanie wzorca w przód od pozycji kursora</td>                                 </tr>                                                                          ?wzorzec</td>                                         poszukiwanie wzorca w tył od pozycji kursora</td>                                 </tr>                                                                          n</td>                                         kontynuacja poszukiwania w tym samym kierunku</td>                                 </tr>                                                                          N</td>                                         kontynuacja poszukiwania w przeciwnym kierunku</td>                                 </tr>                                                                                                                          
                                                         Wyszukiwanie i zamiana wzorców
                                         </td>                                 </tr>                                                                          : zakres_wierszy s/wzorzec_do_znalezienia/nowy_tekst/</td>                                 </tr>                                                                          : zakres_wierszy s/wzorzec_do_znalezienia/nowy_tekst/g</td>                                 </tr>                                                                          : zakres_wierszy s/wzorzec_do_znalezienia/nowy_tekst/cg</td>                                 </tr>                                                                          gdzie zakres_wierszy</td>                                 </tr>                                                                          %</td>                                         oznacza wszytkie wiersze w pliku</td>                                 </tr>                                                                          nr_w1,nr_w2</td>                                         oznacza wszystkie wiersze o numerach ze wskazanego zakresu </td>                                 </tr>                         </table>                
                

Na rysunkach 3.6 - 3.10 pokazano efekty wykonywania niektórych poleceń. I tak na Rys.3.6 widać rezultat wykonania polecenia <em class="kod">:set nu</em>, które włącza opcję numerowania wierszy tekstu. Konstrukcja :set opcja umożliwia włączanie szeregu innych opcji zmieniających standardowe zachowanie edytora.

                
                        
VI1.GIF
Rys. 3.6 Edytor vi - efekt wykonania polecenia :set nu
                
                

Na rysunkach 3.7 i 3.8 pokazano działanie polecenia zamiany wzorców <em class="kod">:%s/count/stan/.</em> Zgodnie z informacjami podanymi w tablicy 3.5 zamiany dokonano w całym tekście (na co wskazuje znak % ). W rezultacie wykonano 6 zamian słowa count na stan. Dociekliwi zauważą zapewne, że w wierszu numer 23 słowo count występowało dwukrotnie a zamianie poddano tylko pierwsze wystąpienie. Jest to poprawne zachowanie edytora. Jeśli użytkownik życzy sobie by zamianie podlegały wszystkie wystąpienia wzorca powinnien dodać do polecenia modyfikator g, który powoduje &quot;globalne&quot; wykonywanie substytucji. Polecenie takie - <em class="kod">:%s/count/stan/g </em>- oraz efekty jego działania pokazano na rysunkach 3.9 i 3.10.

                
                        
VI2.GIF
Rys. 3.7 Edytor vi - stan przed wydaniem polecenia :%s/count/stan/
                
                


                

                
                        
VI3.GIF
Rys. 3.8 Edytor vi - stan po wykonaniu polecenia :%s/count/stan/.
                
                


                

                
                        
VI4.GIF
Rys. 3.9 Edytor vi - stan przed wydaniem polecenia :%s/count/stan/g
                
                


                

                
                        
VI5.GIF
Rys. 3.10 Edytor vi - stan po wykonaniu polecenia :%s/count/stan/g
                
                

Użytkownik może dostroić zachowanie edytora vi poprzez włączenie odpowiednich opcji, takich jak np. nu. Oczywiście wydawanie tych poleceń przy każdym uruchomieniu edytora byłoby pozbawione sensu. Opcje ustawia się w pliku konfiguracyjnym (ang. dot file) o nazwie .exrc. Jest to tzw. plik ukryty (jego nazwa zaczyna się od kropki) i musi się znajdować w katalogu domowym użytkownika. Jest to typowy dla systemu Unix  sposób konfigurowania programów użytkowych. W momencie uruchamiania edytora plik .exrc jest odczytywany a zawarte w nim polecenia automatycznie wykonywane.  Na rysunku 3.11 pokazano przykładową zawartość takiego pliku. Zachęcamy do praktycznego sprawdzenia jakie są efekty włączenia tych opcji. Jak zawsze więcej informacji o edytorze vi można uzyskać za pomocą polecenia man vi.

                
                        
EXRC.GIF
Rys. 3.11 Przykładową zawartość pliku .exrc
                
                

<em class="uwaga">Trzeba pamiętać, że w niektórych awaryjnych sytuacjach nie pomoże nam nawet edytor vi. Wynika to z faktu, że program vi jest edytorem pełnoekranowym i do jego prawidłowej pracy wymagana jest poprawna definicja terminala. W takiej sytuacji należy się uciec się do pomocy edytora ed, który jest edytorem wierszowym i działa w kaźdych warunkach (więcej informacji dostarczy polecenie man ed).</em>

                

                         Na rysunku 3.12 można znaleźć przykład krótkiej sesji z edytorem joe. Edytor ten reprezentuje koncepcję typową dla systemu MS-DOS. Brak jest oddzielnych trybów pracy a polecenia wydaje się za pomocą specjalnych sekwencji zaczynających się od znaku Ctrl. Obsługa programu jest w zasadzie oczywista i nie będzie tu omawiana.

                
                        
JOE.GIF
Rys. 3.12 Przykład pracy z edytor Joe
                
                

Na rysunku 3.13 pokazano edytor Pico(tm), który jest dostarczany wraz z programem pocztowym Pine(tm). Edytor należy do tej samej kategorii co Joe i podobnie jak w poprzednim przypadku obsługa programu jest oczywista i nie będzie omawiana.

                
                        
PICO.GIF
Rys. 3.13 Przykład pracy z edytor Pico(tm)
                
                

Rysunek 3.14 pokazuje przykład pracy z edytorem wbudowanym do programu Midnight Commander
                

                
                        
MC_EDIT.GIF
Rys. 3.14 Przykład pracy z edytorem wbudowanym do programu Midnight Commander
                
                


                         Przejdziemy teraz do prezentacji edytorów działających w trybie graficznym: gvim, Nedit i Xemacs. Piewszy z nich - gvim to edytor vim wyposażony w graficzny interfejs użytkownika . Odkrywanie jego wad i zalet pozostawiamy zainteresowanym ;-)
                         Autorzy rekomendują natomiast wszystkim zapoznanie się z dwoma bardzo wygodnymi programami Nedit i Xemacs (Rys. 3.15 i 3.16). Programy te szczególnie można polecić wszystkim programistom, gdyż posiadają one szereg cech ułatwiających pracę (np. wyróżnianie słów kluczowych). Na rysunkach 3.15 i 3.16 pokazano przykład edycji kodu VHDL prostego licznika choć oczywiście programy te rozpoznają składnię wielu innych języków programowania. Program Nedit (www.nedit.org) jest stosunkowo prostym edytorem choć wyposażonym w praktycznie wszystkie potrzebne programiście cechy. Natomiast XEmacs czyli &quot;okienkowa&quot; wersja edytora Emacs to chyba najwszechstronniejszy edytor jaki kiedy kolwiek powstał. Należy on do pakietu GNU - narzędzi opracowanych przez Free Software Foundation (www.gnu.org). Jego możliwości wykraczają daleko poza cechy zwykłego edytora. Po właściwym skonfigurowaniu może on np. pełnić funkcję programu pocztowego.

                
                                          
                
                        
NEDIT.GIF
Rys. 3.15 Przykład zastosowania edytora Nedit
                
                


                

                
                        
XEMACS.GIF
Rys. 3.16 Przykład zastosowania edytora XEmacs
                
    <center>

Archiwizacja i kompresja plików

</center>                

Typowe rozwiązania problemu archiwizacji i kompresji plików w systemach typu Unix różni się dość znacznie od podobnych czynności wykonywanych w systemach DOS czy Windows. Podstawowa różnica polega na tym, że są one wykonywane jako oddzielne operacje realizowane przez rożne polecenia. Stosowane też są inne formaty i algorytmy.

                

W ostatnich latach, wraz z rozpowszechnianiem się systemu Linux, pojawiły się programy usługowe ułatwiające wykonywanie tych czynności. Przeniesiono też na platformę Unix programy typowe dla systemów DOS/Windows.

                

W lekcji tej przedstawione zostaną standardowe narzędzia do archiwizacji i kompresji plików dostępne we wszystkich systemach typu Unix oraz oprogramowanie dostępne w systemie Linux.

                

                

(4.1) Kompresja
                 </p>                

Do kompresji plików w systemach typu Unix stosowany jest standardowo program compress. Dekompresję plików można wykonać przy pomocy programów uncompress. Ponadto, dostępny jest program pomocniczy zcat umożliwiający wyświetlenie zawartości plików bez konieczności ich uprzedniego dekompresowania.

                

Składnia poleceń compress, uncompress i zcat jest następująca:

                
compress [-c] [-f] [-v] [plik...]
                
uncompress [-c] [-f] [-v] [plik...]
                
zcat [plik...]
                 gdzie:                
-c - wynik działania przekazywany na stdout; plik oryginalny nie jest usuwany,
-f - tryb forsowny,
-v - powoduje wypisanie dodatkowych komunikatów,

plik

- nazwa pliku do (de)kompresowania.
                

Program compress dokonuje zmniejszenia objętości pliku stosując algorytm LZW (algorytm ten został opatentowany). W wyniku jego działania tworzony jest nowy plik (o ile nie zastosowano opcji -c) o nazwie powstałej poprzez dodanie do nazwy oryginału końcówki .Z. Plik oryginalny jest usuwany.
                         Jeśli w linii wywołania nie podano argumentu plik to dane są czytane ze standardowego wejścia.

                

Program uncompress odtwarza oryginalną zawartość pliku skompresowanego uprzednio przy pomocy programu compress. W wyniku działania tworzony jest nowy plik o nazwie powstałej przez usunięcie z nazwy pliku wejściowego końcówki .Z. Plik wejściowy jest usuwany. Jeśli zastosowano opcję -c to wynik działania uncompress przekazywany jest standardowe wyjście.
                         Jeśli w linii wywołania nie podano argumentu plik to dane są czytane ze standardowego wejścia a wynik przekazywany jest na standardowe wyjście.

                

Polecenie zcat działa tak jak  uncompress z opcją -c.

                

<em class="przyklad">Przykłady:</em>

                

<em class="przyklad">compress *.c</em>

                

<em class="przyklad">uncompress *.c.Z</em>

                


                         W systemie Linux standardowymi narzędziami do kompresji plików są programy z pakietu GNU: gzip, gunzip, zcat , zmore, zgrep, zdiff, zcmp.

                

<em class="uwaga">Oprogramowanie to nie jest dostarczane w dystrybucjach systemów komercyjnych takich jak np. SUN Solaris. Jednak większość administratorów tych systemów instaluje je jako oprogramowanie opcjonalne, tak więc praktycznie każda instalacja systemu typu Unix jest wyposażona w narzędzia do kompresji w wersji GNU.</em>

                

Składnia poleceń jest następująca (pokazano tylko ważniejsze opcje):

                
gzip [-c] [-d] [-f] [-r] [-v] [plik...]
                
gunzip [-c] [-f] [-v] [plik...]
                
zcat [-f] [plik...]
                

gdzie:

                
-c - wynik działania przekazywany na stdout; plik oryginalny nie jest usuwany,
-d - włącza tryb dekompresji,
-f - tryb forsowny,
-r - powoduje rekurencyjne przeglądanie drzewa katalogów i (de)kompresowanie znajdujących się tam plików (każdego indywidualnie),
-v - powoduje wypisanie dodatkowych komunikatów,

plik

- nazwa pliku do (de)kompresowania.
                

Program gzip dokonuje zmniejszenia objętości pliku i zastępuje go przez nowy plik (o ile nie zastosowano opcji -c) o nazwie powstałej poprzez dodanie do nazwy oryginału końcówki .gz (ze względu na zastrzeżenia patentowe dotyczące algorytmu LZW stosowany jest tu inny algorytm o nazwie LZ77).
                                                                           Jeśli w linii wywołania nie podano argumentu plik to dane są czytane ze standardowego wejścia.

                

Program gunzip odtwarza oryginalną zawartość pliku skompresowanego uprzednio przy pomocy programu gzip lub programu compress. W wyniku działania tworzony jest nowy plik o nazwie powstałej przez usunięcie z nazwy pliku wejściowego końcówki .gz (lub .Z). Plik wejściowy jest usuwany. Jeśli zastosowano opcję -c to wynik działania gunzip przekazywany jest standardowe wyjście.
                         Zamiast polecenia gunzip można zastosować polecenie gzip z opcją -d.
                         Jeśli w linii wywołania nie podano argumentu plik to dane są czytane ze standardowego wejścia a wynik przekazywany jest na standardowe wyjście.
                

                

Polecenie zcat (w wersji GNU) działa tak jak gunzip z opcją -c.

                

<em class="przyklad">Przykłady:</em>

                

<em class="przyklad">gzip *.c</em>

                

<em class="przyklad">gunzip *.c.gz</em>

                

<em class="przyklad">gzip -c file1  &gt; foo.gz</em>

                

<em class="przyklad">cat file1 file2 | gzip &gt; foo.gz</em>

                

<em class="przyklad">gzip -cd file.gz | wc -c</em>

                


                         Dodatkowo dostępne są programy pomocnicze zmore, zgrep, zdiff, zcmp umożliwiające wyświetlenie zawartości, wyszukiwanie wzorców lub też porównywanie plików bez konieczności ich uprzedniego dekompresowania Mają one następującą składnię:

                
zmore [ plik...  ]
                
zgrep [ opcje_polecenia_grep ] wzorzec [plik...]
                
zcmp [ opcje_polecenia_cmp ] plik1 [ plik2 ]
                
zdiff [ opcje_polecenia_diff ] plik1 [ plik2 ]
                

Programy te stanowią interfejs pozwalający stosować standardowe polecenia more, grep, cmp i diff dla plików skompresowanych za pomocą programów gzip i compress.

                

                  

(4.2) Archiwizacja
                 </p>                

Typowym narzędziem przeznaczonym do archiwizacji plików dostępnym we wszystkich systemach typu Unix jest program tar.  

                

Program tar tworzy archiwum w postaci strumienia danych, który to strumień zawiera wszystkie pliki wskazane w wierszu wywołania. Archiwizowana jest nie tylko zawartość plików, ale także ich atrybuty takie jak prawa dostępu, właściciel, grupa, data modyfikacji, itp. Jeśli w wywołaniu podano nazwę katalogu to archiwizacji podlegają wszystkie pliki znajdujące się w poddrzewie systemu plików, którego korzeniem jest wskazany katalog. W tym przypadku nazwy plików zawierają informację o swoim położeniu w drzewie. Podczas ekstrakcji plików z archiwum odtwarzane są oryginalne nazwy plików (np. tworzone są nowe katalogi o ile jest wymagane), zawartość plików oraz ich atrybuty.
                         Tworząc archiwum przy pomocy polecenia tar należy pamiętać o konsekwencjach sposobu specyfikowania nazw plików przeznaczonych do archiwizacji. Zazwyczaj zaleca się, aby pliki specyfikować za pomocą nazw względnych a nie nazw bezwzględnych (tzn. zaczynających się od znaku /). Zalecenie to wynika właśnie stąd, że podczas ekstrakcji odtwarzane są oryginalne nazwy plików. Jeśli nazwy te odwołują się do korzenia drzewa katalogów to może się okazać konieczne utworzenie plików/katalogów w katalogach, do których dany użytkownik nie posiada prawa do zapisu. Oczywiście w takiej sytuacji ekstrakcja plików będzie niemożliwa. Jeśli jednak zastosujemy nazwy względne to ekstrahowane pliki będą umieszczane względem bieżącego katalogu.

                

Program tar umożliwia wykonywanie archiwów w postaci plików dyskowych lub zapisywanych na innych nośnikach takich jak np. taśmy (ang. streamer) czy dyskietki.

                

Polecenie tar nie dokonuje kompresji archiwizowanych plików. O ile archiwum nie jest tworzone na taśmie, kompresja archiwum wykonywana jest w odrębnym kroku przy pomocy programów compress czy gzip w taki sam sposób jak każdego inne pliku. W przypadku wykonywania archiwum na taśmie należy dokonać kompresji danych przed ich zapisaniem. Przykłady takich operacji podamy w dalszej części tej lekcji.

                

Składnia wywołania programu tar jest następująca (pokazano tylko najważniejsze opcje):

                
tar [-] [c|t|x] [v] [b N] [B] [f nazwa_archiwum] [plik | katalog]...
                

gdzie:

                
c - tworzy nowe archiwum,
t - wypisuje zawartość archiwum,
x - ekstrahuje plik(i),
v - powoduje wypisanie dodatkowych komunikatów,
b - definiuje rozmiar bloku danych jako N*512 bajtów (domyślenie N=20),
B - wymusza odczytanie całego bloku danych; opcja stosowana przy współpracy z łączami,
f - za tą opcją musi znaleźć się nazwa archiwum lub znak - reprezentujący stdin lub stdout,

plik | katalog

- pliki do zarchiwizowania/ekstrakcji.
                

W wywołaniu programu tar można pominąć znak &quot;-&quot; stawiany przed grupą znaków reprezentujących opcje.

                

Opcje należy zestawiać w grupy w zależności od wykonywanej czynności. Przy czym pierwszą opcją musi być jedna z c,t,x. I tak, w przypadku tworzenia archiwum w postaci pliku dyskowego należy zastosować zestaw opcji -cf (dodatkowa opcja v powoduje wyłącznie zwiększenie ilości informacji wypisywanej na term

5 komentarzy

Mistrzunio 2010-02-21 16:16

Bardzo przejrzysty jest:))

RJM 2008-02-05 18:12

Brawo !

Każdy początkujący user Lenia powinien to przeczytać.
Dużo obrazków = dobrze się czyta :D

Kawał dobrej roboty.

Adamo 2006-07-30 20:13

a to <html> <body style="FONT-FAMILY: Verdana; FONT-SIZE: 10pt;"> na początku to potrzebne ? :>

ŁF 2003-10-03 23:21

heh, dzięki :-D

Adam Boduch 2003-08-04 14:46

Super, wlasnie tak powinny wygladac artykuly :)