IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 101 (torneu al tema 103.1)
Fitxers: LPI103.1_TreballarALaLiniaOrdres.pdf (LPI103.1_TreballarALaLiniaOrdres.odp)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/103.1
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

LPI 103.1. Treballar a la línia d'ordres

Objectius del tema

103.1. Treballar a la línia d'ordres
Objective.jpg
  • Objectiu: Els candidats han de ser capaços d'interactuar amb l'interpret d'ordres (shell) i les comandes que utilitzen la línia d'ordres. Aquest objectiu assumeix que l'interpret d'ordres a utilitzar és bash.
  • Pes: 4
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

  • Utilitzar ordres bàsiques de l'interpret d'ordres embolcall i seqüències d'instruccions d'una línia per a fer tasques bàsiques amb la línia d'ordres.
  • Utilitzar i modificar l'entorn de l'interpret d'ordres incloent la definició, la referència i l'exportació de les variables d'entorn.
  • Utilitzar i editar l'històric d'ordres.
  • Invocar ordres dins i fora del camí (path) definit.
Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 103.1. Treballar a la línia d'ordres

Terminals

Jordiromerounix01.jpg
  • La feina principal d'un sistema operatiu és comunicar el hardware amb els usuaris.
  • L'usuari no interactua directament amb el hardware, o fa a través d'aplicacions suportades pel sistema operatiu
  • La part més important d'un sistema operatiu és el seu nucli o en anglès Kernel, el kernel és l'encarregat de comunicar el software amb el hardware
Jordiromerounix02.jpg
  • Antigament el terminal remot és connectava mitjançant un cable serie a l'ordinador central.
  • Actualment el funcionament és bastant similar però amb modificacions

Tipus de terminal

Terminals de maquinari

  • Els antics terminals de maquinari tty no tenien procesador

tty abreviatura de teltype

  • Consoles virtuals

Podem comprovar les consoles virtuals amb la següent comanda

$ls -la /dev/tty* |more

la qual ens donarà un resultat semblant a aquest

ls -la /dev/tty* | more
crw-rw-rw- 1 root tty     5,  0 2011-10-02 12:12 /dev/tty
crw--w---- 1 root tty     4,  0 2011-10-02 12:12 /dev/tty0
crw------- 1 root root    4,  1 2011-10-02 12:13 /dev/tty1
crw--w---- 1 root tty     4, 10 2011-10-02 12:12 /dev/tty10
crw--w---- 1 root tty     4, 11 2011-10-02 12:12 /dev/tty11
crw--w---- 1 root tty     4, 12 2011-10-02 12:12 /dev/tty12
crw--w---- 1 root tty     4, 13 2011-10-02 12:12 /dev/tty13
crw--w---- 1 root tty     4, 14 2011-10-02 12:12 /dev/tty14
crw--w---- 1 root tty     4, 15 2011-10-02 12:12 /dev/tty15
crw--w---- 1 root tty     4, 16 2011-10-02 12:12 /dev/tty16
crw--w---- 1 root tty     4, 17 2011-10-02 12:12 /dev/tty17
crw--w---- 1 root tty     4, 18 2011-10-02 12:12 /dev/tty18
crw--w---- 1 root tty     4, 19 2011-10-02 12:12 /dev/tty19
crw------- 1 root root    4,  2 2011-10-02 12:12 /dev/tty2
--Més--
  • Emuladors de terminal

El model actual és utilitzar els emuladors de terminal, en el qual em substituït el hardware antic per una aplicació i tota la resta s'ha mantingut

Tipus

Em podem distingir dos tipus:

Pseudoterminals (pts) Bash és un interpret de comandes o podem veure instal·lant el terminal terminator o farem amb la comanda

$apt-get install terminator

Terminal virtual (tty) en el nostre cas podem accedir a la virtualconsole amb la combinació de tecles Ctrl + Alt + F? on la combinació amb la tecla F7 ens permet accedir a l'entorn gràfic del sistema

Descriptors

"En linux tot són fitxers" inclús el hardware, podem trobar tres tipus de descriptors de fitxers:

0 entrada utilitzada per la aplicació, és coneguda com entrada estàndard, els serveis, com per exemple el DNS, no tenen entrada estandard.

1 o sortida normal

2 o sortida error

  • Terminals remots

Intèrprets d'ordres (shell)

  • Tipus de shells
Bash: bourne Again Shell. El més popular i l'utilitzat en aquest curs.
Sh (Bourne Shell): un dels primers intèrprets de comandes. Shell per
defecte a Unix. Creada al 1977 per Stephen Bourne dels laboratoris
AT&T de Bell. sh és encara l'interpret de comandes per defecte de root
en sistemes Unix.
csh: La shell original de C no es gaire utilitzada a Linux. tcsh és un bon
substitut de csh a Linux, força popular però gairebé cap distribució Linux
la porta per defecte
Ksh (Korn shell): va ser dissenyat per tal de tenir les millors
característiques de sh i zsh.
Dash (Debian Almquist Shell): un versió millorada d'ash. Més petit i
eficient que bash. A Ubuntu, des de la versió 6.10, és l'interpret de
comandes per defecte del sistema, tot i que l'intèrpret per defecte dels
usuaris continua sent bash.

Que és una ordre o comanda?

El que escrivim després del PROMPT, que ens permet realitzar una interacció amb el sistema operatiu

Una comanda necessita paràmetres o opcions que és informació que utilitza l'ordre

el format d'una ordre acostuma a ser el següent:

$ordre paràmetre 1, paràmetre 2, paràmetre 3 ....

hem de tenir en compte l'ordre s'escriu amb key sensitive que vol dir que diferencia entre majúscules i minúscules.

Exemples

Unix 98

$netstat -puta = $netstat -p -u -t -a = $netstat -tapu

GNU

$ls --all = $ls -a però no significa el mateix que $ls -a -l -l

quan veiem dos guions vol dir que tot és una paraula

FreeBSD

l'ordre ps accepta diferents tipus

$ps aux o $ps -aux

Per a obtenir ajuda de qualsevol comanda o farem amb el parametre man i la comanda com per exemple la comanda

$man sudo 

el resultat serà semblant al següent

SUDO(8)                      MAINTENANCE COMMANDS                      SUDO(8)
NAME
      sudo, sudoedit - execute a command as another user
SYNOPSIS
      sudo -h | -K | -k | -L | -V
      sudo -v [-AknS] [-g group name|#gid] [-p prompt] [-u username|#uid]
      sudo -l[l] [-AknS] [-g group name|#gid] [-p prompt] [-U user name]
      [-u user name|#uid] [command]
      sudo [-AbEHnPS] [-C fd] [-g group name|#gid] [-p prompt]
      [-u user name|#uid] [VAR=value] [-i | -s] [command]
      sudoedit [-AnS] [-C fd] [-g group name|#gid] [-p prompt]
      [-u user name|#uid] file ...
DESCRIPTION
sudo allows a permitted user to execute a command as the superuser or
      another user, as specified in the sudoers file.  The real and effective
      uid and gid are set to match those of the target user as specified in
      the passwd file and the group vector is initialized based on the group
      file (unless the -P option was specified).  If the invoking user is
      root or if the target user is the same as the invoking user, no
      password is required.  Otherwise, sudo requires that users authenticate
      themselves with a password by default (NOTE: in the default
      configuration this is the user's password, not the root password).
      Once a user has been authenticated, a time stamp is updated and the
      user may then use sudo without a password for a short period of time
      (15 minutes unless overridden in sudoers).
....

Comandes relacionades amb terminals

tty

getty

finger

és una comanda molt semblant a who ens informa de qui és troba connectat a l'ordinador

Login     Name           Tty      Idle  Login Time   Office     Office Phone
jordi     Jordi Romero   tty7     2:00  Oct  2 12:13 (:0)
jordi     Jordi Romero   pts/0          Oct  2 13:53 (:0.0)

who

Semblant a finger aquesta comanda mostra també les terminals virtuals

$who -a
          arrenca sist 2011-10-02 12:12
          nivll exec 2 2011-10-02 12:12
LOGIN      tty4         2011-10-02 12:12               657 id=4
LOGIN      tty5         2011-10-02 12:12               662 id=5
LOGIN      tty2         2011-10-02 12:12               671 id=2
LOGIN      tty3         2011-10-02 12:12               673 id=3
LOGIN      tty6         2011-10-02 12:12               675 id=6
LOGIN      tty1         2011-10-02 12:13               992 id=1
jordi    + tty7         2011-10-02 12:13  antic       1254 (:0)
jordi    + pts/0        2011-10-02 13:53   .          1988 (:0.0)

Comunicacions entre terminals. write, msg i talk

wall

utlitzem per a enviar un missatge a tots els terminals obert al sistema amb la combinació de tecles Crtl + D enviem el missatge

write

el seu funcionament és semblant a l'anterior comanda, però es diferencia en que només enviem el missatge a una sola terminal per saber quina tty o farem amb la comanda

$finger 

clear

netejem la pantalla del terminal

$clear

també ho podem fer amb la conbinació de tecles Ctrl + l

reset

utilitzem aquesta comanda per a resetejar la terminal

Shell per defecte del sistema

El per defecte del sistema és Shell

Per comprovar quina Shell per defecte tenim o farem amb la comanda

Comprovem la Bash per defecte des de el menú gràfic

Jordiromerounix03.png

  • Exemples de scripts
#!/bin/bash

echo "Hola mon!"
#!/usr/bin/php
<?php
echo "Hola mon!"
?>
#!/usr/bin/python
print "Hola mon!

PROMPT

en anglès vol dir preguntar

[email protected]:~$ 

El simbol ~ indica que et trobes a la home el simbol $ ens indica que escrivim una comanda

El simbol # inidica que som superusuaris o root

Definir una variable PS1=que vols? ens permet modificar el PROMPT de manera temporal

Trucs i ús de la línia d'ordres

  • command completion

El tabulador ens permet auto-completar les ordres

Jordiromerounix04.png

Hi ha suport per a comandes, nom de fitxers i algunes ordres

Paquet bash-completion

Aporta certa capacitat per a auto-completar certes comandes del sistema

Edició amb bash

  • Moure's per la línia

Ctrl+A: inici de línia (també tecla “Inicio”) i Ctrl+E: final de línia (també tecla “Fin”).

Fletxes esquerra i dreta del teclat. Ctrl+Fletxes ens permet moure'ns a dreta i esquerra de paraula en paraula.

  • Esborrar text

Ctrl+D (tecla suprimir) i Backspace

Ctrl+k: Esborra des del cursor fins al final de línia.

Ctrl+x + Bakcspace: Esborra des del cursor fins al final de línia.

  • Intercanviar text

Ctrl+t: intercanvia el caràcter d'abans del cursor pel de després del cursor.

  • Canviar de majúscules a minúscules:

Esc+U: Converteix del cursor al final de paraula en majúscules

Esc+L: Converteix del cursor al final de paraula en minúscules

Esc+C: Converteix la primera lletra (Capitalize) de la paraula sota el cursor a majúscules

  • Invocar un editor

Es pot executar un editor complet per tal d'editar una línia de l'intèrpret d'ordres.

Ctrl+X+Ctrl+E. S'executa l'editor definit a la variable d'entorn EDITOR o FCEDIT

  • Hi ha múltiples dreceres de teclat

Ctrl+c: Envia la senyal d'acabar el que s'esta executant

Ctrl+z: Atura (pausa) un ordre

Ctrl+l: netejar la pantalla (equivalent a l'ordre clear)

Ctrl+r: Cerca ordres. Consulteu la següent transparència


Històric de la línia d'ordres

Amb la comanda History veiem l'historial de la terminal

$history

Per a no guarda una comanda a l'historial deixarem un espai en blanc

ctrl + r per a executar una ordre anterior ja utilitzada

Executem una ordre en concret

$!10

També podem buscar una ordre escrivint una paraula

$!Mysql

Ordres internes i ordres externes

Configuració de l'interpret d'ordres

Variables d'entorn

$TERM

Les variables sempre comencen amb dollar ($)

Ens mostra el tipus de terminal que estem utilitzan

La mirem amb la comanda

$echo term

Terminal virtual

X-windows

$xterm

PATH és una variable d'entorn que ens diu on ens trobem

El primer emulador virtual i podem accedir amb la conbinació de tecles Ctrl+Alt+F1

Consultar les variables d'entorn

$env
ORBIT_SOCKETDIR=/tmp/orbit-alumne
SSH_AGENT_PID=1630
TERM=xterm
SHELL=/bin/bash
XDG_SESSION_COOKIE=e14e5e24e37092b8d04f3e034c913dfe-1317807440.920484-1373948627
WINDOWID=29360289
GNOME_KEYRING_CONTROL=/tmp/keyring-6tmoka
GTK_MODULES=canberra-gtk-module
NO_PROXY=localhost,127.0.0.0/8,*.local,192.168.0.0/16,172.16.0.0/22,*.iesebre.com
USER=alumne
http_proxy=http://proxy.aula4.informatica.iesebre.com:3128/
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;
....

Modificació permanent d'una variable o farem amb

$export

Consultar una variable

$echo term

Variables d'entron més conegudes

Nom Funció
USER Nom d'usuari dins del sistema
UID Identificador númeric del usuari
HOME El directori HOME de l'usuari
PWD El directori de treball actual
SHELL El nom del shell
$ Identificador del procés que s'està executant
PPID Identificador del procés que ha iniciat el procés que s'està executant
? El codi de retorn de la darrera instrucció executada

Si l'ordre no és un ordre interna, aleshores es busca l'ordre a les carpetes especificades a la variable d'entorn PATH.

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Les carpetes amb executables són normalment les especificades per l'estàndard FHS

Amb tabulador dos cops ens dona la llista de variables que comencin amb la letra que li pasem a la variable

[email protected]:~$ as
as                    aseqnet               aspell-import
asciitopgm            aspell                
aseqdump              aspell-autobuildhash  

la variable ens indica en quina carpeta ens trobem

$PWD

Orde cd és serveix per cambiar de directori

$cd

Exemples comanda cd

Anar a la HOME de l'usuari:

$cd | cd ~ | cd $HOME

Anar a l'arrel del sistema:

$cd /

Anar al directori pare:

$cd .. 

Anar a un directori (path relatiu):

$cd /directori1/prova

Anar al directori anterior i mostrar-lo

$cd - | cd "OLDPWD" && pwd

Directori de treball

Modificar el directori de treball. Ordre cd

Directoris especials

El puntbarra (./)

Per executar una aplicació del directori de treball:

$./programa_executable

Ordre echo

Mostra qualsevol text o variable

Serveix per consultar variable

$echo -e "\a"

Ordre exec

Executar ordres directament

$lowritter

Executar ordres en segon terme

Comanda sleep la terminal queda bloquejada durant 5 segons

$sleep 5  

Llistes d'ordres

Permeteix executar una llista d'ordres

Amb els operadors AND o OR

Amb la comanda AND s'executa la segona comanda quan funciona la primera

$comanda1 && comanda2


Substitucions, expansions i construccions complexes

Expansions per claus

Variables

Backsticks. Cometes endarrere

Expressions aritmètiques

Ajuda del sistema

man

la comanda man es serveix per a mostrar la informació d'una comanda

$man ls

Per a traduir

info

Altres pàgines d'interès

Informació del sistema. uname

Alias

Tancar la sessió