Linux Comandos
Linux Comandos
Linux Comandos
SESIN 5:
Raspbian en Raspberry PI 2
I
OBJETIVOS
II
MARCO TEORICO
Archivos
Bajo la mayora de los sistemas operativos existe el concepto de archivo (fichero), el cual
es un conjunto de informacin 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 estndar para los nombres de los ficheros como lo hay en MS-DOS y
en otros sistemas operativos; en general estos pueden contener cualquier carcter (excepto
/ -rutas de ficheros), y estn limitados a 256 caracteres de longitud.
Tres son los tipos de archivos:
Directorios
Un directorio es simplemente una coleccin de ficheros. Puede ser considerado como una
"carpeta" que contiene muchos ficheros diferentes. Los directorios tambin tienen nombre
con el que los podemos identificar. Adems, 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
informacin 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 carcter /. Por
esta razn, los nombres de fichero no pueden contener este carcter. Los usuarios de
bin
dev
etc
home
lib
proc
tmp
usr
larry
sam
X386
bin
emacs
etc
g++include
include
lib
local
bin
emacs
etc
Lib
man
Mgter. Jos Esquicha Tejada, Ing. Jorge Martinez Muoz
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 aadir o extraer
<opciones>
del archivo.
-c
para crear un nuevo fichero, se le indica que se va a empaquetar.
-v muestra lnea por lnea lo que est empaquetando, muestra los nombres de los
ficheros segn 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
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 lnea 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.
Tambin 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$
Tambin, usando cd sin argumentos nos llevara a nuestro directorio de origen.
/home/karl$ cd
/home/larry$
rmdir Esta orden borra directorios vacos. 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
vaco.
Mgter. Jos Esquicha Tejada, Ing. Jorge Martinez Muoz
/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
/home/larry$rm -r eliminar
(1)
es equivalente a (1)
Creacin 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 insercin de texto, aadiendo nuevo texto al
que ya tuviese.
Escriba el texto que contendr en archivo ejemplos.
Una vez que la posicin del cursor est en la lnea siguiente, teclee .
ed entiende el punto slo en una lnea en blanco, como una instruccin que
ordena el retorno al modo orden.
Para grabar el archivo slo tendr que teclear w .
ed devolver en su pantalla el nmero de caracteres escritos en disco.
q devuelve el prompt de su shell.
a para retornar a modo insercin y seguir escribiendo
Ejemplo:
/home/larry$ cp /etc/termcap termcap
/home/larry$ ls -l
/home/larry$ cd personal
Mgter. Jos Esquicha Tejada, Ing. Jorge Martinez Muoz
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
Ntese como joe ya no existe, en su lugar esta el fichero sells. Esta orden puede usarse
para renombrar ficheros, como acabamos de hacer, pero tambin 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. Ntese 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 confirmacin antes de borrar un fichero. r elimina recursivamente
Ejemplo:
/home/larry/personal$ rm -i /home/larry/ termcap
/home/larry/personal$ rm bells sells
/home/larry/personal$ ls F
r
w
x
permiso de lectura
permiso de escritura
permiso de ejecucin
4
2
1
7
Podr observar que existen 3 grupos de rwx, estos corresponden a lo siguiente:
La primera corresponde a los usuarios
La segunda corresponde al grupo
Y la tercera a otros
u
g
o
Ejemplo:
Para poder modificar se puede sumar el valor de los permisos para cada uno de los
grupos. Por lo tanto, si quisiramos cambiar los permisos a rwxr-xr-- de un archivo
denominado ejemplo, se sumara:
para usuario rwx 4+2+1=7
para grupo r-x 4+0+1=5
para otros r-- 4+0+0=4
Entonces, se tendra que escribir en el shell:
$chmod 754 ejemplo .
Otra forma de cambiar los permisos es utilizar las abreviaturas para los usuarios,
grupos y otros, adems de:
+ para aadir 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 implcito por defecto suele tener el valor
rw-rw-rw- (modo 666).
Por ejemplo, si quisiramos 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 opcin -c
Mgter. Jos Esquicha Tejada, Ing. Jorge Martinez Muoz
Por ejemplo, el comando siguiente empaqueta todos los archivos del directorio actual.
$ tar -cvf backup.tar *
Desempaquetar
Para desempaquetar utilice la opcin -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
gzip
Sirve para comprimir un archivo (la compresin se realiza a un solo fichero). Lo
que hace es crear un archivo con extensin gz. El formato es:
gzip <nombre del
fichero> $gzip mio
$gzip .9 prueba
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 compresin
que el gzip, aunque tarda ms en comprimir. La extensin 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 hara:
$ zip mizip.zip *
Para comprimir este directorio y todos los que cuelguen del mismo:
$ zip -r mizip1.zip *
unzip
Permite la descompresin.
$ unzip mizip1.zip
Otros conceptos importantes dentro de estos son los de entrada estndar y salida estndar
(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 ms 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 lnea que nosotros tecleemos:
$cat Escribo
esto Escribo
esto
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 sacara
normalmente por pantalla, se ha escrito en el fichero listado. Si el fichero no exista, se ha
creado, y si exista y tena contenido, ha sido sobreescrito.
Ahora escribamos lo siguiente:
$echo hola >> listado
Lo que ocurre es que como listado es un fichero que ya exista y tenia contenido, la lnea
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 lnea del fichero listado.
Para ver el contenido del fichero listado podemos ejecutar
$cat listado tambin $more listado
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.
REDIRECCIN 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 aadir datos al archivo respectivamente.
Ejemplo:
$ls L /home/etc 2>log_error
Comandos mltiples
Varios comando en una lnea 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:
Ejemplo:
$ ls /nuevo && more file2
$ ls /nuevo || more file1
Caracteres de generalizacin
Son comodines que reemplazan a caracteres
#
[]
1 caracter a excepcin del punto al inicio del nombre. Define una clase de
caracteres. Dentro de esta clase se puede utilizar un guin entre los caracteres
para poner de relieve todos los caracteres en ese rango y se puede usar un signo de
exclamacin ! 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 lnea por lnea 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
continuacin de -user.
-mtime n selecciona los archivos modificados hace n das.
-mtime n selecciona los archivos modificados en los ltimos n das.
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 lneas de texto (de nuevo leer desde stdin si no se le
proporcionan nombres de ficheros en la lnea de comandos), y devuelve la salida ordenada
a stdout.
Ejemplo:
$ sort
durazno
aceituna
queso
leche
naranja
ctrl+D
Con este filtro tambin puede ordenar las lneas de uno o varios archivos. Esta ordenacin
no produce ninguna modificacin en los archivos tratados.
Ejemplo:
$ sort arch3
$ sort arch3 r
-r
uniq
La orden uniq lee su entrada estndar o una lista de nombres de archivos y escribe en su
salida estndar.
Remueve las lneas duplicadas de un archivo ordenado.
Por omisin uniq escribir una instancia de cada lnea de entrada que sea diferente a las
otras lneas (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 lneas nicas
-u Muestra slo las lneas que no estn repetidas en la entrada -d
Muestra slo las lneas que estn 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
lnea donde encuentra la cadena.
Sintaxis:
grep <patrn> <fichero1> <fichero2> ...<ficheroN>
Donde:
<patrn> es una expresin 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 ms de una palabra, ese
elemento debe colocarlo entre comillas dobles.
$ grep hola mundo file3
wc
Esta orden es un contador de lneas, palabras y caracteres de un archivo
-l visualiza el nmero de lneas -w
visualiza el nmero de palabras
-c
visualiza el nmero de caracteres
Ejemplo:
$wc -l arch3
du
Muestra el tamao del archivo
-m para mostrar el tamao 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 travs de una tubera (pipe) por ejemplo. Es muy til para
hacer modificaciones en flujos de datos o ficheros de texto. Estas modificaciones pueden
ser aadir o borrar una lnea, o un conjunto de ellas, buscar y reemplazar patrones.
La sintaxis de sed normalmente es:
sed s/patrn/reemplazo/opcin
pero tambin acepta la siguiente sintaxis:
sed s:patrn:reemplazo:opcin
Ejemplo:
$cat > file1
ucsm
P.P. de Ingeniera de Sistemas ucsm
P.P. de Ingeniera Industrial - ucsm
P.P. de Ingeniera Electrnica ucsm
CTRL+D
$cat file1 | sed s/ucsm/ucsm.edu.pe/g > file1.reemplazado
$cat file1.reemplazado
EXPRESIONES REGULARES
Una expresin regular define el conjunto de una o ms 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 bsqueda y
reemplazo. En ellas se definen lo que llamaremos tomos que sern las partes que
buscaremos. En los patrones podemos hacer referencias a un carcter cualquiera, el
comienzo de lnea, el final de lnea y dems. Para ello utilizamos caracteres reservados
conocidos como wildcards.
Vamos a ver un pequeo ejemplo sobre como usar dos wildcars muy comunes, el de
principio de lnea (^) y el de final de lnea ($).
Por ejemplo, para aadir un texto al comienzo de todas las lneas podemos hacer:
$ cat file1 | sed s/^/Texto al comienzo:/g > file1.nuevo
Lo que hace es reemplazar el comienzo de cada lnea con ese texto. Hemos entrecomillado
la expresin para no tener problemas con el Shell. Es una buena costumbre entrecomillar
las expresiones de sed.
Veamos el mismo ejemplo pero al contrario. Queremos aadir algn texto al final de todas
las lneas de un flujo de datos:
$ cat file1 | sed s/$/Esto se aade al final/g > file2
Cualquier carcter que queremos que sed trate como un literal en lugar de un wildcard, le
aadiremos un \ delante y diremos que lo hemos escapado. Entonces, Cmo decirle a sed
que un \ es un literal y no es el carcter de escape?, pues tenemos que escapar el \ quedando:
Ejemplos:
ls l | grep ^d
Nos muestra solo los directorios de la ubicacin actual.
ls | grep [0-9]$
Nos muestra todos los archivos del directorio actual cuyo nombre termine en un nmero
del cero al 9.
V
EJERCICIOS
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
Colocar los archivos cuyo nombre empiece con c del directorio /usr/bin en un
archivo llamado binlistado. Utilice redireccionamiento.
VII
BIBLIOGRAFIA Y REFERENCIAS
Blanco, V., Linux Instalacin, Administracin y uso del Sistema, Ed. Ra-Ma,
Mxico, 2010.