Dokumentace, literatura, vyhledávání souborů



První se seznámíme s informačními zdroji, jenž jsou uloženy fyzicky na serveru THUNDER.
Přesněji řečeno, jedná se o zdroje, které uživatel nalezne na kterémkoli Linuxovém systému.

Předpokládejme, že uživatele zajímá plnohodnotné využití některého příkazu, například cat. Zajímají ho tedy informace o příkazu, syntaxe, parametry, nastavení, souvislosti s dalšími příkazy, chyby a podobně. Všechny tyto informace jsou _STANDARDNĚ_ dostupné v Linuxovém systému.

První zjistíme, zda program cat vůbec v našem systému existuje...

  which cat[ENTER]
  /bin/cat
  
Ano, příkaz cat je reprezentován programem /bin/cat. Podobnou službu nám poskytne zadání cat[Tab][Tab]. Nyní se dotažme na informace o verzi...
  cat --version[ENTER]
  
  cat (GNU textutils) 2.0
  Written by Torbjorn Granlund and Richard M. Stallman.

  Copyright (C) 1999 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.
  There is NO warranty; not even for MERCHANTABILITY 
  or FITNESS FOR A PARTICULAR PURPOSE.
  
  
a na vestavěnou nápovědu...
  cat --help[ENTER]
  
  Usage: cat [OPTION] [FILE]...
  Concatenate FILE(s), or standard input, to standard output.

  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonblank output lines
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      never more than one single blank line
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help               display this help and exit
      --version            output version information and exit

  With no FILE, or when FILE is -, read standard input.

  Report bugs to <bug-textutils@gnu.org>.
  
  
Dále si můžeme prohlédnout manuálovou stránku, jež je standardním příslušenstvím programu...
  man cat[ENTER]

  
CAT(1)                         FSF                         CAT(1)

NAME
       cat - concatenate files and print on the standard output

SYNOPSIS
       cat [OPTION] [FILE]...

DESCRIPTION
       Concatenate FILE(s), or standard input, to standard output.

       -A, --show-all
              equivalent to -vET

       -b, --number-nonblank
              number nonblank output lines

       -e     equivalent to -vE

       -E, --show-ends
              display $ at end of each line

       -n, --number
              number all output lines

       -s, --squeeze-blank
              never more than one single blank line

       -t     equivalent to -vT

       -T, --show-tabs
              display TAB characters as ^I

       -u     (ignored)

       -v, --show-nonprinting
              use ^ and M- notation, except for LFD and TAB

       --help display this help and exit

       --version
              output version information and exit

       With no FILE, or when FILE is -, read standard input.
:
  
  
Nyní příkaz man čeká na další pokyny. [šipka dolů, šipka nahoru] "roluje" nápovědu po obrazovce, [Space] (mezerník) posune uživatele na další stranu nápovědy, [q] ukončí prohlížení nápovědy.
  [Space]

  
       -E, --show-ends
              display $ at end of each line

       -n, --number
              number all output lines

       -s, --squeeze-blank
              never more than one single blank line

       -t     equivalent to -vT

       -T, --show-tabs
              display TAB characters as ^I

       -u     (ignored)

       -v, --show-nonprinting
              use ^ and M- notation, except for LFD and TAB

       --help display this help and exit

       --version
              output version information and exit

       With no FILE, or when FILE is -, read standard input.

REPORTING BUGS
       Report bugs to <bug-textutils@gnu.org>.

SEE ALSO
       The  full  documentation  for cat is maintained as a Texinfo manual.  
       If the info and cat programs are properly installed at your site, the
       command

              info cat

       should give you access to the complete manual.

COPYRIGHT
       Copyright (C) 1999 Free Software Foundation, Inc.
       This is free software; see the source for copying conditions.
       There is  NO  warranty; not even for MERCHANTABILITY or FITNESS 
       FOR A PARTICULAR PURPOSE.

GNU textutils 2.0          August 1999                          1

(END)
  
  [q]
  

Z předchozího by se mohlo zdát, že jednotlivě informační zdroje poskytují stejnou nápovědu. Tak je tomu však zřídka a zpravidla u velmi jednoduchých programů. Tam, kde je třeba popsát mnoho parametrů a předložit mnoho informací (například u kompilátoru jazyka c, gcc), je help omezený na základní fakta a detailní informace obsahuje manuálová stránka. Pod kolonkou `SEE ALSO' v předchozím příkladu se nachází upozornění na další významný informační zdroj - TEXINFO MANUAL. Vyvolává se například pomocí příkazu  `info cat'. Pro triviální nástroj cat se již mnoho nových informací nedozvíme, avšak pro rozsáhlé projekty, jako překladače jazyků, systém TeX a podobně, je INFO dokumentace _PRIMÁRNÍ_, a všecny ostatní zdroje jsou odvozené, nebo dokonce neudržované. Další výraznou výhodou INFO dokumentů (pro rozsáhlejší manuály) je jejich interaktivnost. Obsahují křížové odkazy, pomocí kterých může uživatel manuálem procházet. Ukažme si první stránku INFO dokumentace pro příkaz cat...

  info cat[ENTER]

  
File: textutils.info,  Node: cat invocation,  Next: tac invocation,
Up: Output of entire files

`cat': Concatenate and write files
==================================

   `cat' copies each FILE (`-' means standard input), or standard
input
if none are given, to standard output.  Synopsis:

     cat [OPTION] [FILE]...

   The program accepts the following options.  Also see *Note Common
options::.

`-A'
`--show-all'
     Equivalent to `-vET'.

`-B'
`--binary'
     On MS-DOS and MS-Windows only, read and write the files in binary
     mode.  By default, `cat' on MS-DOS/MS-Windows uses binary mode
     only when standard output is redirected to a file or a pipe; this
     option overrides that.  Binary file I/O is used so that the files
     retain their format (Unix text as opposed to DOS text and
binary),
     because `cat' is frequently used as a file-copying program.  Some
     options (see below) cause `cat' read and write files in text mode
     because then the original file contents aren't important (e.g.,
     when lines are numbered by `cat', or when line endings should be
     marked).  This is so these options work as DOS/Windows users
would
     expect; for example, DOS-style text files have their lines end
with
     the CR-LF pair of characters which won't be processed as an empty
     line by `-b' unless the file is read in text mode.

`-b'
`--number-nonblank'
     Number all nonblank output lines, starting with 1.  On MS-DOS and
     MS-Windows, this option causes `cat' to read and write files in
     text mode.

`-e'
     Equivalent to `-vE'.

`-E'
`--show-ends'

--zz-Info: (textutils.info.gz)cat invocation, 78 lines --Top----------
  
  [q]
  
A následně se podívejme na výchozí INFO stránku k překladači gcc...
  info gcc[ENTER]

  
File: gcc.info,  Node: Top,  Next: G++ and GCC,  Up: (DIR)

Introduction
************

   This manual documents how to run, install and port the GNU
compiler,
as well as its new features and incompatibilities, and how to report
bugs.  It corresponds to EGCS version 1.1.2.

* Menu:


* G++ and GCC::     You can compile C or C++ programs.
* Invoking GCC::    Command options supported by `gcc'.
* Installation::    How to configure, compile and install GNU CC.
* C Extensions::    GNU extensions to the C language family.
* C++ Extensions::  GNU extensions to the C++ language.
* Gcov::            gcov: a GNU CC test coverage program.
* Trouble::         If you have trouble installing GNU CC.
* Bugs::            How, why and where to report bugs.
* Service::         How to find suppliers of support for GNU CC.
* Contributing::    How to contribute to testing and developing GNU
* CC.
* VMS::             Using GNU CC on VMS.

* Portability::     Goals of GNU CC's portability features.
* Interface::       Function-call interface of GNU CC output.
* Passes::          Order of passes, what they do, and what each file
* is for.
* RTL::             The intermediate representation that most passes
* work on.
* Machine Desc::    How to write machine description instruction
* patterns.
* Target Macros::   How to write the machine description C macros.
* Config::          Writing the `xm-MACHINE.h' file.
* Fragments::       Writing the `t-TARGET' and `x-HOST' files.

* Funding::         How to help assure funding for free software.
* GNU/Linux::       Linux and the GNU Project

* Copying::         GNU General Public License says
                     how you can copy and share GNU CC.
* Contributors::    People who have contributed to GNU CC.

* Index::           Index of concepts and symbol names.



--zz-Info: (gcc.info.gz)Top, 42 lines --All----------------------
Welcome to Info version 3.12h. "C-h" for help, "m" for menu item.
  
[q]
  
Poznamenejme, že v tištěné podobě by dostupná dokumentace ke GNU GCC měla několik set stránek.

Posledním informačním zdrojem jsou `vlastní' manuály a dokumentace dodané k programu nebo softwarovému balíku. Typickým místem uložení této dokumentace jsou adresáře  /usr/share/doc/usr/doc/usr/local/doc/usr/X11R6/doc/,  a podobně. Mnoho nástrojů, programů a vývojových prostředků zde ukládá licenční informace, návody, změny (CHANGELOG), chyby (BUGS), chybějící vlastnosti (TODO), často kladené otázky (FAQs), manuály v postscriptu, dvi, html a dalších formátech, specifikace jazyků, atd.


Dobře, existuje spousta programů a množství dokumentace,
ale jak je lze v systému vlastně najít?

V hiearchické adresářové struktuře systémů, jako je výpočetní server THUNDER, existují typicky stovky tisíc souborů. Najít relavantní data může být tedy poněkud komplikované. Úkol však značně zjednodušují vyhledávací nástroje  findlocate  a which.  Příkaz find hledá v adresářové struktuře objekty obsahující zadaný text a provádí zadané operace. Příkaz locate provádí něco podobného, ale narozdíl od find _neprohledává_ fyzicky disk, ale používá již sestavenou databázi souborů. Aktualizaci databáze zajišťuje sám systém v pravidelných intervalech. Příkaz which opět hledá požadovaný soubor, ale omezuje se výlučně na cestu (PATH). Pro informace o vyhledávací cestě, viz Konfigurace prostředí. V následujícím uvedeme jen ukázky použití zmíněných nástrojů, neboť...  `man find',  `info find',  `man locate',  `info locate',  `man which',  `info which'...

Pokud uživatel chce...

  použije příkaz...
  
Vyhledat informace o GNU C knihovnách (glibc) v /usr/share/doc...
  find /usr/share/doc -name glibc* -print   
                                            # přitom `-print' je nepovinné
                                            # a `glibc*' značí jméno
                                            # začínající na `glibc'
  
V rodičovském adresáři (a jeho podadresářích) najít soubor  article.ps...
  find .. -name article.ps
  
V aktuálním adresáři (a jeho podadresářích) najít všechny programy ve fortranu...
  find . -name *.f
  
V adresáři /usr vyhledat všechny adresáře, jejichž jméno začíná řetězcem `gimp' (gimp je GNU program pro manipulaci s obrázky)...
  find /usr -type d -name gimp*
  
V adresáři ./public_html najít všechny soubory (a _NE_ adresáře) jejichž jméno _nekončí_ `.html' a provést na nich příkaz `ls -l'... anebo zjistit počet jejich řádků...
  find public_html ! -type d ! -name *.html -exec ls -l {} \;
  find public_html ! -type d ! -name *.html | wc -l
  
Najít v celém systému soubory, jejichž jméno obsahuje text `gimp'... a totéž po stránkách...
  locate gimp
  locate gimp | more         # klávesa [q] ukončí prohlížení v případě,
                             # že nemáme zájem o další stránky
  
Vyhledat v systémových částech adresářové struktury (tedy vyjma adresáře /home) soubory obsahující ve jménu řetězec `fft'...
  locate fft | grep -v home
  
Najít v systému soubory, jejichž jméno obsahuje `f77' a tento seznam uložit do souboru `f77_list'...
  locate f77 > f77_list
  
Určit přesnou specifikaci programu `f77' ve vyhledávací cestě...
  which f77
  


Informační zdroje dostupné na Internetu

Stovky megabytů dokumentace uložené ve vlastním systému v podobě manuálových stránek, INFO manuálů a obsahu somewhere/doc adresářů představuje pouze zlomek dosažitelných informací. Prakticky každá skupina vývojářů sdružená kolem nějakého softwarového produktu má vlastní webovskou stránku. Také všechna sdružení a zájmové skupiny, katedry informatiky, ... a v neposlední řadě nadšení jednotlivci. Na těchto stránkách lze nalézt až neuvěřitelně obsáhlou zásobu aktuálních informací o produktech, dokumentace, tipů, triků, FAQs, příkladů, učebnic a tutoriálů všeho druhu. Je třeba zmínit také email-ove konference a jejich archivy, bbs-ky, NetNews a jejich archivy.
Následuje několik základních výchozích odkazů, jenž jsou vybrány z webovské stránky http://thunder.upol.cz/~nathan/comp/links.html.

Free Software, Free Information, Free Thought, Free World :-)

Linuxové GNU systémy Dokumentace Microsoft Windows XX/YYYY versus UNIX GNU C Compiler (GCC), g77, gpc, GNAT; EGCS, PGCC Matematika a vědecké výpočty pod Linuxem and GNU Editory  ...  ed, vi, vim, emacs TeX, LaTeX, AMSLaTeX, MetaFont, MetaPost, postscript, CSTUG
  • TeX Users Group, http://www.tug.org, TUG
  • CSTUG, http://www.cstug.cz, České sdružení uživatelů TeXu
  • TeX, http://www.gnu.cz/tex.html, Český úvod
  • MetaPost Homepage, http://cm.bell-labs.com/who/hobby/MetaPost.html
HTML Ostatní sdružení a projekty FREE softwaru
  • XFree86, http://www.xfree86.org
  • GIMP, http://www.gimp.org
Další české webovské servery se zameřením na Linux Vyhledávací servery, katalogy


Dokumentace v tištěné formě. Literatura.

Uvedu prozatím pouze tři knihy, které existují v češtině, a o kterých si myslím, že představují nejlepší úvodní zdroj informací. První kniha obsahuje _základní_ myšlenky UNIXu, bez ohledu na konkrétní implementaci, druhá poskytuje elementární úvod do Linuxu a třetí pomůže vyřešit mnoho problémů s vývojem pod Linuxem.

  • Luděk SKOČOVSKÝ : Principy a problémy operačního systému UNIX, Science, 1993
  • Matt WELSH - Lar KAUFMAN : Používáme Linux, Computer Press, 1997
  • Richard STONES - Neil MATTHEW : Linux  Začínáme programovat, Computer Press, 2000

A přidám úvodní učebnici jazyka C...

  • Pavel HEROUT : Učebnice jazyka C, KOPP, 1992 (1. vydání); existuje již třetí vydání
... a jazyka Perl...

  • Pavel SATRAPA : Perl pro zelenáče, Neokortex, 2000