Linux posiada system plików - co oznacza "struktura katalogów i plików" - bardzo podobny do DOS-owego. Pliki posiadają nazwy, które podlegają specjalnym zasadom, są zapisywane w katalogach, niektóre są wykonywalne, a wśród tych większość ma różne opcje. Możesz też używać masek ('*', '?'), przekierowań strumieni oraz potoków. Jest tylko trochę mniejszych różnic.
ls (odpowiednik
DOS-owego DIR) otrzymasz listę plików w bieżącym katalogu, ale
jeśli napiszesz LS i wciśniesz <<ENTER>> to otrzymasz błąd mówiący,
że nie ma takiego polecenia.
ls.
ls -F
- na zielono jeśli masz kolorowy monitor i wydasz polecenie
ls --color
Pod DOS-em pliki z rozszerzeniem .BAK to kopie zapasowe; Pod
Linux-em takie pliki kończą sie na ~
Możesz teraz skoczyć do sekcji Tłumaczenie poleceń z DOS-a na Linux-a, ale na twoim miejscu czytałbym dalej.
Systemy typu Unix mają taki typ pliku, który nie istnieje pod
DOS-em - symboliczne dołączenie. Można to uważać za wskaźnik na
plik lub katalog i może być używany zamiast tego pliku czy
katalogu, na który wskazuje. Coś podobnego do skrótów w Win'95.
Przykładami dołączeń symbolicznych mogą być:
/usr/X11, który wskazuje na /usr/X11R6;
/dev/modem, który wskazuje na /dev/cua0 lub
/dev/cua1.
Aby utworzyć symboliczne dołączenie napisz:
ln -s <plik_lub_katalog> <nazwa_dołączenia>
Na przykład:
$ ln -s /usr/doc/g77/DOC g77podrecznik.txt
Teraz możesz wykonywać operacje na g77podrecznik.txt zamiast na
/usr/doc/g77/DOC.
Każdy plik i katalog w Linux-ie ma swoje prawa dostępu, zwane przez użytkowników DOS-a atrybutami. Postaram się przybliżyć to pojęcie i wyjaśnić co oznacza magiczne 755.
Jak wydasz polecenie ls -l to wyświetli się coś na kształt:
-rw-r--r-- 1 root root 32251 Feb 15 14:32 DOS2Linux -rw-r--r-- 1 root root 38338 Feb 20 13:15 DOS2Linux.pl.sgml -rw-r--r-- 1 root root 18144 Feb 19 18:34 Locales-HOWTO.sgml -rw-r--r-- 1 root root 1398 Feb 19 18:30 howto.dat -rw-r--r-- 1 root root 317 Feb 14 14:24 next.gif -rw-r--r-- 1 root root 37 Feb 19 20:03 plik_log -rw-r--r-- 1 root root 317 Feb 14 14:24 prev.gif -rw-r--r-- 1 root root 610 Feb 19 12:01 slowniczek -rw-r--r-- 1 root root 5655 Feb 16 21:54 slowniczek.uwagi -rw-r--r-- 1 root root 2601 Feb 18 22:29 tlumaczenie.howto -rw-r--r-- 1 root root 316 Feb 14 14:24 toc.gif -rw-r--r-- 1 root root 723 Feb 20 12:40 todo -rw-r--r-- 1 root root 1307 Feb 19 19:36 zasady
Pierwsza kolumna z lewej to właśnie wspomniane prawa dostępu, 3. i 4. to właściciel i grupa do jakiej dany plik należy. Ogólnie wygląda to tak:
- rwx rwx rwx
r - read (możliwość czytania)
w - write (możliwość zapisu)
x - execute (możliwość wykonywania, bądź dla katalogów możliwość
przeszukiwania i ustawienia go jako bieżący cd)
Oczywiście w rzeczywostości nie ma tam spacji, ale je robię dla
czytelności. W miejscu pierwszej kreski może znajdować się jedna z
liter: d, l, b, c - są to tylko najpopularniejsze. I tak oznaczają
one odpowiednio: katalog, symboliczne dołączenie, urządzenie
blokowe, urządzenie znakowe.
Dalej: od lewej: pierwsza trójka liter to prawa dla właściciela
pliku, druga trójka - dla grupy do jakiej należy plik, trzecia -
dla pozostałych użytkowników. W pierwszej i drugiej trójce mogą
się pojawić litery s lub S zamiast x - oznacza to, żeby wykonać
plik z takimi prawami jakie ma właściciel pliku albo grupa, a nie
ten kto go uruchamia. Na przykład plik /usr/bin/passwd ma
ustawione pierwsze x na s, żeby mógł dokonać zapisu do pliku
/etc/passwd, do którego może pisać tylko root, a nie zwykły
użytkownik, który uruchamia ten program.
Polecenie chmod pozwala zmieniać te prawa dostępu - jeśli
jesteś właścicielem pliku.
Podstawmy sobie następujące wartośći:
- rwx rwx rwx
421 421 421
4 2 1 - te wartości są dla s, S i t
(na temat 't' zobacz "man chmod")
Żeby ustawić jakieś prawa dostępu należy dodać do siebie te liczby, które stoją przy prawach, które chcemy ustawić, ale dla każdej trójki osobno. Trochę przykładów dla lepszego zrozumienia:
- r-x --- --- nazwa_pliku
4 1
To będzie 4+0+1, 0+0+0, 0+0+0 czyli 500. chmod 500 nazwa_pliku
zmieni prawa dostępu na odczyt i wykonywanie dla właściciela i
zabierze wszystkie prawa dla grupy i innych użytkowników.
- rwx r-x r-x nazwa_pliku
421 4-1 4-1
To będzie 4+2+1, 4+0+1, 4+0+1 czyli 755 - to jest chyba najczęstsze ustawienie.
- rws r-x r-x
421 4 1 4 1
4
To będzie 4+0+0 - najważniejsze są wartości s, S, t chyba, że ich nie ma - 4+2+1 4+0+1, 4+0+1 czyli 4755
Teraz łatwiejszy sposób na zmianę praw dostępu. Polecenie chmod może też przyjmować takie parametry:
chmod ugoa+-=rwx <plik>
I tak: u - user (właściciel pliku), g - group (grupa do jakiej plik należy), o - others (pozostała część użytkowników). + ustawia podane prawa, a - zabiera. = czyni podane prawa jedynymi prawami jakie posiada dany plik.
Przykłady:
chmod u+x <plik> - nadaje właścicielowi pliku prawo do
wykonywania go.
chmod ug+rx <plik> - nadaje właścicielowi i grupie, do której
należy plik prawa do odczytu i wykonywania
To powinno wyjaśnić wiele spraw związanych z prawami dostępu. Więcej szczegółów znajdziesz w podręczniku systemowym "man".
DOS Linux
COPY cp
DEL rm
REN mv
TYPE cat
MORE more, less - można też używać jako polecenie, nie tylko
jako filtr (ten drugi jest lepszy, ma więcej
możliwości)
Przekierowywanie strumieni i potoki wygladają tak samo.
Maski: '*', '?' oraz [znaki]
[znaki] - oznacza pokolei każdy, ale zawsze jeden, z
wymienionych w środku znaków, np:
ls *[abc] - wyświetl nazwy plików kończących się na 'a' lub 'b' lub 'c'
ls *[a-g] - wyświetli nazwy plików kończących się na jedną z
liter od a do g
nul /dev/null
prn,lst /dev/lp0, lpr
PRZYKŁADY
DOS Linux
C:\GUIDO>copy joe.txt joe.doc $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total $ cat * > total
C:\GUIDO>copy fractals.doc prn $ cat fractals.doc | lpr
C:\GUIDO>del temp $ rm temp
C:\GUIDO>del *.bak $ rm *~
C:\GUIDO>ren paper.txt paper.asc $ mv paper.txt paper.asc
C:\GUIDO>type letter.txt $ more letter.txt
C:\GUIDO>type letter.txt $ less letter.txt
C:\GUIDO>type letter.txt > nul $ cat letter.txt >/dev/null
n/d $ more *.txt *.asc
n/d $ cat section*.txt
n/d - niedostępne
Uwagi:echo
$shellcp -i oraz mv -i, aby zostać ostrzeżonym,
kiedy plik ma zostać zmazany.
Aby uruchomić program podaj jego nazwę i wciśnij <<ENTER>>. Jeśli katalog (sekcja Katalogi), w którym znajduje się dany program, jest w zmiennej PATH (sekcja Inicjacja systemu), program się uruchomi. Wyjątek: W przeciwieństwie do DOS-a, pod Linux-em jeśli program znajduje się w katalogu bieżącym nie uruchomi się, o ile katalog bieżący nie jest w zmiennej PATH. Rozwiązanie: wpisz ./<prog>.
Oto jak wygląda typowy wiersz poleceń: $ polecenie -o1 -o2 ... -on par1 par2 ... parn <wejście >wyjście gdzie o1,2,...,n to opcje polecenia, a par1,2,...,n to parametry. Możliwe jest uruchomienie kilku poleceń w jednym wierszu poleceń: $ polecenie1; polecenie2; ...; polecenien
To by było wszystko na temat uruchamiania programów, gdyby nie jedna z najważniejszych zalet Unix-ów a tym samym i Linux-a czyli wielozadaniowość. Słowo to oznacza, że systemy operacyjne typu Unix mogą wykonywać kilka programów (od teraz procesów) na raz. Można uruchomić procesy w tle oraz w pierwszym planie. Można także działać na kilku sesjach na raz - to tak jakbyś pracował na kilku komputerach na raz !
- Na konsoli (czyli na komputerze, na którym jest zainstalowany
Linux) dostępnych jest standardowo 6-7 wirtualnych ekranów
(zwanych wirtualnymi konsolami); aby się pomiędzy nimi przełączać
użyj klawiszy ALT+F1..6-7, albo ALT+strzałka
- Aby uruchomić nową sesję bez opuszczania bieżącej napisz
su - <identyfikator>
Jest to pożyteczne kiedy na przykład jesteś zalogowany jako
zwykły użytkownik, a chcesz zamontować dysk (sekcja
Dyskietki) - tylko root może to zrobić
- Aby zakończyć sesję wpisz exit. Jeśli są jakieś zawieszone
zadania (zobacz dalej) zostaniesz ostrzeżony
- Aby odpalić proces w pierwszym planie napisz:
$ program [-opcje] [parametry] [<wejście] [>wyjście]
- Aby odpalić proces w tle napisz:
$ program [-opcje] [parametry] [<wejście] [>wyjście] &
- Aby zobaczyć ile jest procesów napisz:
ps
Polecenie to pokaże listę procesów aktualnie działających. Każdy
z nich ma swój niepowtarzalny numer PID (Process IDentifier)
- Aby zakończyć/zabić proces napisz
$ kill <PID>
Możesz zabić proces jeśli np. nie wiesz jak go normalnie
zakończyć. Czasami proces się stawia i nie chce dać się zabić (no ja
też bym się stawiał ;) ), ale i tak jest na niego sposób:
$ kill -9 <PID>
W dodatku powłoka (odpowiednik COMMAND.COM-u; większość używa
bash-a) pozwala na zatrzymanie lub czasowe zawieszenie procesu,
wysłanie procesu w tło, powrót procesu do pierwszego planu. W
tym kontekście procesy nazywają się "jobs" (czyli zadania).
- Aby zobaczyć ile jest zadań napisz
$ jobs
zadania są identyfikowane poprzez numer jaki nada im powłoka a
nie poprzez PID
- Aby zatrzymać proces uruchomiony w pierwszym planie
wciśnij CTRL+C lub CTRL+D - nie zawsze zadziała
- Aby zawiesić proces uruchomiony w pierwszym planie wciśnij
CTRL+Z
- Aby wysłać zawieszony proces w tło napisz
$ bg <nr_zadania>
- Aby przywrócić proces do pierwszego planu napisz
$ fg <nr_zadania>
- I jeszcze raz, aby zabić zadanie napisz:
$ kill %<nr_zadania>
Używając tych poleceń możesz jednocześnie formatować dysk, archiwizować jakieś pliki, kompresować jakieś pliki, kompilować program, albo kilka, rozpakowywać jakieś archiwum i jeszcze na dodatek mieć wiersz poleceń do swojej dyspozycji HA !! Spróbuj zrobić to pod DOS-em albo nawet Windowsami, a zobaczysz różnicę między Unixami a domowymi systemami operacyjnymi.
Aby uruchomić jakiś program na odległym komputerze, którego adres
to daleko.wielki.pl, napisz:
telnet daleko.wielki.pl
Po zalogowaniu się uruchom swoje ulubione programy. Oczywiście nie muszę mówić, że trzeba mieć konto na odległym komputerze.
Jeśli masz X11 możesz nawet uruchamiać aplikacje pod XWindows na
tamtym komputerze i wyswietlać je na swoim ekranie. Niech
daleko.wielki.pl będzie odłegłym komputerem obsługującym
XWindows, a tutaj.linux.pl twoim komputerem. Aby uruchomić z
tutaj.linux.pl program pod XWindows tak, aby uruchomił się on na
daleko.wielki.pl
xterm lub jakiś inny emulator
terminala i napisz:
xhost +wielki.daleko.pl telnet wielki.daleko.pl
DISPLAY=tutaj.linux.pl:0.0 <nazwa_programu> &zamiast
DISPLAY... możesz napisać setenv DISPLAY
tutaj.linux.pl:0.0. To zależy od powłoki na komputerze odległym.Et voila! Teraz program będzie działał na komputerze odległym, a wyniki jego działania będą wyświetlane na twoim ekranie. Nie próbuj tego robić przez łącze PPP.