viernes, 16 de septiembre de 2011

Sesión 7 Ejercicio 7 Capítulo GPL

***Archivo latín***

Copiar el contenido en letra color naranja y guardarlo en un archivo llamado gpl-vi


Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. 
Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id.
The Corresponding source for a work in source code form is that same work. 
Quo mundi lobortis reformidans eu, legimus senserit definiebas an eos. 
Eu sit tincidunt incorrupte definitionem, vis mutat affert percipit cu, eirmod consectetuer signiferumque eu per.
In usu latine equidem dolores.
Quo no falli viris intellegam, ut fugit veritus placerat per.




Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. 
No mei ferri graeco dicunt, ad cum veri accommodare. 
Sed at malis omnesque delicata, usu et iusto zzril meliore. 
The Corresponding source need not include anything that users can regenerate automatically from other parts of the Corresponding source.
Dicunt maiorum eloquentiam cum cu, sit summo dolor essent te. 
Ne quodsi nusquam legendos has, ea dicit voluptua eloquentiam pro, ad sit quas qualisque. 
Eos vocibus deserunt quaestio ei.




Blandit incorrupte quaerendum in quo, nibh impedit id vis, vel no nullam semper audiam. 
Ei populo graeci consulatu mei, has ea stet modus phaedrum. 
Inani oblique ne has, duo et veritus detraxit. 
Tota ludus oratio ea mel, offendit persequeris ei vim. 
Eos dicat oratio partem ut, id cum ignota senserit intellegat. 
Sit inani ubique graecis ad, quanThe “Corresponding source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. 
However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work.
do graecis liberavisse et cum, dicit option eruditi at duo. 
Homero salutatus suscipiantur eum id, tamquam voluptaria expetendis ad sed, nobis feugiat similique usu ex.




Eum hinc argumentum te, no sit percipit adversarium, ne qui feugiat persecuti.
Odio omnes scripserit ad est, ut vidit lorem maiestatis his, putent mandamus gloriatur ne pro.
Oratio iriure rationibus ne his, ad est corrumpit splendide.
Ad duo appareat moderatius, ei falli tollit denique eos.
Dicant evertitur mei in, ne his deserun For example, Corresponding source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
t perpetua sententiae, ea sea omnes similique vituperatoribus. 
Ex mel errem intellegebat comprehensam, vel ad tantas antiopam delicatissimi, tota ferri affert eu nec. 
Legere expetenda pertinacia ne pro, et pro impetus persius assueverit.




Ea mei nullam facete, omnis oratio offendit ius cu.
Doming takimata repudiandae usu an, mei dicant takimata id, pri eleifend inimicus euripidis at. 
His vero singulis ea, quem euripidis abhorreant mei ut, et populo iriure vix. 
Usu ludus affert voluptaria ei, vix ea error definitiones, movet fastidii signiferumque in qui.




Vis prodesset adolescens adipiscing te, usu mazim perfecto recteque at, assum putant erroribus mea in. 
Vel facete imperdiet id, cum an libris luptatum perfecto, vel fabellas inciderint ut.
Veri facete debitis ea vis, ut eos oratio erroribus.
Sint facete perfecto no vel, vim id omnium insolens.
Vel dolores perfecto pertinacia ut,The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. 
A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. 
te mel meis ullum dicam, eos assum facilis corpora in.




Mea te unum viderer dolores, nostrum detracto nec in, vis no partem definiebas constituam. 
Dicant utinam philosophia has cu, hendrerit prodesset at nam, eos an bonorum dissentiet. 
Has ad placerat intellegam consectetuer, no adipisci mandamus senserit pro, torquatos similique percipitur est ex. 
Pro ex putant deleniti repudiare, vel an aperiam sensibus suavitate.
A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. 
Ad vel epicurei convenire, ea soluta aliquid deserunt ius, pri in errem putant feugiat.




Sed iusto nihil populo an, ex pro novum homero cotidieque. 
Te utamur civibus eleifend qui, nam ei brute doming concludaturque, modo aliquam facilisi nec no. 
Vidisse maiestatis constituam eu his, esse pertinacia intellegam ius cu. 
Eos ei odio veniam, eu sumo altera adipisci eam, mea audiam prodesset persequeris ea. 
Ad vitae dictas vituperata sed, eum posse labore postulant id. 
Te eligendi principes dignissim sit, te vel dicant officiis repudiandae.




Id vel sensibus honestatis omittantur, vel cu nobis commune patrioque. 
In accusata definiebas qui, id tale malorum dolorem sed, solum clita phaedrum ne his. 
Eos mutat ullum forensibus ex, wisi perfecto urbanitas cu eam, no vis dicunt impetus. 
Assum novum in pri, vix an suavitate moderatius, id has reformidans referrentur. 
Elit The “source code” for a work means the preferred form of the work for making modifications to it. 
“Object code” means any non-source form of a work.
inciderint omittantur duo ut, dicit democritum signiferumque eu est, ad suscipit delectus mandamus duo. 
An harum equidem maiestatis nec.




At has veri feugait placerat, in semper offendit praesent his. 
Omnium impetus facilis sed at, ex viris tincidunt ius. 
Unum eirmod dignissim id quo. 
Sit te atomorum quaerendum neglegentur, his primis tamquam et. 
Eu quo quot veri alienum, ea eos nullam luptatum accusamus. 
Ea mel causae phaedrum reprimique, at vidisse dolores ocurreret nam.source1. source Code.

Utilizar el editor Vim para borrar el texto en latín y reacomodar el texto de manera que quede como en la imagen siguiente:

Sesión 7 Ejercicio 6 Himno Nacional

***Archivo Ejercicio-himno***
Ejercicio Himno Nacional Mexicano 


1. Abrir una terminal y crear un archivo llamado himno-mexico con el comando vi 


2. Dividir la pantalla verticalmente y abrir el archivo himno situado en el home


3. Ejecutar el comando para numerar las lineas del archivo himno y el archivo himno-mexico


4.Situarse en la linea 9 del himno y con el modo inserción cambiarla por la linea
 De la paz el arcángel divino,


5.De la línea 12 corregir la palabra Mássiosare con los espacios pertinentes de manera que quede Más si osare 


6.Reemplazar la línea 15 por la línea: Un soldado en cada hijo te dio.


7.Copiar toda la estrofa uno y pegarla en el archivo himno-mexico


8.Moverse en el archivo con los comando de navegacion por parrafo hasta llegar a la estrofa 2, borrar todas las líneas
<Esta línea no va aquí> y borrar los espacios de línea que queden de mas.


9.Copiar todo el parrafo de la estrofa 2 y pegar en la otra pantalla 


10.Moverse hasta la Estrofa 3 y corregir cada letra inicial de línea por su respectiva mayúscula, copiar la estrofa 3
en el archivo himno-mexico


11. Situar el cursor en el parrafo de la estrofa 4 y realizar las correcciones pertinentes de manera que las ultimas 4 líneas queden de la siguiente manera:


¡Para ti las guirnaldas de oliva!
¡Un recuerdo para ellos de gloria!
¡Un laurel para tí de victoria!
¡Un sepulcro para ellos de honor!


12. Copiar línea por línea la estrofa 4 y pegar en el archivo himno-mexico


13. Copiar el parrafo del coro y pegar al inicio, entre las estrofas y al final del archivo himno-mexico


14. Cerrar sin guardar el archivo himno 


15. Situarse en la línea 72 y escribir: Escrito por Francisco González Bocanegra en 1853 y compuesto por Jaime Nuno en 1854 


16. Guardar el archivo y salir del editor


***Archivo himno****

Copiar el contenido el letras color naranja y guardarlo en un archivo con el nombre himno

Coro
Mexicanos, al grito de Guerra
El acero, aprestad y el bridón,
y retiemble en sus centros la tierra.
Al sonoro rugir del cañón.


Estrofa I
Ciña ¡Oh patria tus sienes de oliva!
De la paz del arcángel de vino,
Que en el cielo tu eterno destino
Por el dedo de Dios escribió.
Mássiosare un extraño enemigo
Profanar con su planta tus suelos
Pienso ¡Oh patria querida! Que el cielo
Un soldado en cada hijo de dios.


Coro
Mexicanos, al grito de Guerra
El acero, aprestad y el bridón,
y retiemble en sus centros la tierra.
Al sonoro rugir del cañón.


Estrofa II
¡Guerra, guerra sin tregua al que intente
<Esta línea no va aquí>
De la patria manchar los blasones!
<Esta línea no va aquí>
¡Guerra, guerra! Los patrios pendones,
<Esta línea no va aquí>
En las olas de sangre empapad.
<Esta línea no va aquí>
¡Guerra, guerra! En el monte, en el valle
<Esta línea no va aquí>
Los cañones horrísonos truenen,
<Esta línea no va aquí>
<Esta línea no va aquí>
Y los ecos sonoros resuenen
Con las voces de ¡Unión! ¡Libertad!


Coro
Mexicanos, al grito de Guerra
El acero, aprestad y el bridón,
y retiemble en sus centros la tierra.
Al sonoro rugir del cañón.


Estrofa III
antes, patria, que inermes tu hijos
bajo el yugo su cuello dobleguen
tus campiñas con sangre se rieguen
sobre la sangre se estampe su pie.
y tus templos, palacios y torres
se derrumben con hórrido estruendo,
y sus ruinas existan diciendo:
de mil héroes la patria aquí fué.


Coro
Mexicanos, al grito de Guerra
El acero, aprestad y el bridón,
y retiemble en sus centros la tierra.
Al sonoro rugir del cañón.


Estrofa IV
¡Patria! ¡Patria! Tus hijos te juran
Exhalar en tus aras su aliento,
Si el clarín con su bélico acento
Los convoca a lidiar con valor.
¡Para ti las girnaldas de olivia!
Un recuerdo para ellos de gloria
¡Un laurel para tí de victorias!
n sepulcro para ellos de onor!


Coro
Mexicanos, al grito de Guerra
El acero, aprestad y el bridón,
y retiemble en sus centros la tierra.
Al sonoro rugir del cañón. 

Sesión 7 Editor de textos Vim

Vim es un editor de textos muy completo y muy útil, para iniciar el editor Vim tecleamos en una terminal el comando vi. Opcionalmente podemos agregar el nombre de un archivo, si el archivo existe se abre el archivo indicado, si no existe se crear el archivo para ser editado.

mi-usuario@maquina:~$ vi

Se abrirá la siguiente ventana:


Al abrirse la ventana del editor entramos por default en el modo normal, si quisieras escribir en el modo normal no lo podrías hacer, por lo cual tenemos el modo inserción, para entrar en este modo tecleamos la letra i o la tecla insert. Como su nombre lo dice el modo inserción es únicamente para insertar texto, por lo que si quisieras ocupar las flechas para moverte o la tecla backspace no funcionarán. Para poder moverte entre las líneas con las flechas debemos teclear la tecla Esc , al teclear esta tecla regresamos al modo normal.

Tenemos otro modo llamado comando, para acceder al modo comando tenemos que estar previamente en el nodo normal y después teclear el caracter  :  y a continuación en la parte inferior izquierda aparecerá el caracter : y cursor que parpadea, eso quiere decir que nos encontramos en el modo comando.



Tenemos 2 comando muy básicos en el modo comando para el uso del editor vim:

q    -   Sale del editor

w   -   Guarda los cambios del archivo editado

qw -   Guarda los cambios y sale del editor

También tenemos el operador ! que forza cualquiera de los 2 comandos vistos arriba:

q!   -   Sale del editor, si es que existen cambios que no han sido guardados los ignora

w!  -   Forza el guardado de los cambios en el archivo

El editor vim, consta de muchos comandos, por lo que en esta entrada simplemente voy a poner los links con la documentación del proyecto.

http://www.vim.org/docs.php

http://vimdoc.sourceforge.net/

Sesión 7 Links Duros y Suaves

Un link es un archivo que hace referencia a un archivo original.

Existen 2 tipos de links:

  • Links Duros: Son enlaces a un archivo, ambos tienen el mismo valor de inodo y tamaño.
  • Links Suaves (Simbólicos): Son accesos directos a un archivo original, tienen distinto inodo y tamaño, si se borra el archivo original el enlace suave pierde su contenido, si se restaura el archivo original, el link suave vuelve a tener contenido.

Ahora vamos a crear 2 enlaces, primero vamos a crear una carpeta en nuestro home llamada enlaces:

mi-usuario@maquina:~$ mkdir enlaces
mi-usuario@maquina:~$

Entramos a la carpeta enlaces y copiamos el archivo en la ruta /etc/passwd a nuestra carpeta enlaces, renombrandolo como passwd.backup

mi-usuario@maquina:~$ cd enlaces
mi-usuario@maquina:~/enlaces$ cp /etc/passwd passwd.backup
mi-usuario@maquina:~/enlaces$ ls
passwd.backup

Es importante copiar el archivo passwd, para trabajar con la copia y no con el original, recuerda que con los enlaces al realizar un cambio se ve reflejado en el archivo original.

Ahora vamos a hacer un enlace duro llamado passwd.hard haciendo tomando como referencia el archivo passwd.backup el cual esta dentro de nuestra carpeta enlaces.

mi-usuario@maquina:~/enlaces$ ln passwd.backup passwd.hard
mi-usuario@maquina:~/enlaces$

Vamos a listar el contenido de nuestra carpeta:

mi-usuario@maquina:~/enlaces$ ls -lih
total 8.0K
268975 -rw-r--r-- 2 mi-usuario mi-usuario 2.0K 2011-09-16 20:06 passwd.backup
268975 -rw-r--r-- 2 mi-usuario mi-usuario 2.0K 2011-09-16 20:06 passwd.hard

Como podrás observar ambos tienen el mismo peso (2.0K) y el mismo número de inodo (268975), se creo un archivo identico al original. Si realizaramos un cambio en cualquiera de los 2 archivos se vería reflejado automáticamente en el otro.

Ahora vamos a crear un enlace suave tomando como referencia el archivo passwd.backup

mi-usuario@maquina:~/enlaces$ ln -s passwd.backup passwd.soft
mi-usuario@maquina:~/enlaces$ 

Listamos el contenido de la carpeta enlaces

mi-usuario@maquina:~/enlaces$ ls -lih
total 8.0K
268975 -rw-r--r-- 2 mi-usuario mi-usuario 2.0K 2011-09-16 20:06 passwd.backup
268975 -rw-r--r-- 2 mi-usuario mi-usuario 2.0K 2011-09-16 20:06 passwd.hard
283727 lrwxrwxrwx 1 mi-usuario mi-usuario   13 2011-09-16 20:18 passwd.soft -> passwd.backup

Como puedes darte cuenta se creo un archivo que apunta al archivo passwd.backup, sin embargo, a difererencia de los enlaces duros, los enlaces suaves tienen distinto inodo y tamaño con respecto al archivo original.

Por último vamos a borrar el archivo passwd.backup.

mi-usuario@maquina:~/enlaces$ rm  passwd.backup 
mi-usuario@maquina:~/enlaces$

Listamos el contenido del achivo passwd.hard

mi-usuario@maquina:~/enlaces$  cat passwd.hard

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
- - El resto de la salida se omite - -

El contenido del enlace duro continua intacto, ahora vamos a listar el contenido del enlace passwd.soft

mi-usuario@maquina:~/enlaces$  cat passwd.soft
cat: passwd.soft: No existe el fichero o el directorio
mi-usuario@maquina:~/enlaces$ ls
passwd.hard  passwd.soft

El intérprete nos dice que no existe el archivo aún cuando el link permanece ahí, sin embargo si volvemos a copiar el archivo a la carpeta, con el mismo nombre podrás ver que nuevamente el link suave tiene contenido.

mi-usuario@maquina:~/enlaces$ cp /etc/passwd passwd.backup
mi-usuario@maquina:~/enlaces$ cat passwd.soft 
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
- - El resto de la salida se omite - -


viernes, 9 de septiembre de 2011

Sesión 5 Ejercicio 5

Ejercicio 5: Realizar un script que construya dentro de la carpeta /home/usuario la siguiente estructura de carpetas(nodos, leaf) y archivos (child)

tree-view/
├── node1
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node10
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node2
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node3
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node4
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node5
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node6
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node7
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
├── node8
│   ├── childa
│   ├── childb
│   ├── childc
│   ├── childd
│   ├── childe
│   ├── childf
│   ├── childg
│   ├── childh
│   ├── leaf1
│   ├── leaf10
│   ├── leaf11
│   ├── leaf12
│   ├── leaf13
│   ├── leaf14
│   ├── leaf15
│   ├── leaf2
│   ├── leaf3
│   ├── leaf4
│   ├── leaf5
│   ├── leaf6
│   ├── leaf7
│   ├── leaf8
│   └── leaf9
└── node9
    ├── childa
    ├── childb
    ├── childc
    ├── childd
    ├── childe
    ├── childf
    ├── childg
    ├── childh
    ├── leaf1
    ├── leaf10
    ├── leaf11
    ├── leaf12
    ├── leaf13
    ├── leaf14
    ├── leaf15
    ├── leaf2
    ├── leaf3
    ├── leaf4
    ├── leaf5
    ├── leaf6
    ├── leaf7
    ├── leaf8
    └── leaf9

160 directories, 80 files

Sesión 6 Comandos para procesar texto

grep
Filtra y resalta el texto de un archivo mediante palabras clave

Ejemplo:
mi-usuario@maquina:~$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash


head 
Muestra las primeras líneas de un archivo (si no se le indica el número de líneas por default imprime 10)

Ejemplo:
mi-usuario@maquina:~$ head ~/.bashrc

.bash_history  .bash_logout   .bashrc      
carmeth@Toshiba-lap:~$ head .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoredups:ignorespace
mi-usuario@maquina:~$


tail
Muestra las últimas líneas de un archivo (si no se le indica el número de líneas por default imprime 10)

Ejemplo:
mi-usuario@maquina:~$ tail -n 5 /etc/passwd
rtkit:x:110:117:RealtimeKit,,,:/proc:/bin/false
haldaemon:x:114:124:Hardware abstraction layer,,,:/var/run/hald:/bin/false
mysql:x:115:125:MySQL Server,,,:/nonexistent:/bin/false
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
carmeth:x:1003:1004:carmeth,,,,:/home/carmeth:/bin/bash
mi-usuario@maquina:~$


wc
Cuenta el número de líneas, palabras y bytes de un archivo

Ejemplo:
mi-usuario@maquina:~$ wc /etc/passwd
  38   61 1969 /etc/passwd



sort
Ordena alfabéticamente las líneas de un archivo

Ejemplo:
mi-usuario@maquina:~$ sort /etc/passwd

avahi-autoipd:x:103:108:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:104:109:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
backup:x:34:34:backup:/var/backups:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
carmeth:x:1003:1004:carmeth,,,,:/home/carmeth:/bin/bash
couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
- - Se omite el resto de la salida de este comando - -




uniq
Omite las líneas repetidas de un archivo

Ejemplo:
mi-usuario@maquina:~$ cat archivo-repetido


Este es el contenido de archivo-repetido
esta línea se repite
esta línea se repite
esta línea ya no se repite
otra línea
otra línea
línea de contenido
línea de contenido



Ahora ejecutamos el comando uniq sobre este archivo para que omita las líneas repetidas
mi-usuario@maquina:~$ uniq archivo-repetido


Este es el contenido de archivo-repetido
esta línea se repite
esta línea ya no se repite
otra línea
línea de contenido


diff
Imprime las líneas que sean distintas entre 2 archivos 

Ejemplo:

mi-usuario@maquina:~$ cat archivo-repetido
Este es el contenido de archivo-repetido
esta línea se repite
esta línea se repite
esta línea ya no se repite 
otra línea
otra línea
línea de contenido
línea de contenido

mi-usuario@maquina:~$ cat archivo-repetido.backup
Este es el contenido de archivo-repetido.backup
esta línea se repite
esta línea se repite
esta línea ya no se repite 
otra línea **distinta**
otra línea
línea de contenido **cambiada**
línea de contenido

mi-usuario@maquina:~$ diff archivo-repetido archivo-repetido.backup 
1c1
< Este es el contenido de archivo-repetido
---
> Este es el contenido de archivo-repetido.backup
4a5
> otra línea **distinta**
6,7c7
< otra línea
< línea de contenido
---
> línea de contenido **cambiada**


cut
"Corta" dependiendo los campos y delimitadores que se le especifiquen

Ejemplo:
Para este ejemplo vamos a utilizar el archivo passwd, el cual esta separado por columnas, demitadas por el caracter : ahora veamos como se utiliza el comando cut
mi-usuario@maquina:~$ cut -d: -f 1 /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
- - El resto de la salida se omite - -

Ahora prueba utilizando otros delimitadores y otros campos



Sesión 6 Redireccionamiento de Entrada/Salida

-Entrada estándar (STDIN) : Teclado

-Salida estándar (STDOUT) : Pantalla

-Error estándar (STDERR) : Pantalla

A continuación se muestra una tabla con los operadores de redirección:

Operador
Acción
>
Redirecciona la salida a un archivo
>>
Agrega la salida a un archivo
2>
Redirecciona la salida de error estándar a un archivo
2>>
Agrega a un archivo la salida de error estándar
<
Envia un archivo como entrada de un comando



Veamos algunos ejemplos:

En este ejemplo la salida del comando cat se redireccionará al archivo passwd-backup (si el archivo no existe lo crea). 
mi-usuario@maquina:~$ cat /etc/passwd > passwd-backup 
mi-usuario@maquina:~$

Ahora vamos a ver el contenido del archivo passwd-backup

mi-usuario@maquina:~$ cat passwd-backup

cat passwd-backup
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
- - El resto de la salida de este comando se omite - -

Vamos a agregar contenido al archivo passwd-backup
mi-usuario@maquina:~$ cat /etc/hosts >> passwd-backup 
mi-usuario@maquina:~$


Si vuelves a leer el contenido del archivo passwd-backup encontrarás que se agregó el contenido del archivo /etc/hosts, hay que fijarnos que el operador que utizamos fue el de agregar la salida (>>), si hubieramos ocupado el operador de redirección de la salida (>) el contenido del archivo passwd-backup  se hubiera sobrescrito, es decir el contenido actual (del archivo /etc/passwd) se borraría y se reemplazaría por el contenido del archivo nuevo (/etc/hosts).

Ahora vamos a producir a propósito un error, vamos a utilizar el comando touch sin argumentos, por lo cual nos debería salir un error en pantalla (STDERR), pero lo vamos a redireccionar a un archivo.


mi-usuario@maquina:~$ touch 2>  archivo-errores
mi-usuario@maquina:~$ 

A continuación vamos a abrir el contenido del archivo archivo-errores:


mi-usuario@maquina:~$ cat archivo-errores
touch: falta un archivo como argumento
Pruebe `touch --help' para más información.

Como te puedes dar cuenta el contenido de archivo-errores es el error producido por el comando touch, solo que se ha redireccionado a un archivo. Ahora prueba agregando (2>>) el error estandar que produce el comando mkdir al archivo archivo-errores.

Ahora vamos a ver como pasar un archivo como entrada estándar a un comando:

Primero vamos a crear un archivo con el mensaje "Texto dentro del archivo mensaje ":
mi-usuario@maquina:~$ echo "Texto dentro del archivo mensaje" > mensaje
mi-usuario@maquina:~$

Leemos el contenido de ese archivo para checar que el contenido se haya guardado correctamente:

mi-usuario@maquina:~$ cat mensaje

Texto dentro del archivo mensaje

Ahora vamos a pasarle el archivo mensaje como entrada estándar al comando cat, el cual leera el contenido de ese archivo:
mi-usuario@maquina:~$ cat < mensaje

Texto dentro del archivo mensaje

Como te darás cuenta leímos el contenido del archivo mensaje, ahora prueba el comando anterior con los comandos less y echo.

Piping

El piping es redireccionar la salida de un comando como entrada de otro comando, estos comandos se redireccionan mediante la tecla pipe ( | ), yo la escribo prsionando la tecla ALTGR+2 pero puede variar dependiendo de la distriución de cada teclado:

comando-1 |  comando-2

Veamos unos ejemplos:

En este ejemplo la salida del comando echo (pantalla) la vamos a redirecionar como entrada del comando cat
mi-usuario@maquina:~$ echo "este mensaje se redirecciona al comando cat" | cat
este mensaje se redirecciona al comando cat

El siguiente ejemplo la salida del comando cat (pantalla) la vamos a redireccionar como entrada del comando less
mi-usuario@maquina:~$ cat /etc/passwd | less
- - Inicio de salida omitida - -
pulse:x:109:114:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:110:117:RealtimeKit,,,:/proc:/bin/false
saned:x:111:118::/home/saned:/bin/false
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
gdm:x:113:120:Gnome Display Manager:/var/lib/gdm:/bin/false
eddye:x:1000:1000:eddye,,,:/home/eddye:/bin/bash
haldaemon:x:114:124:Hardware abstraction layer,,,:/var/run/hald:/bin/false
zend:x:1001:1001::/home/eddye/Escritorio/ZendServer-5.1.0_Tarball_B7-php5.3.5-linux-glibc23-x86_64/usr/zend/gui/lighttpd:/sbin/nologin
mysql:x:115:125:MySQL Server,,,:/nonexistent:/bin/false
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
carmeth:x:1003:1004:carmeth,,,,:/home/carmeth:/bin/bash
(END)