El Shell Comandos Básicos de Linux
El Shell Comandos Básicos de Linux
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
Documentos_privados
Al escribir cd Pr<tab> Linux rellenar el resto del contenido hasta escribir cd
Programas. Por el contrario al escribir cd D<tab> escribir cd Documentos
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
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.
ls -t Muestra ordenando por da y hora de modificacin.
ls -r Muestra el directorio y lo ordena en orden inverso.
ls subdir Muestra el contenido del subdirectorio subdir.
ls -l filename Muestra toda la informacin sobre el fichero.
ls --color Muestra el contenido del directorio coloreado.
Las opciones anteriores pueden combinarse. Por ejemplo:
ls -cr Muestra el directorio ordenando inversamente por fechas.
El comando ls admite los caracteres de sustitucin o metacarcteres (*) y (?). El carcter
* representa cualquier conjunto o secuencia de caracteres. El carcter ? representa
cualquier carcter, pero slo uno. Por ejemplo:
ls *.gif Muestra todos los nombres de ficheros que acaben en .gif, por ejemplo dib1.gif,
a.gif, etc..
ls file? Muestra todos los ficheros cuyos nombres empiecen por file y tengan un nombre
de cinco caracteres, por ejemplo: file1, file2, filea, etc.
Creacin de subdirectorios. Comando mkdir
El comando mkdir (make directory) permite a cada usuario crear un nuevo
subdirectorio:
mkdir subdir1
donde -t iso9660 indica el tipo de sistema que usa la unidad de disco para guardar los
ficheros (las ms usuales son: iso9660 en el caso de un CD-ROM, vfat en el caso de
Windows, y ext2 en el caso de Linux), /dev/cdrom indica el dispositivo que se va a
montar. Todos los dispositivos estn representados por un fichero del directorio /dev,
por ejemplo en el caso de un disquete ser seguramente /dev/fd0, por ltimo
/mnt/cdrom es el directorio en el que se pondr a disposicin del usuario el contenido
del CD-ROM. Para montar disquetes se suele utilizar el directorio /mnt/floppy.
De todas formas el usuario siempre puede crear un directorio vaco con el nombre que
el elija para montar las unidades de disco que desee donde desee. Cuando el usuario
haya dejado de usar ese disco deber "desmontarlo" mediante el comando umount
antes de sacar el disquete o el CD-ROM. En este ltimo caso debera escribir:
umount /mnt/cdrom
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.
quien Indica a quien afecta el permiso que se desea cambiar. Es una combinacin
cualquiera de las letras u para el usuario, g para el grupo del usuario, o para los otros
usuarios, y a para todos los anteriores. Si no se da el quien, el sistema supone a.
oper Indica la operacin que se desea hacer con el permiso. Para dar un permiso se
pondr un +, y para quitarlo se pondr un -.
permiso Indica el permiso que se quiere dar o quitar. Ser una combinacin cualquiera
de las letras anteriores : r,w,x,s.
files Nombres de los ficheros cuyos modos de acceso se quieren cambiar. Por ejemplo,
para quitar el permiso de lectura a los usuarios de un fichero el comando es:
chmod a -r fichero.txt
chmod + hase que los permisos sealados se aadan.
chmod - hase que los permisos seleccionados se retiren.
chmod = hase que los permisos del fichero sean nicos.
chmod -r. cambia permisos de directorios.
chmod -c, --changes: muestra un mensaje antes de cambiar el permiso a un fichero.
Los permisos de lectura, escritura y ejecucin tienen un significado diferente cuando se
aplican a directorios y no a ficheros normales. En el caso de los directorios el permiso r
significa la posibilidad de ver el contenido del directorio con el comando ls; el permiso
w da la posibilidad de crear y borrar ficheros en ese directorio, y el permiso x autoriza a
buscar y utilizar un fichero concreto.
Por otra parte, el comando chown se emplea para cambiar de propietario ("change
owner") a un determinado conjunto de ficheros. Este comando slo lo puede emplear el
actual propietario de los mismos. Los nombres de propietario que admite Linux son los
nombres de usuario, que estn almacenados en el fichero /etc/passwd. La forma general
del comando chown es la siguiente:
chown newowner file1 file2 ...
chown -r: cambia propietario de directorios.
chown -c, --changes: muestra los ficheros cuyos propietarios cambian.
chown -f, --silent, -quiet: no muestra mensajes de error sobre ficheros que no puedan
cambiarse.
chown -help: muestra un mensaje de ayuda.
Anlogamente, el grupo al que pertenece un fichero puede ser cambiado con el
comando chgrp, que tiene una forma general similar a la de chown,
chgrp newgroup file1 file2...
Los grupos de usuarios estn almacenados en el fichero /etc/group.
Exit
Termina la sesin de Linux en una terminal
More
con lo que se comprime fichero (que es borrado) y se crea un fichero con nombre
fichero.gz. Si lo que se desea es descomprimir un fichero se emplea entonces:
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
cat file1 file2 >file3
o, si quisiramos que el fichero resultante fuera el mismo file1,
podran teclearse interactivamente uno por uno en una terminal, pero que es muchas
veces ms cmodo agruparlos en un fichero, y ejecutarlos con una sola instruccin
posteriormente.
Los comandos de Linux pueden ser externos - que implican la creacin de un nuevo
proceso, cuyo cdigo est en /bin o /usr/bin- e internos - cuyo cdigo est incluido en el
del intrprete shell que los ejecuta.
Una cierta primera forma de agrupar comandos la ofrece Linux por medio del carcter ;.
Por ejemplo, tecleando el comando,
date; ls; who
el ordenador ejecutar sucesivamente los comandos date, ls y who. Tambin podra
crearse con un editor de textos un fichero llamado comandos que contuviera las lneas
siguientes:
date
ls
who
Para ejecutar este fichero de comandos puede teclearse,
sh comandos
o bien convertir el fichero comandos en directamente ejecutable por medio del comando
chmod en la forma,
chmod a+x comandos
de modo que el programa de comandos comandos puede ejecutarse simplemente
tecleando su nombre,
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
El comando echo imprime un determinado texto en la terminal. Un ejemplo de
utilizacin de dicho comando puede ser el siguiente:
echo Me gusta el sistema operativo UNIX
El comando echo es de gran utilidad en los ficheros de comandos. Cuando el texto que
se desea escribir en la terminal contiene alguno de los caracteres especiales de UNIX (
* ? [ ] > >> < & ; \ ' ) hay que tomar precauciones especiales desconectando su
significado. Una forma de hacerlo es precediendo dicho carcter con la barra invertida
(\). As, para escribir mediante el comando echo tres asteriscos, utilizaramos
echo \*\*\*
si no utilizramos la barra invertida, el asterisco se interpretara como un carcter de
sustitucin y se imprimira el nombre de todos los ficheros del directorio. Otra forma de
anular el significado de los caracteres especiales es encerrando el texto a escribir
mediante comillas (") o entre apstrofos normales ('). Los apstrofos (') anulan el
significado de todos los caracteres comprendidos entre ellos. As pues, el triple asterisco
lo podramos escribir con el comando,
echo '***'
Las comillas (") son menos restrictivas, y anulan el significado de todos los caracteres
excepto los tres siguientes: ( ` \). Esto es muy importante porque si VAR es el nombre
de una variable, y VAR aparece en un comando echo entre apstrofos se escribe VAR,
mientras que si aparece entre comillas se escribe el valor de la variable, al cumplir el
carcter su cometido.
El carcter (\) tiene otros significados, adems del ya visto de anular el significado
especial de otros caracteres. As, sirve como indicador de que un comando contina en
la lnea siguiente. Cuando se utiliza en la definicin interactiva de un comando, en la
lnea siguiente aparece el prompt secundario (>), que indica que se debe seguir
tecleando el comando. Cuando en un comando echo aparecen los caracteres (\c) y (\n)
borra el primer fichero Fortran. Para borrar todos e indicarnos adems cuntos ficheros
hay, el fichero del podra estar compuesto por los siguientes comandos:
echo "Hay # programas Fortran \n"
rm -i *
El comando shift hace posible utilizar y distinguir parmetros que estn ms a la
derecha del noveno lugar en la llamada al programa de comandos. En efecto, cuando se
llama al comando shift, 2 se convierte en 1, 3 en 2, etc, y lo que hubiera sido 10 en 9,
con lo cual ya se puede referenciar. El comando shift deja inalterado 0 y puede utilizarse
tantas veces como se desee.
Otras posibilidades de los ficheros de comandos
Los ficheros de comandos tienen muchas ms posibilidades que las que se han apuntado
en esta Introduccin: pueden leer variables, preguntar por la existencia de un fichero y
por si es ejecutable o no, y admiten construcciones lgicas del tipo IF, DO, DO WHILE,
etc. Para utilizar estas posibilidades acudir al manual correspondiente.
COMPILANDO PROGRAMAS EN LINUX
Linux como cualquier sistema Unix que se precie incluye un compilador de C y C++.
Esto no implica que se est limitado a estos dos lenguajes de programacin. Por el
contrario existen una gran cantidad de compiladores gratuitos para los lenguajes ms
importantes.
El compilador de C/C++ de Linux es un compilador de lnea de comandos, esto es, no
dispone de ninguna interfaz grfica que facilite la programacin y compilacin del
cdigo. Existen eso s editores de texto capaces de mostrar la sintaxis del cdigo
resaltada como kwrite, aunque la compilacin hay que realizarla manualmente a travs
de una consola o terminal.
Compilacin y linkado
El primer paso para crear un programa, por ejemplo en C++, es crear el fichero de
cdigo fuente, y guardarlo en un fichero de texto por ejemplo e1.cpp. Tras esto hay que
compilar el programa. Para esto se emplear el comando g++, de la siguiente forma:
g++ e1.cpp
Con lo que conseguiremos que se compile el programa. Con este comando hemos
conseguido que se cree un programa llamado a.out en el directorio de trabajo. Para
ejecutarlo emplearemos
./a.out
Normalmente no desearemos que el programa se llame a.out sino que tenga un nombre
ms significativo, como ejemplo_1, para conseguirlo emplearemos:
g++ -o ejemplo_1 e1.cpp
Si queremos ejecutar el programa emplearemos ./ejemplo_1. Si el programa escrito
realiza emplea alguna funcin que no se encuentre en la librera estndar hay que
incluirla en la orden de compilacin, por ejemplo:
g++ -o ejemplo_2 e2.cpp -lname
Donde name es el nombre de la librera. Por defecto estas se guardan en un fichero cuyo
nombre es
libname.so, cuya localizacin suele ser /usr/lib.
Si el programa no est escrito en C++ sino en C las opciones de compilacin son las
mismas salvo que en lugar del programa g++ se emplear el comando gcc.
gcc o ejemplo_3 e3.c
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
# Esto es un ejemplo de fichero makefile
# Definiciones de macros
ma = ma27ad.o ma27bd.o ma27cd.o
TEST: test.o (ma)
xlf o TEST O (ma)
test.o: test.f
xlf c O test.f
ma27ad.o: ma27ad.f
xlf c O ma27ad.f
ma27bd.o: ma27bd.f
xlf c O ma27bd.f
ma27cd.o: ma27cd.f
xlf c O ma27cd.f
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
. un carcter cualquiera, excepto el <eol>
* un conjunto de caracteres cualesquiera, excepto el primer carcter de una expresin o
inmediatamente despus de la secuencia \(
] terminacin de la definicin de un conjunto de caracteres
- sirve para definir el conjunto de caracteres que van del que le precede al que le sigue.
Si va detrs del [ o delante del ], no es especial
comienzo de lnea, si est al comienzo de la expresin
conjunto complementario (el que no cumple la condicin), si est justo despus del
[ que abre la definicin de un conjunto
fin de lnea, cuando est al final de una expresin.
\ quita el significado especial a un carcter, excepto en la definicin de un conjunto de
caracteres
Expresiones regulares de un solo carcter
Se trata de buscar palabras o conjuntos de un solo carcter, que cumple ciertas
condiciones. A continuacin se presentan algunos ejemplos:
\* representa el carcter *
. cualquier carcter, excepto el <eol>
[a-f] un carcter cualquiera entre la a y la f
[A-Z] cualquier letra mayscula
[a-d] cualquier carcter que no sea una letra entre la a y la d
[:clase:] donde clase puede ser: digit (cifra del 0 al 9), xdigit (cifra hexadecimal), alpha
(letra cualquiera), upper (letra mayscula), lower (letra minscula), alnum (letra o
dgito cualquiera),
space (un espacio en blanco), cntrl (carcter de control), punct (un carcter de
puntuacin) y print (carcter imprimible).
Expresiones regulares generales
Se pueden formar de acuerdo con las siguientes reglas:
- una expresin regular de un slo carcter
[a-z] cualquier letra minscula
- una expresin regular de un slo carcter, seguida del carcter *, representando
entonces todas las palabras de longitud positiva o nula que se pueden construir con los
caracteres aceptados por la una expresiones regulares de un slo carcter
[a-z]* cualquier palabra escrita con minsculas
- concatenando (poniendo una a continuacin de la otra) dos expresiones regulares
construidas previamente
[a-z][A-Z] cualquier palabra de dos letras, de las cuales la primera es minscula y la
segunda mayscula
- Una expresin_regular definida en la forma \(expresiones regulares\) representa la
propia expresiones regulares (es decir, definida ella sola), pero define una forma de
referirse luego a esa expresiones regulares. En efecto las expresiones regulares definidas
de esta forma quedan afectadas por un nmero del 1 al 9, y es posible luego hacer
referencia a una expresiones regulares por medio del nmero que le corresponde, en la
forma \nmero. Si \nmero va seguido de un *, esa subexpresin puede repetirse un
nmero cualquiera de veces.
\(.*\)\1\1 Al comienzo de la lnea, un campo formado por un carcter cualquiera que se
repite las veces que sea, volviendo a aparecer dos veces mas antes de que se acabe la
lnea. Esta expresin detectara las lneas que contienen palabras (o conjuntos de
palabras) triples.
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
tail -count fich
vi fich
at [-lr] hora [fecha]
echo string
finger usuario
id
kill [-seal] PID
man comando
ps [axiu]
who / rwho
Descripcin
Ejemplos
cat /etc/passwd
head prog1.c
ln -s /users/mike/.profile .
tail prog1.c
vi .profile
at 6pm Friday miscript
echo ``Hola mundo''
finger
[email protected]
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.