% Linux Installation and Getting Started    -*- TeX -*-
% basic.tex
% Copyright (c) 1992, 1993 by Matt Welsh, Larry Greenfield and Karl Fogel
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\section{Prvi koraki v Linuxu}
%\markboth{Učbenik Linuxa}{Prvi koraki v Linuxu}

Preden začnemo, je pomembno vedeti, da Linux razlikuje med velikimi in
malimi črkami pri vseh imenih datotek in ukazov (za razliko od
operacijskih sistemov, kot je MS-DOS).  Na primer, ukaz \texttt{make}
je zelo različen od \texttt{Make} ali \texttt{MAKE}.  Isto velja za
imena datotek in imenikov.

\subsection{Premikanje naokrog}
Zdaj ko se znate prijaviti in veste, kako se sklicujete na datoteke z
uporabo imen poti, si oglejmo še, kako lahko spremenite svoj trenutni
delovni imenik.

\index{imenik!struktura!premikanje naokrog s cd@premikanje naokrog s \texttt{cd}}
\index{cd@\texttt{cd}|(}
Ukaz za premikanje po strukturi imenikov se imenuje \texttt{cd} (iz
angleškega izraza >>change directory<<, sprememba imenika).  Mnogo
pogosto uporabljanih ukazov Linuxa je dolgih dve ali tri črke.
Uporaba ukaza \texttt{cd} je
\begin{tscreen}
cd \cparam{imenik}
\end{tscreen}
kjer je \textsl{imenik} ime imenika, za katerega želite, da postane
vaš trenutni delovni imenik.

Kot je bilo že omenjeno, ob prijavi začnete v svojem domačem imeniku.
Če bi Larry želel preklopiti v podimenik \texttt{papers}, bi uporabil
ukaz
\begin{tscreen}
/home/larry\$ \emph{cd papers} \\
/home/larry/papers\$ 
\end{tscreen}
Kot lahko vidite, se Larryjev pozornik spreminja, da odraža njegov
trenutni delovni imenik (tako, da ve, kje je).  Zdaj, ko je v imeniku
\texttt{papers}, lahko pogleda svoj zaključni spis iz zgodovine
z ukazom
\begin{tscreen}
/home/larry/papers\$ \emph{more history-final}
\end{tscreen}

\index{imenik!starševski!.. za sklicevanje na@\texttt{..} za sklicevanje na}
\index{imenik!. za sklicevanje na@\texttt{.} za sklicevanje na}
\index{starševski imenik!.. za sklicevanje na@\texttt{..} za sklicevanje na}
Zdaj je Larry obtičal v podimeniku \texttt{papers}.  Za premik nazaj
v naslednji višji (ali starševski) imenik, uporabite ukaz
\begin{tscreen}
/home/larry/papers\$ \emph{cd \ ..} \\
/home/larry\$
\end{tscreen}
(Pazite na presledek med >>\texttt{cd}<< in >>\texttt{..}<<.)  Vsak
imenik ima vnos, imenovan >>\texttt{..}<<, ki se nanaša na njegov
starševski imenik.  Podobno, vsak imenik ima vnos, imenovan
>>\texttt{.}<<, ki se nanaša na njega.  Torej nas ukaz
\begin{tscreen}
/home/larry/papers\$ \emph{cd \ .}
\end{tscreen}
pusti v istem imeniku.

Z ukazom \texttt{cd} lahko uporabljate tudi absolutna imena poti.
Za \texttt{cd} v Karlov domači imenik lahko uporabimo ukaz
\begin{tscreen}
/home/larry/papers\$ \emph{cd /home/karl} \\
/home/karl\$
\end{tscreen}

Tudi uporaba \texttt{cd} brez argumentov nas bo vrnila v naš lastni
domači imenik.
\begin{tscreen}
/home/karl\$ \emph{cd} \\
/home/larry\$
\end{tscreen}
\index{cd@\texttt{cd}|)}

\subsection{Ogled vsebine imenikov}
\label{sec-ls}
\index{imenik!izpis vsebine|(}
\index{ls@\texttt{ls}|(}
\index{izpis vsebine imenika|(}
\index{datoteke!izpis|(}
Zdaj ko veste, kako se premikati po imenikih, si morda mislite, >>Pa
kaj?<<.  Premikanje po imenikih je samo po sebi precej neuporabno,
zato uvedimo nov ukaz, \texttt{ls}. Ukaz \texttt{ls} izpiše seznam
datotek in imenikov, privzeto iz vašega trenutnega imenika.  Na
primer:
\begin{tscreen}
/home/larry\$ \emph{ls} \\
Mail \\
letters \\
papers \\
/home/larry\$
\end{tscreen}

Tukaj vidimo, da ima Larry tri vnose v svojem trenutnem imeniku:
\texttt{Mail}, \texttt{letters} in \texttt{papers}.  To nam ne
pove veliko -- so to imeniki ali datoteke?  Lahko uporabimo izbiro
\texttt{-F} ukaza \texttt{ls} za podrobnejše informacije.
\begin{tscreen}
/home/larry\$ \emph{ls\ -F} \\
Mail/ \\
letters/ \\
papers/ \\
/home/larry\$
\end{tscreen}
Iz znaka \texttt{/}, ki je pripet vsakemu imenu datoteke, vemo, da so
ti trije vnosi pravzaprav podimeniki.

\index{izvedljive datoteke!definicija}
\index{datoteka!izvedljiva!definicija}
Uporaba \texttt{ls -F} lahko v izpisu tudi pripne >>\texttt{*}<< na
konec imena datoteke, kar pomeni, da je datoteka \textbf{izvedljiva}
oziroma program, ki se lahko požene.  Če ni ničesar pripetega imenu
datoteke ob uporabi \texttt{ls -F}, je datoteka >>navadna stara
datoteka<<, se pravi, ni niti imenik niti izvedljiva datoteka.

V splošnem vsak ukaz Unixa lahko vzame številne izbire poleg drugih
argumentov.  Te izbire se navadno začenjajo z znakom >>\texttt{-}<<,
kot smo videli zgoraj pri izbiri \texttt{-F}.  Izbira \texttt{-F} pove
ukazu \texttt{ls}, naj izda več informacij o tipu datotek -- v tem
primeru izpiše \texttt{/} za vsakim imenom imenika.

Če podate ukazu \texttt{ls} ime imenika, bo sistem izpisal vsebino
tega imenika.
\begin{tscreen}
/home/larry\$ \emph{ls\ -F papers} \\
english-lit \\
history-final \\
masters-thesis \\
notes/ \\
/home/larry\$
\end{tscreen}

Za bolj zanimiv izpis poglejmo, kaj je v sistemskem imeniku \texttt{/etc}.
\begin{tscreen}
/home/larry\$ \emph{ls /etc}\\
Images\ \ \ \ \ \ \ \ \ \ group\ \ \ \ \ \ \ \ \ \ \ pac\ \ \ \ \ \ \ \ \ \ \ \ \ rpcinfo\\
adm\ \ \ \ \ \ \ \ \ \ \ \ \ inet\ \ \ \ \ \ \ \ \ \ \ \ passwd\ \ \ \ \ \ \ \ \ \ securetty\\
bcheckrc\ \ \ \ \ \ \ \ init\ \ \ \ \ \ \ \ \ \ \ \ printcap\ \ \ \ \ \ \ \ services\\
brc\ \ \ \ \ \ \ \ \ \ \ \ \ init.d\ \ \ \ \ \ \ \ \ \ profile\ \ \ \ \ \ \ \ \ shells\\
brc~\ \ \ \ \ \ \ \ \ \ \ \ initrunlvl\ \ \ \ \ \ psdatabase\ \ \ \ \ \ startcons\\
csh.cshrc\ \ \ \ \ \ \ inittab\ \ \ \ \ \ \ \ \ rc\ \ \ \ \ \ \ \ \ \ \ \ \ \ swapoff\\
csh.login\ \ \ \ \ \ \ inittab.old\ \ \ \ \ rc.new\ \ \ \ \ \ \ \ \ \ swapon\\
default\ \ \ \ \ \ \ \ \ issue\ \ \ \ \ \ \ \ \ \ \ rc0.d\ \ \ \ \ \ \ \ \ \ \ syslog.conf\\
disktab\ \ \ \ \ \ \ \ \ lilo\ \ \ \ \ \ \ \ \ \ \ \ rc1.d\ \ \ \ \ \ \ \ \ \ \ syslog.pid\\
fdprm\ \ \ \ \ \ \ \ \ \ \ lpc\ \ \ \ \ \ \ \ \ \ \ \ \ rc2.d\ \ \ \ \ \ \ \ \ \ \ syslogd.reload\\
fstab\ \ \ \ \ \ \ \ \ \ \ magic\ \ \ \ \ \ \ \ \ \ \ rc3.d\ \ \ \ \ \ \ \ \ \ \ termcap\\
ftpaccess\ \ \ \ \ \ \ motd\ \ \ \ \ \ \ \ \ \ \ \ rc4.d\ \ \ \ \ \ \ \ \ \ \ umount\\
ftpusers\ \ \ \ \ \ \ \ mount\ \ \ \ \ \ \ \ \ \ \ rc5.d\ \ \ \ \ \ \ \ \ \ \ update\\
getty\ \ \ \ \ \ \ \ \ \ \ mtab\ \ \ \ \ \ \ \ \ \ \ \ rmt\ \ \ \ \ \ \ \ \ \ \ \ \ utmp\\
gettydefs\ \ \ \ \ \ \ mtools\ \ \ \ \ \ \ \ \ \ rpc\ \ \ \ \ \ \ \ \ \ \ \ \ wtmp\\
/home/larry\$
\end{tscreen}

Če ste uporabnik MS-DOS-a, boste opazili, da so imena datotek lahko
daljša od 8 znakov in lahko vsebujejo pike na kateremkoli položaju.
V imenu datoteke lahko uporabljate celo več kot eno piko.

Premaknimo se na vrh drevesa imenikov in potem navzdol do
drugega imenika, z ukazi
\begin{tscreen}
/home/larry\$ \emph{cd ..} \\
/home\$ \emph{cd ..} \\
/\$ \emph{cd usr} \\
/usr\$ \emph{cd bin} \\
/usr/bin\$
\end{tscreen}
V imenike se lahko premikate tudi v enem koraku kot v ukazu
\texttt{cd /usr/bin}.

Poskusite se premikati po različnih imenikih in uporabljajte
\texttt{ls} in \texttt{cd}.  V nekaterih primerih trčite
ob slabo znamenje v obliki sporočila o napaki zavrnitve dostopa
(>>\texttt{Permission denied}<<).  To je le varnost Unixa, ki se
oglaša: če želite uporabljati ukaza \texttt{ls} ali \texttt{cd},
morate imeti za to potrebna dovoljenja.  O tem bomo spregovorili več
od strani~\pageref{sec-file-perms} naprej.
\index{imenik!izpis vsebine|)}\index{ls@\texttt{ls}|)}
\index{izpis vsebine imenika|)}\index{datoteke!izpis|)}

\subsection{Ustvarjanje novih imenikov}

\index{imenik!ustvarjanje}
\index{mkdir@\texttt{mkdir}}
Čas je, da se naučimo, kako ustvariti imenike.  To vključuje uporabo
ukaza \texttt{mkdir}.  Poskusite naslednje:
\begin{tscreen}
/home/larry\$ \emph{mkdir foo} \\
/home/larry\$ \emph{ls -F} \\
Mail/ \\
foo/ \\
letters/ \\
papers/ \\
/home/larry\$ \emph{cd foo} \\
/home/larry/foo\$ \emph{ls} \\
/home/larry/foo\$ 
\end{tscreen}

Čestitamo!  Naredili ste nov imenik in se premaknili vanj.  Ker v tem
novem imeniku še ni datotek, se naučimo, kako prepišete datoteke z
enega mesta na drugo.

\subsection{Prepisovanje datotek}
\index{datoteka!prepisovanje}
\index{prepisovanje datotek}
\index{cp@\texttt{cp}}
Za prepisovanje datotek uporabljajte ukaz \texttt{cp}, kot je prikazano
tukaj:
\begin{tscreen}
/home/larry/foo\$ \emph{cp /etc/termcap\ \ .} \\
/home/larry/foo\$ \emph{cp /etc/shells\ \ .} \\
/home/larry/foo\$ \emph{ls\ -F} \\
shells\ \ \ \ \ termcap  \\
/home/larry/foo\$ \emph{cp shells bells} \\
/home/larry/foo\$ \emph{ls\ -F} \\
bells\ \ \ \ \ shells\ \ \ \ \ termcap \\
/home/larry/foo\$ 
\end{tscreen}

Ukaz \texttt{cp} prepiše datoteke, navedene v ukazni vrstici, v
datoteko ali imenik, določen z zadnjim argumentom.  Tu uporabljamo
>>\texttt{.}<< za sklicevanje na trenutni imenik.

\subsection{Premikanje datotek}
\index{datoteka!premikanje}
\index{mv@\texttt{mv}}
Ukaz \texttt{mv} premika datoteke, namesto da bi jih prepisal.
Skladnja je zelo premočrtna:
\begin{tscreen}
/home/larry/foo\$ \emph{mv termcap sells} \\
/home/larry/foo\$ \emph{ls -F} \\
bells\ \ \ \ \ sells\ \ \ \ \ shells \\
/home/larry/foo\$ 
\end{tscreen}

S tem smo datoteko \texttt{termcap} preimenovali v \texttt{sells}.
Ukaz \texttt{mv} lahko uporabljate tudi za premikanje datoteke v
popolnoma nov imenik.

\blackdiamond
\textbf{Pozor!}
Ukaza \texttt{mv} in \texttt{cp} bosta prepisala ciljno datoteko z
istim imenom, ne da bi vas vprašala.  Bodite previdni pri premikanju
datoteke v drugi imenik.  Morda je tam že datoteka z istim imenom, ki
jo boste prepisali!

\subsection{Brisanje datotek in imenikov}
\index{datoteka!brisanje}
\index{brisanje!datotek}
\index{rm@\texttt{rm}}
Zdaj se vam pri uporabi ukaza \texttt{ls} razvija grda rima.  Za
brisanje datoteke uporabite ukaz \texttt{rm} (iz angleškega izraza
>>remove<<, odstrani) kot je prikazano tukaj:
\begin{tscreen}
/home/larry/foo\$ \emph{rm bells sells} \\
/home/larry/foo\$ \emph{ls -F} \\
shells \\
/home/larry/foo\$
\end{tscreen}
Ostalo nam ni nič drugega kot \texttt{shells}, a ne bomo se
pritoževali.  Vedite, da vas ukaz \texttt{rm}, privzeto, ne bo
vprašal, ali naj izbriše datoteko -- zato bodite previdni.

\index{brisanje!imenika}
\index{imenik!brisanje}
\index{rmdir@\texttt{rmdir}}
Ukazu \texttt{rm} je soroden ukaz \texttt{rmdir}.  Ta ukaz izbriše
imenik, a le, če je ta prazen.  Če imenik vsebuje kakšno datoteko ali
podimenik, ga \texttt{rmdir} ne bo pobrisal, ampak se bo pritožil.

\subsection{Ogled datotek}
\index{datoteke!ogled njih vsebine}
\index{more@\texttt{more}}
\index{cat@\texttt{cat}!za ogled vsebine datoteke}
Ukaza \texttt{more} in \texttt{cat} se uporabljata za ogled vsebine
datotek.  Ukaz \texttt{more} izpiše datoteko po en zaslon naenkrat,
medtem ko \texttt{cat} izpiše vso datoteko naenkrat.

Za ogled datoteke \texttt{shells} uporabite ukaz
\begin{tscreen}
/home/larry/foo\$ \emph{more shells}
\end{tscreen}

V primeru, da vas zanima, kaj vsebuje datoteka \texttt{shells}: to je
seznam veljavnih programov za ukazno lupino na vašem sistemu.  Na
večini sistemov to vključuje \texttt{/bin/sh}, \texttt{/bin/bash} in
\texttt{/bin/csh}.  O teh različnih vrstah ukaznih lupin bomo
spregovorili kasneje.

Med uporabo \texttt{more} pritisnite \key{Space} (tipko presledek) za
izpis naslednje strani s tekstom in \key{b} za izpis prejšnje strani.
V pripomočku \texttt{more} so dostopni tudi drugi ukazi, ta dva sta le
osnova.  Pritisk na \key{q} bo zaključil \texttt{more}.

Zapustite \texttt{more} in poskusite \texttt{cat /etc/termcap}.
Besedilo bo verjetno letelo prehitro, da bi ga sploh lahko brali.  Ime
>>\texttt{cat}<< pravzaprav izhaja iz angleške besede >>concatenate<<,
ki pomeni >>povezati<<, >>spenjati<< in res opisuje uporabo tega
programa.  Ukaz \texttt{cat} se lahko uporablja za spenjanje vsebine
različnih datotek in shranjevanje rezultata v drugo datoteko.  To bo
na vrsti ponovno v razdelku~\ref{sec-shell-script}.

\subsection{Dobivanje pomoči na zvezi}

\index{Linux!strani priročnika za}
\index{pomoč!na zvezi}
\index{strani priročnika}
Skoraj vsak sistem Unix, vključno z Linuxom, priskrbi pripomoček, znan
kot \textbf{strani priročnika} (angl.\ manual pages).  Te strani
priročnika vsebujejo dokumentacijo, dostopno na zvezi, za sistemske
ukaze, vire, nastavitvene datoteke in tako naprej.

\index{man@\texttt{man}}
Ukaz, ki se uporablja za dostop do strani priročnika, se imenuje
\texttt{man}.  Če bi radi izvedeli več o drugih izbirah ukaza
\texttt{ls}, lahko napišete
\begin{tscreen}
/home/larry\$ \emph{man ls}
\end{tscreen}
in prikazana bo stran priročnika o ukazu \texttt{ls}.

Žal je večina strani priročnika napisana za tiste, ki vsaj približno
že vedo kaj počne ukaz ali vir.  Zato strani priročnika navadno
vsebujejo le tehnične podrobnosti o ukazu, brez veliko razlage.
Vendar so strani priročnika neprecenljiv vir za osvežitev vašega
spomina, če pozabite skladnjo nekega ukaza.  Strani priročnika vam
bodo povedale tudi o ukazih, ki jih ne pokrivamo v tej knjigi.

Priporočam, da uporabite \texttt{man} za ukaze, ki smo jih že
spoznali, in tako vsakič, ko uvedemo nov ukaz.  Nekateri od teh ukazov
ne bodo imeli strani v priročniku, iz različnih vzrokov.  Najprej,
strani priročnika morda še niso bile napisane.  (Dokumentacijski
projekt za Linux je odgovoren tudi za strani priročnika v Linuxu.
Sčasoma pridobivamo večino strani priročnika, dostopnih za sistem.)
Drugič, ukaz je lahko notranji ukaz ukazne lupine (razložen na
strani~\pageref{sec-shells-cmds}) ali vzdevek, ki ne bo imel svoje
strani v priročniku.  En primer je že \texttt{cd}, ki je notranji ukaz
lupine.  Ukazna lupina pravzaprav sama izvede \texttt{cd} -- ni
posebnega programa, ki bi izvedel ta ukaz.
