Practica 4 FITI Linux 2020

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

UNIVERSIDAD CATÓLICA DE SANTA MARÍA


ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

SESIÓN 4:

Comandos principales de la distribución de


Linux

I
OBJETIVOS

• Conocer el manejo del sistema de archivos de Raspbian


• Manipular los archivos y directorios.
• Cambiar los permisos de los archivos y directorios
• Visualizar el contenido de los archivos

• Conocer la manipulación de archivos que tengan la información estructurada en


campos.
• Crear copias de seguridad de los ficheros.
• Comprimir y descomprimir ficheros
• Construir Bloques de comandos
• Conocer y aplicar los caracteres comodines
• Conocer y aplicar la formación de expresiones regulares
Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

II
MARCO TEORICO
Archivos

Bajo la mayoría de los sistemas operativos existe el concepto de archivo (fichero), el cual
es un conjunto de información al que se le ha asignado un nombre. Cualquier cosa salvada
en el disco es guardada en un archivo individual.

Ejemplos:

Un mensaje de correo, un programa que puede ser ejecutado.


No hay un formato estándar para los nombres de los ficheros como lo hay en MS-DOS y
en otros sistemas operativos; en general estos pueden contener cualquier carácter (excepto
/ -rutas de ficheros), y están limitados a 256 caracteres de longitud.

Tres son los tipos de archivos:

• Archivos de datos: contienen información que suele ser almacenada, recuperada y


manipulada de acuerdo con las necesidades del usuario.
• Archivos de programa: contienen todas las instrucciones que permitirán al computador
realizar las tareas determinadas. Su complejidad dependerá del tipo de tarea
demandada; desde las más sencillas, que pueden constar tan sólo de una línea, hasta las
más sofisticadas.

• Archivos de directorios: mantienen información de todos los archivos del disco.

Directorios

Un directorio es simplemente una colección de ficheros. Puede ser considerado como una
"carpeta" que contiene muchos ficheros diferentes. Los directorios también tienen nombre
con el que los podemos identificar. Además, los directorios mantienen una estructura de
árbol; es decir, directorios pueden contener otros directorios.

Un fichero puede ser referenciado por su nombre con camino, el cual esta constituido por
su nombre, antecedido por el nombre del directorio que lo contiene.

Ejemplo:

Supongamos que Larry tiene un directorio de nombre papers que contiene tres ficheros:
history-final, english-lit y masters-thesis. (Cada uno de los tres ficheros contiene
información sobre tres de los proyectos en los que Larry esta trabajando). Para referirse al
fichero english-lit, Larry puede especificar su camino:

papers/english-lit

Como puede ver, el directorio y el nombre del fichero van separados por un carácter /. Por
esta razón, los nombres de fichero no pueden contener este carácter. Los usuarios de

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

MS-DOS encontraran esta convención familiar, aunque en el mundo MS-DOS se usa el


carácter \).
Como hemos mencionado, los directorios pueden anidarse uno dentro de otro.
Ejemplo:
Supongamos que Larry tiene otro directorio dentro de papers llamado notes y dentro de
este último existe otro llamado cheat-sheet. El camino de este fichero seria

papers/notes/cheat-sheet

Por lo tanto, el camino realmente es la "ruta" que se debe tomar para localizar a un fichero.
El directorio sobre un subdirectorio dado es conocido como el directorio padre. Aquí, el
directorio papers es el padre del directorio notes.
El árbol de directorios

La mayoría de los sistemas UNIX tienen una distribución de ficheros estándar, de forma
que recursos y ficheros puedan ser fácilmente localizados. Esta distribución forma el árbol
de directorios, el cual comienza en el directorio "/", también conocido como "directorio
raíz". Directamente por debajo de / hay algunos subdirectorios importantes: /bin, /etc, /dev
y /usr, entre otros. Estos a su vez contienen otros directorios con ficheros de configuración
del sistema, programas, etc.

En particular, cada usuario tiene un directorio "home". Este es el directorio en el que el


usuario guardara sus ficheros. En los ejemplos anteriores, todos los ficheros de Larry
(como cheat-sheer y history-final) estaban contenidos en el directorio home de Larry.
Usualmente, los directorios home de los usuarios cuelgan de /home y son nombrados con
el nombre del usuario al que pertenecen.

Por lo tanto, el directorio "home" de Larry es /home/larry.

En la figura 3.1 se muestra un árbol de directorio de ejemplo. Este debería darle una idea
de como esta organizado en su sistema el árbol de directorios. Esto podría variar algo.

/ bin
dev
etc
home larry
sam
lib
proc
tmp
usr X386
bin
emacs
etc
g++-
include
include
lib
local bin
emacs
etc
Lib
man

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

spool
src linux tmp

Figura 2.1: Típico árbol de directorios Unix (resumido).

Directorio de trabajo actual

En cualquier momento, las órdenes que teclee al intérprete de comandos son dadas en
términos de su directorio de trabajo actual. Puede pensar en su directorio actual de trabajo
como en el directorio en el que actualmente esta "situado". Cuando entra en el sistema, su
directorio de trabajo se inicializa a su directorio home, para el ejemplo sería /home/larry.
En cualquier momento que referencie a un fichero, puede hacerlo en relación a su directorio
de trabajo actual, en lugar de especificar el camino completo del fichero.
Ejemplo:

Larry tiene el directorio papers, y papers contiene el fichero history-final. Si Larry quiere
echar un vistazo a ese fichero, puede usar la orden

/home/larry# more /home/larry/papers/history-final


La orden more simplemente muestra el fichero, pantalla a pantalla. Pero, como el directorio
de trabajo actual de Larry es /home/larry, podría haberse referido al fichero de forma
relativa a su directorio de trabajo actual. La orden seria:

/home/larry# more papers/history-final

Por lo tanto, si comienza el nombre de un fichero (como papers/final) con un carácter


distinto a "/", el sistema supone que se esta refiriendo al fichero con su posición relativa a
su directorio de trabajo. Esto es conocido como camino relativo.

Por otra parte, si comienza el nombre del fichero con "/", el sistema interpreta esto como
un camino completo, es decir, el camino al fichero completo desde el directorio raíz, /. Esto
es conocido como camino absoluto.

Refiriéndose al directorio home

El directorio "home" puede ser referenciado usando el carácter de la tilde ( ~ ).

Ejemplo, la orden

/home/larry$ more ~/papers/history-final

es equivalente a

/home/larry$ more /home/larry/papers/history-final

El carácter "~" es simplemente sustituido por el intérprete de comandos, con el nombre del
directorio home. Además, también puede especificar otros directorios home de usuarios
con la tilde. El camino "~karl/letters" es traducido por el intérprete de órdenes a

Mgter. José Esquicha Tejada, Ing. Jorge Martinez Muñoz


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

"/home/karl/letters" (si /home/karl es el directorio home de karl). El uso de la tilde es


simplemente un atajo; no existe ningún directorio llamado "~", es simplemente una ayuda
sintáctica proporcionada por el intérprete de comandos.

Comprimir y descomprimir

El efecto de la operación de comprensión hace que el tamaño del archivo disminuya. Del
mismo modo, para que un archivo comprimido pueda tener el tamaño original implica
realizar la operación de descompresión. Para comprimir un archivo se tiene un conjunto
utilitarios tales como gzip, bzip2, zip, etc., y los correspondientes utilitarios que
descomprimen los anteriores formatos son: gunzip, bunzip2 y unzip.

Las operaciones de empaquetar y compresión se utilizan con frecuencia para


efectuar copias de seguridad o backups.

tar

El comando tar permite empaquetar ficheros. Permite incluir todos los archivos juntos en
un mismo archivo, preservando las estructuras de directorios y permisos de los mismos.

Generalmente se usa para sacar backups. Si empaqueto dos archivos de 2 Megabytes el


resultado será un archivo de 4 megabytes.

El formato del comando tar es:

tar <opciones> <fichero1> <fichero2> ...<ficheroN>

donde:

<fichero1> hasta <ficheroN> : es la lista de ficheros a añadir o extraer


del archivo.
<opciones>
-c para crear un nuevo fichero, se le indica que se va a empaquetar.
-v muestra línea por línea lo que está empaquetando, muestra los nombres de los
ficheros según se van empaquetando.
-f para indicar que lo siguiente a él es el nombre del archivo. -x
para indicar que se va a desempaquetar.
-t muestra lo que hay en el archivo empaquetado, sin desempaquetarlo.

Las operaciones que se pueden realizar con tar son empaquetado y desempaquetado.

IV
ACTIVIDADES

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

01. Encienda su computador.

02. Ingrese al Linux

3. Ingrese con el nombre de su usuario asignado por su profesor y su correspondiente


password.

04. Ingrese cada uno de los siguientes ejemplos y observe lo que sucede

Comandos para directorios

pwd: muestra el directorio de trabajo actual.

Ejemplo:
/home/larry$ pwd ↵

mkdir: comando que permite crear directorios.


Ejemplo: en su directorio home cree los directorios textos, gráficos y personal.

/home/larry$ mkdir textos


/home/larry$ mkdir graficos personal crea dos directorios la mismo tiempo
/home/larry$ mkdir papers

ls Muestra información sobre los ficheros o directorios indicados ordenados


alfabéticamente.

Sintaxis: ls [opciones] <fichero1> <fichero2> ...<ficheroN>

Donde <fichero1> a <ficheroN> son los ficheros o directorios a listar.

Opciones:
-F usada para mostrar información sobre el tipo de fichero. Añade el carácter /
a cada nombre si son subdirectorios, un “*” si es un fichero ejecutable.
No añade nada, si es un fichero normal, es decir no es ni un directorio ni
un ejecutable.
-l da un listado "largo" incluyendo tamaño, propietario, permisos, etc. -r
muestra el contenido ordenado de forma inversa.
-a muestra los archivos ocultos (empiezan con . - .term/)

Ejemplo:

/home/larry$ ls ↵
/home/larry$ ls –l
/home/larry$ ls –r ↵
/home/larry$ ls –a ↵
/home/larry$ ls –F ↵
/home/larry$ ls ↵
/home/larry$ ls /etc ↵
/home/larry$ ls -lF ↵

cd Cambia el directorio de trabajo actual.

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

Sintaxis: cd <directorio>

Donde <directorio> es el directorio al que cambiamos. ("." se refiere al directorio


actual, ".." al directorio padre.)
Ejemplo:

/home/larry$ cd papers
↵ /home/larry/papers$

Como se puede ver, la línea de comandos de Larry cambia para mostrar su directorio
actual de trabajo. Ahora que ya esta en el directorio papers puede echarle un vistazo a
su fichero history-final con el comando:

/home/larry/papers$ more history-final

Ahora Larry esta en el subdirectorio papers, para volver al directorio padre de este,
usara la orden

/home/larry/papers$ cd
.. /home/larry$

(Dese cuenta del espacio entre "cd" y ".."). Cada directorio tiene una entrada de nombre
".." la cual se refiere al directorio padre. De igual forma, existe en cada directorio la
entrada "." la cual se refiere a si mismo. Así que el comando

/home/larry/papers$ cd
. /home/larry$
nos deja donde estamos.

También pueden usarse nombres con el camino absoluto en la orden cd. Para ir al
directorio de Karl con cd, introduciremos la siguiente orden.

/home/larry/papers$ cd
/home/karl /home/karl$

También, usando cd sin argumentos nos llevara a nuestro directorio de origen.

/home/karl$ cd
/home/larry$

rmdir Esta orden borra directorios vacíos. Al usar rmdir, el directorio de trabajo
actual no debe de estar dentro del directorio a borrar.

Sintaxis: rmdir <dir1> <dir2> ...<dirN>

Donde <dir1> a <dirN> son los directorios a borrar.

Ejemplo:

/home/larry$ rmdir /home/larry/papers borra el directorio /home/larry/papers si esta


vacío.

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

/home/larry$mkdir eliminar ↵
/home/larry$cd eliminar ↵
/home/larry/eliminar$mkdir borra borra1 ↵
/home/larry$cd ↵
/home/larry$rmdir eliminar ↵ (no elimina porque no esta vacio)
/home/larry$mkdir eliminar/borra eliminar/borra1 eliminar ↵ (1)

/home/larry$rm -r eliminar ↵ es equivalente a (1)

Creación de archivos

ed: permite crear archivos.

Sintaxis: ed <fichero1>

Donde <fichero1>es el fichero a crear.

Ejemplo: en el directorio textos creado anteriormente crear el archivo ejemplos:

/home/larry$cd textos ↵
/home/larry/textos$pwd ↵
/home/larry$de ejemplos ↵
para introducir el texto presione a ↵
introduzca el siguiente texto al archivo:
Esta orden facilita el paso al modo inserción de texto, añadiendo nuevo texto al
que ya tuviese.
Escriba el texto que contendrá en archivo ejemplos.
Una vez que la posición del cursor está en la línea siguiente, teclee . ↵
ed entiende el punto sólo en una línea en blanco, como una instrucción que
ordena el retorno al modo orden.
Para grabar el archivo sólo tendrá que teclear w ↵ .
ed devolverá en su pantalla el número de caracteres escritos en disco.
q ↵ devuelve el prompt de su shell.
a ↵ para retornar a modo inserción y seguir escribiendo

Comandos para archivos

cp: Copia fichero(s) en otro fichero o directorio.

Sintaxis: cp <fichero1> <fichero2> ...<ficheroN> <destino>

Donde <fichero1> a <ficheroN> son los ficheros a copiar.


<destino> es el fichero o directorio destino.

Ejemplo:

/home/larry$ cp /etc/termcap termcap↵


/home/larry$ ls -l ↵
/home/larry$ cd personal ↵

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

/home/larry/personal$cp /etc/shells shells↵


/home/larry/personal$ ls –F ↵
/home/larry/personal$ cp shells bells ↵
/home/larry/ personal$ ls –F ↵
/home/larry/ personal$ cp ../bells joe ↵ copia el fichero ../bells al fichero o directorio joe.

Nótese como se usa el directorio "." para referirnos al directorio actual.

mv Mueve fichero(s) a otro fichero o directorio. Es equivalente a una copia seguida del
borrado del original. Puede ser usado para renombrar ficheros, como el comando MS-
DOS RENAME.

Sintaxis: mv <fichero1> <fichero2> ...<ficheroN> <destino>

Donde <fichero1> a <ficheroN> son los ficheros a "mover"


<destino> es el fichero o directorio destino.

Ejemplo:

/home/larry/personal$ mv joe
sells /home/larry/ personal$ ls –F
/home/larry/ personal$ cd ..
/home/larry$mv graficos figuras ↵
/home/larry$ls -l ↵

Nótese como joe ya no existe, en su lugar esta el fichero sells. Esta orden puede usarse
para renombrar ficheros, como acabamos de hacer, pero también para mover ficheros a
directorios diferentes.

Nota: mv y cp sobreescribiran los ficheros destino (si ya existen) sin consultar. Sea cuidadoso
cuando mueva un fichero a otro directorio: puede haber ya un fichero con el mismo nombre
que será sobrescrito.

rm Borra ficheros. Nótese que cuando los ficheros son borrados en UNIX, son
irrecuperables (a diferencia de MS-DOS, donde usualmente se puede recuperar un
fichero borrado).

Sintaxis: rm [opciones ]<fichero1> <fichero2> ...<ficheroN>

Donde <fichero1> a <ficheroN> son los nombres de los ficheros a borrar.

Opciones:
-i pedirá confirmación antes de borrar un fichero. -
r elimina recursivamente

Ejemplo:

/home/larry/personal$ rm -i /home/larry/ termcap


↵ /home/larry/personal$ rm bells sells

Mgter. José Esquicha Tejada


Laboratorio de Fundamentos de Infraestructura de Tecnología de la Información

/home/larry/personal$ ls –F

Viendo el contenidos de los ficheros

Las órdenes more y cat son usadas para ver el contenido de ficheros.

more Muestra el contenido de los ficheros indicados, una pantalla cada vez.

Sintaxis: more <fichero1> <fichero2> ...<ficheroN>

Donde <fichero1> a <ficheroN> son los ficheros a mostrar.

Ejemplo:

/home/larry/personal$ more shells ↵

Durante la ejecución de more pulse:


Space: para avanzar a la pagina siguiente.
b: para volver a la pagina anterior.
q: finalizará la ejecución de more.

cat Oficialmente usado para concatenar ficheros, cat también es usado para mostrar el
contenido completo de un fichero de una vez.

Sintaxis: cat <fichero1> <fichero2> ...<ficheroN>

Ejemplo:

/home/larry/personal$ cat /etc/termcap ↵

head permite visualizar las N primeras líneas del contenido de un archivo.

Ejemplo:

$ head –5 termcap .

tail permite visualizar las N últimas líneas del contenido de un archivo.

Ejemplo:

$ tail –9 termcap .

chmod permite modificar los permisos de un archivo. El propietario puede modificar


estos derechos, también el administrador del sistema.

Sintaxis:
chmod <permisos> nombre_archivo

donde:
<permisos> tienen la forma siguiente: rwx rwx rwx

Mgter. José Esquicha Tejada


Laboratorio de Arquitectura del Computador

r permiso de lectura 4
w permiso de escritura 2
x permiso de ejecución 1
7
Podrá observar que existen 3 grupos de rwx, estos corresponden a lo siguiente:

La primera corresponde a los usuarios u


La segunda corresponde al grupo g
Y la tercera a otros o

Ejemplo:

Para poder modificar se puede sumar el valor de los permisos para cada uno de los
grupos. Por lo tanto, si quisiéramos cambiar los permisos a rwxr-xr-- de un archivo
denominado ejemplo, se sumaría:

para usuario rwx 4+2+1=7


para grupo r-x 4+0+1=5
para otros r-- 4+0+0=4

Entonces, se tendría que escribir en el shell:

$chmod 754 ejemplo .

Otra forma de cambiar los permisos es utilizar las abreviaturas para los usuarios,
grupos y otros, además de:

+ para añadir el permiso -


para quitar el permiso

Ejemplo:

$chmod o+x ejemplo .


$chmod –w ejemplo .
$chmod 700 ejemplo .

umask los permisos asignados a un archivo cuando son creados dependen de una
variable denominada user mask. El permiso implícito por defecto suele tener el valor
rw-rw-rw- (modo 666).

Por ejemplo, si quisiéramos que nuestro modo por defecto para los archivos sea rw-r--
--- (modo 640), entonces:

666-640=26

por tanto se tendrá que


escribir: $umask 26

Empaquetar

Para empaquetar utilice la opción -c

Mgter. José Esquicha Tejada


Laboratorio de Arquitectura del Computador

Por ejemplo, el comando siguiente empaqueta todos los archivos del directorio actual.

$ tar -cvf backup.tar *

Desempaquetar

Para desempaquetar utilice la opción -x. Si tenemos un fichero .tar y queremos


desempaquetarlo entonces

$ tar -xvf backup.tar

El comando extraerá el fichero tar backup.tar en el directorio actual. Con ello hay
que tener cuidado debido a que esto puede ser peligroso a veces cuando se extraen
ficheros de un fichero tar, los ficheros antiguos se sobrescriben.

Por otra parte, antes de extraer ficheros tar es importante conocer donde se deben
desempaquetar los ficheros. Por ejemplo, digamos que se archivaron los siguientes
ficheros: /etc/hosts, /etc/group, y /etc/passwd. Si se uso el comando

# tar cvf backupetc.tar /etc/hosts /etc/group /etc/passwd

el nombre de directorio /etc se añadió al principio de cada nombre de fichero. Para


poder extraer los ficheros en la localización correcta, se necesitara utilizar los
siguientes comandos:

# cd /
# tar xvf backupetc.tar

Puesto que los ficheros se extraen con el nombre de camino almacenado en el


fichero de archivo. Sin embargo, si se archivaron los ficheros con los comandos

# cd /etc
# tar cvf backupetc hosts group passwd

Los nombres de directorio no se salvaron en el fichero de archivo. Por esto se


necesitará hacer "cd /etc" antes de extraer los ficheros. Como se puede ver, el cómo
haya sido creado un fichero tar marca una gran diferencia en cómo se extrae.
Entonces se hace necesario el conocer como están guardados los nombres de los
ficheros empaquetados y para ello podemos usar la opción -t del comando tar.

# tar -tvf backupetc.tar

gzip

Sirve para comprimir un archivo (la compresión se realiza a un solo fichero). Lo


que hace es crear un archivo con extensión gz. El formato es:

gzip <nombre del


fichero> $gzip mio
$gzip .9 prueba

Mgter. José Esquicha Tejada


Laboratorio de Arquitectura del Computador

el parámetro .9 indica que utilice el mayor factor de compresión.

La combinación de tar y gz es lo que permite el tener múltiples ficheros


comprimidos en un sólo archivo. Es decir, si empaquetamos un directorio con tar y
luego comprimimos ese archivo tar con gz, obtenemos un tar.gz comprimido con
múltiples ficheros.

$ tar cvf backup1.tar /etc

$ gzip -9 backup1.tar

Como resultado de aplicar estos comandos tendremos el archivo backup1.tar.gz

Para descomprimir y tener todos los archivos desempaquetados, deberemos aplicar


los siguientes comandos:

# gunzip backup1.tar.gz

# tar xvf backup1.tar

gunzip

Es usado para descomprimir un fichero comprimido con gzip. Es equivalente al


comando gzip -d.

bzip2

Con el mismo sistema de funcionamiento que gzip. Obtiene una mejor compresión
que el gzip, aunque tarda más en comprimir. La extensión que le coloca es bz2.

bunzip2

Con el mismo sistema de funcionamiento que gunzip

zip

Permite comprimir ficheros, directorios completos, directorios con recursividad. zip


es el programa destinado a hacer de Linux capaz de leer y escribir los ficheros en
formato .zip (generados por pkzip o winzip). Para comprimir todos los ficheros de
un directorio en un zip se haría:

$ zip mizip.zip *

Para comprimir este directorio y todos los que cuelguen del mismo:

$ zip -r mizip1.zip *
unzip
Permite la descompresión.

Mgter. José Esquicha Tejada


Laboratorio de Arquitectura del Computador

$ unzip mizip1.zip

LA TERMINAL COMO LA ENTRADA Y SALIDA ESTÁNDAR

Cuando estamos dentro del sistema usando la terminal bash, generalmente tecleamos
comandos para que sean ejecutados. El hecho de que estemos simplemente presionando el
teclado implica que estamos entrando datos al sistema mediante el teclado. Cuando en
ejemplos anteriores hemos usado el comando ls, ha aparecido en pantalla un listado de
archivos y directorios, claramente el sistema ha producido salida de datos mediante el
monitor.

Hemos puesto dos ejemplos, el teclado de la terminal como vía para entrar datos al sistema,
y el monitor de la terminal como vía de salida de los datos. Pero no son, ni mucho menos,
las únicas posibilidades. Los distintos puertos físicos del ordenador pueden ser vía de
entrada o de salida de datos, igualmente con la tarjeta de sonido, módem, tarjeta de red,
etc.

Los sistemas UNIX (y por ello también los Linux), son especialmente conocidos por su
facilidad y eficiencia para pasar datos entre programas o entre programas y dispositivos,
siendo esta una de sus múltiples ventajas.

Otros conceptos importantes dentro de estos son los de entrada estándar y salida estándar
(stdin y stdout respectivamente). Por defecto, stdin apunta al teclado (los datos, se toman
generalmente por defecto del teclado), y stdout apunta a la pantalla (por defecto los
programas suelen enviar la salida por pantalla).

COMANDOS PRINCIPALES ASOCIADOS CON LA SALIDA

echo

Este comando nos permite “imprimir” cosas en la pantalla.

Ejemplo:
$echo “Hola, usuario de Linux”
Hola, usuario de Linux

Como vemos, por defecto el comando echo recibe las cadenas de texto entre comillas
(simples o dobles), y saca por defecto a la pantalla lo que le pasamos como argumento;
aunque puede enviar la salida a otros sitio, como veremos más adelante.

cat

El comando cat tiene asociada la entrada al teclado por defecto, y la salida a la pantalla.
Así que si lo llamamos sin argumentos, simplemente tecleando cat, escribiendo algo y
pulsando ENTER, volverá a imprimir en pantalla cada línea que nosotros tecleemos:

$cat Escribo
esto Escribo
esto
Y escribo esto otro
Y escribo esto otro

Continuará hasta que lo detengamos presionando las teclas CONTROL + D.

El funcionamiento de cat puede parecernos poco útil, pero veamos ahora su funcionamiento
más común que es mostrar el contenido de un fichero:

$cat archivo

Este es el uso más frecuente para el comando cat, tomar como entrada un fichero y sacar
su contenido por la salida estándar, pero descubriremos después que se puede enviar el
contenido de un fichero por otras vías.

Los ficheros pueden ser objeto de entrada (leer su contenido) o de salida (escribir la salida
de un determinado comando a un fichero).

touch

Nos permite crear un fichero vacío con el nombre que nosotros le especifiquemos.

$touch miarchivo

REDIRECCIONANDO LA SALIDA DE UN COMANDO HACIA UN ARCHIVO

Redirecciona la salida de un comando a un archivo, si existe el archivo lo reemplaza.

4. Hace lo mismo pero respeta lo que tiene el archivo y al final le adiciona lo que
estamos redireccionando.

Ejemplo:

$ls –l > listado

Al ejecutar esto, la lista del contenido del directorio actual que el comando ls sacaría
normalmente por pantalla, se ha escrito en el fichero listado. Si el fichero no existía, se ha
creado, y si existía y tenía contenido, ha sido sobreescrito.

Ahora escribamos lo siguiente:

$echo hola >> listado

Lo que ocurre es que como listado es un fichero que ya existía y tenia contenido, la línea
se ha escrito al final del fichero. En caso de que listado no hubiera existido, el fichero se
creaba.

$date >> listado

En este caso la salida del comando date se agrega como la última línea del fichero listado.

Para ver el contenido del fichero listado podemos ejecutar

$cat listado Ó también $more listado


También podemos concatenar dos ó más archivos en uno, utilizando el comando cat.

Ejemplo:
$cat > archivo1
Este es el archivo 1
CTRL + D

$cat > archivo2


Este es el archivo2
CTRL + D

$cat archivo1 archivo2 > archivo3

Lo que obtendremos en achivo3 será el contenido de los archivos archivo1 y archivo2


uno detrás del otro. Verificamos el contenido de archivo3:

$cat archivo3

REDIRECCIONANDO LA ENTRADA DE UN COMANDO DESDE UN


ARCHIVO

c: Permite enviar lo que hay en un archivo, para que el comando trabaje con él.

Ejemplo:
$echo prueba > mensaje
$mail user2 < mensaje

En el ejemplo creamos el archivo mensaje y luego lo utilizamos y nos sirve como entrada
para enviar un mensaje al usuario user2.

REDIRECCIÓN DE ERRORES

Con cualquier orden que genere mensajes de error mostrado en la pantalla, podemos
redireccionar su salida a otro archivo utilizando el operador 2> o 2>>, dependiendo de si
lo que se quiere es crear o añadir datos al archivo respectivamente.

Ejemplo:
$ls –L /home/etc 2>log_error

CONSTRUCCIÓN DE BLOQUE DE COMANDOS

Pipes (Tuberías)

PIPES es la conexión de uno o más comandos de tal manera que la salida del primer
comando sea la entrada del segundo y así sucesivamente.

Ejemplo:
$echo hola | mail user2
$echo hola>file2
$mail user2<file2
$more file2 | mail user2
Comandos múltiples

Varios comando en una línea sepados por ;

Ejemplo:
$ cat mensaje ; ls $ cat mensaje
$ ls

Comandos relacionados

&& Ejecuta la primera orden y si finaliza con éxito, se ejecutará la segunda orden.

r: Ejecuta ambas órdenes, aunque la primera falle

Ejemplo:
$ ls /nuevo && more file2
$ ls /nuevo || more file1

Caracteres de generalización

Son comodines que reemplazan a caracteres

# El asterisco reemplaza 0 o más caracteres del nombre de un archivo o directorio


excepto el punto al inicio del nombre.

# Interrogación reemplaza 1 caracter ( 1 posición)

[ ] 1 caracter a excepción del punto al inicio del nombre. Define una clase de caracteres.
Dentro de esta clase se puede utilizar un guión “–“ entre los caracteres para poner
de relieve todos los caracteres en ese rango y se puede usar un signo de exclamación
“!” como primer caracter para negar la clase definida.

Ejemplo:
$ ls file [23]
$ ls file[1-3]
$ ls file[!1] $
ls file[!1-3] $
ls fi*
$ ls file?

diff

Compara dos archivos línea por línea y muestra todas las diferencias que hay. Si son
iguales no sale nada.

Ejemplo:
$ echo prueba1 >file3 $
echo prueba2>file4 $
diff file3 file4
BUSCAR ARCHIVOS

find

Recorre los directorios especificados generando una lista de archivos que satisfacen los
requerimientos.

Ejemplo:

$find /-name file* -print

Busca por nombre, cuando lo encuentra muestra por pantalla la ruta completa donde los
encontró.

Opciones:
-user selecciona los archivos que pertenecen al usuario que se indique a
continuación de -user.
-mtime n selecciona los archivos modificados hace n días.
-mtime –n selecciona los archivos modificados en los últimos n días.

FILTROS

Un filtro es un comando que procesa la entrada de un flujo de datos para producir la salida
de un flujo de datos. Por ejemplo tenemos el comando cat, sort , uniq, find,grep, etc.

sort

El comando sort toma como entrada líneas de texto (de nuevo leerá desde stdin si no se le
proporcionan nombres de ficheros en la línea de comandos), y devuelve la salida ordenada
a stdout.

Ejemplo:
$ sort
durazno
aceituna
queso
leche
naranja
ctrl+D

Con este filtro también puede ordenar las líneas de uno o varios archivos. Esta ordenación
no produce ninguna modificación en los archivos tratados.

Ejemplo:
$ sort arch3
$ sort arch3 –r

-r nos muestra ordenado en forma descendente.

uniq
La orden uniq lee su entrada estándar o una lista de nombres de archivos y escribe en su
salida estándar.
Remueve las líneas duplicadas de un archivo ordenado.
Por omisión uniq escribirá una instancia de cada línea de entrada que sea diferente a las
otras líneas (contiguas).

Ejemplo:
$echo Aqp>>arch3
$echo Aqp>>arch3
$uniq arch3 $echo
Num1>>arch3 $echo
Num1>>arch3 $echo
Num1>>arch3 $uniq
arch3

-c Muestra una cuenta de ocurrencias de las líneas únicas


-u Muestra sólo las líneas que no están repetidas en la entrada -d
Muestra sólo las líneas que están duplicadas en la entrada

$ uniq arch3 –c
$ uniq arch3 –u
$ uniq arch3 –d

grep

Permite buscar cadenas de caracteres en los archivos que le indiquemos. Devuelve toda la
línea donde encuentra la cadena.

Sintaxis:
grep <patrón> <fichero1> <fichero2> ...<ficheroN>
Donde:
<patrón> es una expresión regular
<fichero1> a <ficheroN> son los ficheros donde se va a buscar.

Ejemplo:
$ grep Aqp arch3

En el caso de que el elemento que desee buscar se componga de más de una palabra, ese
elemento debe colocarlo entre comillas dobles.

$ grep “hola mundo” file3

wc

Esta orden es un contador de líneas, palabras y caracteres de un archivo

-l visualiza el número de líneas -w


visualiza el número de palabras
-c visualiza el número de caracteres

Ejemplo:
$wc -l arch3
du

Muestra el tamaño del archivo


-m para mostrar el tamaño en megas

Ejemplo:
$ du arch3

sed

Significa Stream Editor, es decir, un editor de flujos. El comando sed nos va a permitir
editar flujos de datos pasados a través de una tubería (pipe) por ejemplo. Es muy útil para
hacer modificaciones en flujos de datos o ficheros de texto. Estas modificaciones pueden
ser añadir o borrar una línea, o un conjunto de ellas, buscar y reemplazar patrones.

La sintaxis de sed normalmente es:


sed s/patrón/reemplazo/opción

pero también acepta la siguiente sintaxis:


sed s:patrón:reemplazo:opción

Ejemplo:
$cat > file1
ucsm
P.P. de Ingeniería de Sistemas – ucsm
P.P. de Ingeniería Industrial - ucsm
P.P. de Ingeniería Electrónica – ucsm
CTRL+D

$cat file1 | sed s/ucsm/ucsm.edu.pe/g > file1.reemplazado


$cat file1.reemplazado

EXPRESIONES REGULARES

Una expresión regular define el conjunto de una o más cadenas de caracteres. Varios
comandos de Linux utilizan expresiones regulares para buscar y reemplazar cadenas de
texto, incluidos ed, vi, grep, sed y ls.

Las expresiones regulares son una herramienta para definir patrones de búsqueda y
reemplazo. En ellas se definen lo que llamaremos átomos que serán las partes que
buscaremos. En los patrones podemos hacer referencias a “un carácter cualquiera”, “el
comienzo de línea”, “el final de línea” y demás. Para ello utilizamos caracteres reservados
conocidos como wildcards.

Vamos a ver un pequeño ejemplo sobre como usar dos wildcars muy comunes, el de
“principio de línea” (^) y el de “final de línea” ($).

Por ejemplo, para añadir un texto al comienzo de todas las líneas podemos hacer:

$ cat file1 | sed ´s/^/Texto al comienzo:/g´ > file1.nuevo


Lo que hace es reemplazar el comienzo de cada línea con ese texto. Hemos entrecomillado
la expresión para no tener problemas con el Shell. Es una buena costumbre entrecomillar
las expresiones de sed.

Veamos el mismo ejemplo pero al contrario. Queremos añadir algún texto al final de todas
las líneas de un flujo de datos:

$ cat file1 | sed ´s/$/Esto se añade al final/g´ > file2

Cualquier carácter que queremos que sed trate como un literal en lugar de un wildcard, le
añadiremos un \ delante y diremos que lo hemos escapado. Entonces, ¿Cómo decirle a sed
que un \ es un literal y no es el carácter de escape?, pues tenemos que escapar el \ quedando:
Ejemplos:

ls –l | grep ^d
Nos muestra solo los directorios de la ubicación actual.

ls | grep [0-9]$
Nos muestra todos los archivos del directorio actual cuyo nombre termine en un número
del cero al 9.

V
EJERCICIOS
• Cree dentro de la Carpeta Donwload (descargas) una carpeta llamada UNSA,
UCSM y USP, adicionalmente cree dentro de cada carpeta un archivo con el
nombre de Juan Perez (UNSA), Fulanito Ramirez (UCSM), Pedro Picapiedra
(USP).
• Copie la lista de archivos y/o directorios que se han creado anteriormente en su
directorio home.

• Empaquete los archivos que hay en el directorio /home. En un archivo llamado


copiahome.tar
• Mostrar todo lo que hay en el archivo llamada copiahome.tar sin
desempaquetarlo.
• Comprima todos los archivos que hay en /dev con el nombre copiadev.
• Comprima todos los archivos que empiezan con la letra a dentro de su usuario en
un archivo llamado comienzaa.tar.gz

Todos los ejercicios siguientes ejecútelos desde su home.


• Crear redireccionando la salida del comando ls los siguientes archivos en su
directorio home
o Pract01, pract02, pract03, practica, pract01ica, pract02ica, pract03ica
• Adicionar al final de practica la salida de date.
• Colocar los archivos cuyo nombre empiece con c del directorio /usr/bin en un
archivo llamado binlistado. Utilice redireccionamiento.
• Ver los directorios de raíz por páginas.
VII
BIBLIOGRAFIA Y REFERENCIAS

• Blanco, V., “Linux Instalación, Administración y uso del Sistema”, Ed. Ra-Ma,
México, 2010.

Mgter. José Esquicha Tejada

También podría gustarte