Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Esto hace que el sistema salga del modo grfico y acceda a alguna de las seis consolas
virtuales de Linux, a las cuales tambin se puede acceder cuando se arranca en modo de
texto. Para volver al modo grfico hay que presionar
<ctrl>+<alt>+<F7>
<ctrl>+<alt>+<F8>
La
Introduccin
Existen una serie de nociones bsicas que hay que tener en cuenta a la hora de introducir
los comandos. En primer lugar citaremos las siguientes:
Los
Las
En
Cuando
El signo
Un
Alias
Un ``alias'' es un nombre alternativo para un comando. As, en lugar de escribir el
comando propiamente dicho, escribiramos el alias de dicho comando.
Un alias se puede definir por varios motivos, por ejemplo:
Dar
Dar
Creara un alias para el comando tar para que use el compresor bzip2 en lugar de
gzip.
Para no tener que escribir todos los alias siempre que entremos al sistema, escribiramos
dicho alias en el archivo /.bash_profile
Directorios en Linux:
Bajo Linux el espacio de archivos que es visible a los usuarios est basado en una
estructura de rbol, con la raz en la parte superior ( / ). El directorio ms alto, /, es
conocido como directorio raz.
/
bin
dev
etc
home
lib
usr
proc
root
sbin
var
seccion01
seccion02
Por lo general, la mayor parte del sistema operativo reside en dos sistemas de archivos:
el sistema de archivos raz, conocido como /, y el sistema de archivos montado bajo /usr
El directorio bin contiene programas ejecutables conocidos como binarios. Estos
programas son archivos de sistema esenciales. Muchos de los comandos como ls, son en
realidad programas que se encuentran en este directorio.
El directorio sbin tambin se utiliza para guardar archivos binarios de sistema. La
mayora de los archivos de este directorio se usa para propsitos de la administracin
del sistema.
El directorio etc. contiene muchos de los archivos de configuracin del sistema Linux.
Son los archivos que personalizan Linux. P. ej. el archivo de contraseas, passwd, se
encuentra aqu.
Las bibliotecas compartidas que emplean los programas cuando se ejecutan estn
guardadas en el directorio /lib. Mediante el uso de estas bibliotecas compartidas,
muchos programas pueden utilizar el mismo cdigo, y estas bibliotecas se pueden
guardar en un lugar comn, reduciendo el tamao de los programas al momento de su
ejecucin.
El directorio /dev contiene archivos especiales conocidos como archivos de dispositivo,
los cuales se usan para tener acceso a todo tipo de hardware del sistema. Por ejemplo, el
archivo /dev/mouse se utiliza para la lectura de entrada del mouse.
/proc es un sistema de archivos virtual. Se usa para leer de la memoria informacin de
procesos.
El directorio /home es el directorio base para los directorios personales de los usuarios.
El directorio /var guarda los archivos que tienden a cambiar de tamao a lo largo del
tiempo. Por lo general, los diversos archivos de bitcora de sistema se encuentran bajo
este directorio. El directorio /var/spool y sus subdirectorios se utilizan para guardar
datos que son de manera transitiva, como el correo y las noticias recin recibidas o
puestas en cola para transmisin a otro sitio.
El directorio /usr y sus subdirectorios contienen algunos de los programas ms
importantes del sistema. Por lo general, los subdirectorios de /usr contienen los grandes
paquetes de software que se instalan.
/usr/bin
/usr/etc
/usr/include
/usr/lib
/usr/man
/usr/src
/usr/local
clear
Este comando limpia la consola.
Directorio Personal
Como se ha visto anteriormente el directorio personal es un directorio con un
determinado nombre asignado a un usuario. Los directorios personales habitualmente
son subdirectorios de /home (en algunos casos se utiliza mnt, u otro subdirectorio de
orden inferior). Generalmente el nombre coincide con el del nombre de usuario, aunque
puede no ser as, y varios usuarios pueden estar trabajando en el mismo directorio. Cada
usuario de Linux puede crear una estructura en rbol de subdirectorios y archivos tan
compleja como desee bajo su directorio personal pero normalmente nunca fuera de l.
Listado del contenido de directorios: comando ls
Una de las acciones ms habituales a la hora de trabajar es mostrar el contenido de un
directorio, como se ha visto existen herramientas grficas con este fin, no obstante el
shell incluye un programa con este mismo fin: ls, ls Muestra los nombres de los ficheros
y subdirectorios contenidos en el directorio en el que se est. Slo se obtienen los
nombres de los ficheros, sin ninguna otra informacin.
ls -a Muestra todos los ficheros incluyendo algunos que ordinariamente estn ocultos
para el usuario (aquellos que comienzan por un punto). Se recuerda que el fichero punto
. indica el directorio actual y el doble punto .. el directorio padre, que contiene, al actual.
ls -l Esta es la opcin de lista larga: muestra toda la informacin de cada fichero
incluyendo: protecciones, tamao y fecha de creacin o del ltimo cambio
introducido,...
ls -c Muestra ordenando por da y hora de creacin.
Para utilizar el comando mount de la forma anterior hace falta ser administrador o root.
Para que un usuario comn pueda utilizar disquetes, CD-ROM, etc. hay que editar el
fichero /etc/fstab Por ejemplo para que cualquier usuario pueda acceder a un disquete
habr que indicar la siguiente lnea:
/dev/fd0 /mnt/floppy vfat user,noauto 0 0
Tambin habr que asegurarse de que el directorio /mnt/floppy sea accesible por todos
los usuarios.
Una vez seguidos los pasos anteriores cualquier usuario podr "montar" un disquete
escribiendo el siguiente comando:
mount /mnt/floppy
Al igual que antes el usuario deber ejecutar el comando umount /mnt/floppy antes de
sacar el disquete.
Nota: Existen en la actualidad distribuciones (p. ej. Linux Mandrake) que realizan este
proceso de forma automtica por lo que las unidades de disquete y CD-ROM quedan
accesibles a todos los usuarios de una forma sencilla, empleando los comandos:
mount /mnt/floppy
umount /mnt/floppy
siempre que /mnt/floppy sea la ruta adecuada.
Copia de ficheros. Comando cp
Este comando tiene la siguiente forma,
cp file1 file2
y hace una copia de file1 y le llama file2. Si file2 no exista, lo crea con los mismos
atributos de file1. Si file2 exista antes, su contenido queda destruido y es sustituido por
el de file1. El fichero file2 estar en el mismo directorio que file1. Tanto file1 como
file2 indican el nombre de un archivo, que puede incluir el la ruta al mismo si alguno de
ellos no se encuentra en el directorio actual. Otra posibilidad es:
cp file1 file2 namedir
que hace copias de file1 y file2 en el directorio namedir.
cp -f: borra los ficheros ya existentes en un destino dado.
cp -i: pregunta si deseas sobreescribir ficheros.
cp -p: preserva los permisos, el propietario y el grupo de los ficheros.
cp -r: copia directorios recursivamente y hace lo correcto cuando se encuentran objetos
distintos de ficheros.
Despus de este comando el fichero panacea tendr el mismo nombre, pero a efectos
del usuario estar colocado en dos sitios distintos: en el directorio actual y en el
subdirectorio subdir. Los ficheros enlazados a otro se borran como los ficheros
normales. Si se borra el fichero original permanece su contenido en los ficheros
enganchados.
Borrado de ficheros. Comando rm
Este comando tiene las formas siguientes,
rm file1 file2
Este comando elimina uno o ms ficheros de un directorio en el cual tengamos permiso
de escritura. Con este comando resulta facilsimo borrar ficheros intiles, y
desgraciadamente, tambin los tiles. Por eso es conveniente y casi imprescindible
emplear lo opcin -i, de la forma siguiente:
rm -i file1 file2
Con esta opcin, Linux pedir confirmacin para borrar cada fichero de la lista, de si
realmente se desea su destruccin o no. Se recomienda usar siempre este comando con
esta opcin para evitar el borrado de ficheros tiles. Por ejemplo, si se teclea,
rm -i superfluo
aparecer en pantalla el aviso siguiente:
remove superfluo?
y habr que contestar y (yes) o n (not). En este comando se pueden utilizar los
caracteres de sustitucin (* y ?), como por ejemplo,
rm fich*
que borrara todos los ficheros del directorio actual que comiencen por fich. El comando
rm *
borrar todos los ficheros del directorio actual, mientras que
rm -i *
realiza una labor anloga, pero con previa confirmacin.
rm -f: no pide la configuracin.
rm -i: pide la configuracin.
rm -r: borra los rboles de directorios.
rm -v, --vorse: muestra el nombre del fichero antes de borrarse.
rm --versin: muestra en la salida estndar informacin sobre la versin.
Caractersticas de un fichero. Comando file
cabeceras al comienzo de las mismas. Est muy en relacin con el comando lp de salida
por impresora. Las formas ms importantes que admite son las siguientes:
pr file Produce una salida estndar de 66 lneas por pgina, con un encabezamiento de 5
lneas (2 en blanco, una de identificacin y otras 2 lneas en blanco).
pr -ln file Produce una salida de n lneas por pgina (cuando el tamao de papel de
impresora, por ejemplo, tiene un nmero de lneas distinto de 66)
pr -p file Hace una pausa para presentar la pgina, hasta que se pulsa <return> para
continuar
pr -t file Suprime las 5 lneas del encabezamiento y las del final de pgina.
pr -wn file Ajusta la anchura de la lnea a n posiciones.
pr -d file Lista el fichero con espaciado doble.
pr -h `caracteres` file el argumento o cadena de caracteres `caracteres` se convertirn
en la cabecera del listado.
pr +n file Imprime el fichero a partir de la pgina n.
Adems de los ejemplos anteriores, se pueden combinar varias opciones en un mismo
comando, como por ejemplo en: pr -dt file la salida de este comando es por la consola,
pero puede redireccionarse a otro fichero, por ejemplo, si ejecutamos el comando: pr
file1 > file2 se crea un fichero nuevo llamado file2 que es idntico a file1, pero con
formato por pginas y columnas.
Visualizacin de ficheros pantalla a pantalla. Comandos more y less
Estos comandos permiten visualizar un fichero pantalla a pantalla. El nmero de lneas
por pantalla es de 23 lneas de texto y una ltima lnea de mensajes, donde aparecer la
palabra more. Cuando se pulsa la barra espaciadora (el espacio en blanco), se
visualizar la siguiente pantalla. Para salir de este comando (terminar la visualizacin)
se pulsa <ctrl>d o q. Por ejemplo: more file
El comando less es muy similar al anterior pero permite el desplazamiento a lo largo del
texto empleando las teclas de cursores pudiendo desplazarse hacia arriba o abajo de un
fichero.
Bsqueda en ficheros. Comandos grep, fgrep y egrep
El comando grep localiza una palabra, clave o frase en un conjunto de directorios,
indicando en cules de ellos la ha encontrado. Este comando rastrea fichero por fichero,
por turno, imprimiendo aquellas lneas que contienen el conjunto de caracteres buscado.
Si el conjunto de caracteres a buscar est compuesto por dos o ms palabras separadas
por un espacio, se colocar el conjunto de caracteres entre apstrofes ('). Su formato es
el siguiente:
grep 'conjuntocaracteres' file1 file2 file3
siendo 'conjuntocaracteres' la secuencia de caracteres a buscar, y file1, file2, y file31 los
ficheros donde se debe buscar. Veamos un nuevo ejemplo:
gzip d fichero.gz
recuperando el fichero inicial. Como se ha comentado al principio es tpico emplear tar
y gzip de forma consecutiva, para obtener ficheros con extensin tar.gz o tgz que
contienen varios ficheros de forma comprimida (similar a un fichero zip). El comando
tar incluye la opcin z para estos ficheros de forma que para extraer los ficheros que
contiene:
tar zxf fichero.tar.gz
Comandos de impresin.
Comando lpr
El comando lpr se emplea para imprimir una serie de ficheros. Si se emplea sin
argumentos imprime el texto que se introduzca a continuacin en la impresora por
defecto. Por el contrario,
lpr nombre_fichero
imprime en la impresora por defecto el fichero indicado.
REDIRECCIONES Y TUBERAS
Redirecciones
Los comandos de Linux tienen una entrada estndar (nmero 0) y dos salidas estndar
(nmero 1 para la salida normal del comando, y nmero 2 para la salida de los mensajes
de error que se puedan producir en su ejecucin). Por defecto tanto la entrada como las
salidas estndar de los comandos son la propia terminal, a no ser que por la propia
naturaleza del comando se den en l los nombres de algunos ficheros que hagan el papel
de entrada y de salida. Por ejemplo, en el comando
cp file1 file2
file1 es la entrada y file2 es la salida; aqu no intervienen las entradas y salidas estndar.
Sin embargo, cuando utilizamos por ejemplo el comando ls (listado de directorio), la
salida de este comando se dirige hacia la terminal. Si queremos que la salida de este
comando se dirija a un fichero llamado file, podramos escribir,
ls >file
el (>) es uno de los llamados operadores de redireccin y dirige la salida estndar hacia
el fichero indicado a continuacin; si este fichero no existe, se crea en ese momento.
Otros operadores de redireccin son el operador (<) que redirige la entrada estndar
desde un determinado fichero, y el operador (>>) que redirige la salida estndar hacia
otro fichero, pero aadiendo dicha salida al final de ese fichero, sin sobrescribir el
contenido original. Por ejemplo, si cada vez que entramos en el sistema ejecutamos el
comando,
date >>archivo
tendremos un fichero llamado archivo que contiene informacin sobre todas las veces
que hemos entrado en el sistema. Otro ejemplo, para aadir al fichero file2 al final de
file1 y al conjunto llamarle file3, sera
comando), interesa evitar que los mensajes de error aparezcan en la pantalla, pues en
ella habremos empezado a hacer otra cosa. Supongamos por ejemplo que queremos
compilar y montar en background un conjunto de ficheros, dirigiendo los listados a un
fichero llamado listados, y los mensajes de error a un fichero llamado errores. Lo
haramos en la forma,
gcc prueba.c 2>errores
con lo cual la salida 2 (errores) se redirige hacia el fichero errores. Para redirigir la
salida estndar de errores al mismo fichero que la salida estndar se emplea un comando
como:
program <datos.d >resultados.r 2>&1
EJECUCIN DE PROGRAMAS
Ejecucin en el fondo & , kill, nice y nohup
Para ejecutar un programa en el fondo, es decir, recuperando inmediatamente el control
del terminal, basta aadir el carcter & al final del comando de ejecucin:
program <datos.d >resultados.r &
inmediatamente aparecer en el terminal, debajo de esta lnea, un nmero que es el
nmero de proceso de la ejecucin de este programa. Para detener definitivamente
dicha ejecucin (no se puede detener temporalmente) se puede utilizar el comando kill:
kill nmerodeproceso
La ejecucin de un programa en el fondo no impide que aparezcan en la pantalla los
mensajes de error que se produzcan (a no ser que se haya redirigido la salida de errores),
y que el programa se pare cuando se salga del sistema. Para que el programa contine
ejecutndose an cuando nosotros hayamos terminado la sesin, hay que utilizar el
comando nohup:
nohup program
Si no se utilizan redirecciones todas las salidas del programa se dirigen a un fichero
llamado nohup.out. Cuando se utiliza nohup el ordenador entiende que el usuario no
tiene prisa y automticamente disminuye la prioridad de la ejecucin. Existe un
comando, llamado nice, que permite realizar ejecuciones con baja prioridad, es decir se
le indica al ordenador que puede ejecutar de forma ms lenta esta aplicacin si existen
otras que sean ms urgentes. Se utiliza en las formas,
nice program &
nice nohup program &
Para darle al programa la prioridad mnima habra que utilizar el comando,
nice -19 program &
donde el -19 indica la mnima prioridad.
Comando time
comandos
Los comandos sh comandos y comandos no son enteramente equivalentes. As, el
primero de ellos exige que el fichero comandos est en el directorio de trabajo, mientras
que el segundo slo exige que el fichero comandos est en uno de los directorios de
bsqueda de comandos especificados en la variable PATH.
Cuando se ejecuta un fichero de comandos Linux abre lo que se llama un nuevo shell,
es decir un nuevo entorno para la ejecucin de los comandos. Para que las variables del
caparazn original conserven su valor en el nuevo caparazn es necesario prepararlas
con la sentencia export antes de abrir el nuevo shell. Por ejemplo, como consecuencia
de lo que se acaba de decir, si en el interior de un fichero de comandos se cambia de
directorio con el comando cd, al acabar la ejecucin de dicho fichero volveremos
automticamente al directorio inicial.
Introduccin de comentarios
Para introducir lneas de comentarios en un programa de comandos basta comenzar
dichas lneas con el carcter #. Hay que tomar la precaucin de que este carcter no sea
el primer carcter del fichero de comandos, porque entonces el ordenador interpreta que
el programa est escrito en C-shell (una variante especial de UNIX desarrollada en la
Universidad de Berkeley) y el resultado es imprevisible. Puede ser buena prctica
comenzar todos los ficheros de comandos con una lnea en blanco.
Variables del shell
UNIX permite definir variables en un fichero de comandos en la forma,
USER=/mnt/mecan/juanto
TERM=hp2392
...
Es una prctica habitual el utilizar nombres con letras maysculas para las variables del
caparazn. Para recuperar el valor de una variable hay que precederla con el carcter .
Por ejemplo, utilizando en otra parte del programa TERM, en dicho lugar se sustituira
TERM por su valor, esto es, hp2392. El shell del Linux tiene definidas para cada
usuario unas variables estndar. Para averiguar cules son basta teclear el comando
siguiente,
set
Para definir otras variables propias de cada usuario puede utilizarse el fichero .profile,
que es un fichero de comandos propio de cada usuario que se ejecuta automticamente
al hacer el login. Para definir variables que contengan espacios en blanco deben
encerrarse entre caracteres (') o ("), como por ejemplo,
FECHA="31 de Diciembre de 1986"
ms adelante se ver la diferencia entre el carcter (') y el carcter (").
Comando echo
Comando make
Este comando sirve para organizar la compilacin y el enlazado de programas
complicados que dependen de muchos mdulos y libreras diferentes. Cuando se ejecuta
este comando, se construye un nuevo ejecutable volviendo a compilar slo aquellos
ficheros fuente que son ms recientes que el los ficheros compilados correspondientes,
teniendo en cuenta para ello las fechas de ltima modificacin de cada fichero. Este
comando se basa en un fichero ASCII (llamado por defecto makefile) que contiene una
relacin de dependencias entre los distintos mdulos, as como las acciones que hay que
realizar para poner a punto cada mdulo, es decir para pasar de un fuente a un objeto,
por ejemplo. Este comando tiene la siguiente forma general:
make [f makefilename] [arg_opt] [exe_name]
El fichero makefile (con ste o con otro nombre invocado por medio de la opcin f)
contiene cuatro tipos de lneas diferentes:
Lneas de comentario, que comienzan por el carcter (#). Si en una lnea cualquiera
aparece el carcter (#), se ignora todo lo que aparece a continuacin de dicho carcter en
dicha lnea.
Lneas de definicin de macros. Tienen la forma general,
IDENTIFICADOR = cadena_de_caracteres
Si en alguna otra lnea aparece (IDENTIFICADOR), dicha ocurrencia se sustituye por
cadena_de_caracteres. No es necesario que el nombre del identificador est escrito con
maysculas, pero es una costumbre bastante extendida el hacerlo as. Mediante el uso de
macros se pueden representar brevemente pathnames o listas de nombres de ficheros
largos. Si el identificador tiene una sola letra, no hace falta poner los parntesis. El
comando make tiene una serie de macros definidas por defecto que se pueden listar con
el comando make p.
Lneas describiendo las relaciones de dependencia. Tienen la forma,
file.o fila.o ... : file1.cpp file2.cpp ...
La lista de ficheros que estn a la izquierda del carcter (:) dependen de los ficheros que
estn a la derecha. En estas lneas se realiza la sustitucin habitual de los caracteres (?
*[])
Lneas de comandos shell, comenzando siempre por un tabulador. Estas lneas
representan las acciones que hay que realizar para actualizar los ficheros dependientes,
segn las relaciones de dependencia descritas en la lnea anterior. En una misma lnea
de comandos puede haber varios comandos separados por un carcter (;), y de este
modo se ejecutan en un mismo proceso; si hay varias lneas de comandos, cada lnea se
ejecuta en un proceso diferente. Estos comandos shell (compilaciones, etc.) se ejecutan
o no segn las fechas de los ficheros correspondientes. Hay tambin una lista de
dependencias implcitas y de macrodefiniciones standard que se pueden obtener con el
comando make -p (la salida de este comando puede tener varios cientos de lneas). A
continuacin se presentan algunos ejemplos de ficheros makefile.
A continuacin se muestran una serie de ejemplos
Hay informaciones que no es necesario dar por que se suponen por defecto. Por
ejemplo, si el fichero objeto (.o) y el fichero C (.c) o C++ (.cpp) tienen el mismo sufijo,
no hace falta definir esas relaciones de dependencia, que por otra parte son triviales.
Bsqueda avanzada en ficheros. Expresiones regulares
A veces se desea encontrar las lneas de un fichero que contienen una palabras o
palabras determinadas. Cuando el texto que se desea encontrar es nico, lo que hay que
hacer es ponerlo tal cual en la seccin del comando que define la bsqueda, por ejemplo
grep "PATATAS" Lista_de_la_compra.txt
Sin embargo, en otras ocasiones el texto que se desea buscar no es nico, es decir, no
est unvocamente determinado como en el ejemplo anterior, sino que debe cumplir
unas ciertas condiciones, como la de estar escrito con maysculas, comenzar por
determinado carcter, estar a principio o final de lnea, etc. Este problema se puede
resolver en muchos comandos de Linux por medio de las expresiones regulares que se
van a presentar a continuacin.
Las expresiones_regulares son una forma de describir patrones para la bsqueda de unas
determinadas lneas dentro de uno o ms ficheros ASCII. Se trata pues de encontrar las
lneas cuyo contenido cumple ciertas condiciones, que se definen en la
expresin_regular.
Caracteres especiales
En una expresin_regular se pueden utilizar algunos caracteres que tienen un
significado especial.
Son los siguientes:
[ comienzo de la definicin de un conjunto de caracteres
Comando/Sintaxis
cat fich1 [...fichN]
diff [-e]arch1 arch2
du [-sabr] fich
find dir test accin
grep [-cilnv] expr
archivos
head -count fich
ln [-s] fich acceso
Descripcin
Ejemplos
cat /etc/passwd
head prog1.c
ln -s /users/mike/.profile .
who / rwho
tail prog1.c
vi .profile
at 6pm Friday miscript
echo ``Hola mundo''
finger
nn@maquina.aca.com.co
id usuario
kill 1234
man gcc
man -k printer
ps -ux
ps -ef
who
/usr/bin/gpasswd -a
usuario grupo
at 7:00
cdplay<Ctrl>d
atq
atrm 8
bash
chs
date -s "04/25/05"
+"%D"
date -s "15:00:00"
+"%T"
dd if=/dev/fd0
of=imagendedisco
dd if=imagendedisco
of=/dev/fd0
df
dpkg -i archivo.deb
du -c ficheros
du -s /directorio
echo $PATH
Editar este fichero para
memorizar una tarea:
etc/crontab
emacs
/etc/sysconfig/network
emacs fichero
find /directorio -name
'fichero'
for x in $(ls /directorio)
do
echo $x
done
grep
if [ -x /path/to/dnetc ];
then
echo "Starting
Distributed.net Client..."
/path/to/dnetc -quiet
fi
ifconfig
Te dice tu direccin IP aunque sirve tambin para configurar
la tarjeta de red.
joe fichero
Editor de texto.
kill -9 numeroPID
Mata el proceso numeroPID que queramos (finaliza su
ejecucin). kill -HUP numero PID Hace lo mismo.
Kill -STOP numeroPID
Para hasta nueva orden el proceso NumeroPID.
Kill -CONT numeroPID
Continua el proceso numeroPID parado anteriormente.
killall nombreproceso
Mata el proceso con ese nombre.
ksh
Korn shell, combina sh y csh.
ln -s
Crea un enlace blando al directorio roms del cdrom como si
/mnt/cdrom/Mame/roms / fuera /usr/games/lib/xmame (xmame no debe existir)
usr/games/lib/xmame
Linux
cat
cd, chdir
chmod
clear
ls
mkdir
more
mv
rmdir
rm -r
DOS
type
cd, chdir
attrib
cls
dir
md, mkdir
more
move
rd, rmdir
deltree
Significado
Ver contenido de un archivo.
Cambio el directorio en curso.
Cambia los atributos.
Borra la pantalla.
Ver contenido de directorio.
Creacin de subdirectorio.
Muestra un archivo pantalla por pantalla.
Mover un archivo o directorio.
Eliminacin de subdirectorio.
Eliminacin de subdirectorio y todo su contenido.