You are on page 1of 28

EL SHELL: COMANDOS BSICOS DE LINUX

Cualquier usuario de Linux acabar antes o despus relacionndose con el sistema


empleando el modo texto, y no los entornos grficos. Este modo se basa en la ejecucin
de una serie de comandos, que son interpretados por un programa o shell. Linux
dispone de varios de estos programas pero el ms habitual es conocido como bash o
Bourne Shell. i Linux se ha arrancado en modo texto el sistema arranca de forma
directa el shell y queda a la espera de introduccin de nuevos comandos. i se ha
arrancado en modo grfico se puede acceder al shell de dos formas!
e puede acceder al shell del sistema presionando alguna de las siguientes
combinaciones de teclas!
<ctrl>+<alt>+<F1>
<ctrl>+<alt>+<F2>
<ctrl>+<alt>+<F3>
<ctrl>+<alt>+<F4>
<ctrl>+<alt>+<F5>
<ctrl>+<alt>+<F>
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. "ara volver al modo grfico hay que presionar
<ctrl>+<alt>+<F!> o
<ctrl>+<alt>+<F"#
$a segunda forma es ms cmoda y menos radical permitiendo acceder al shell desde
el mismo entorno grfico. "ara esto hay que abrir un programa llamado terminal o
consola, por ejemplo! #console %en el entorno $%&'( xter)( *no)e+ter)inal %en
,N-.&&, etc.
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!
$os comandos hay que teclearlos exactamente.
$as letras may'sculas y min'sculas se consideran como diferentes.
En su forma ms habitual %los shells de (ourne o de )orn&, el sistema operativo utili*a
un signo de / como 0ro)0t para indicar que est preparado para aceptar comandos,
aunque este carcter puede ser fcilmente sustituido por otro u otros elegidos por el
usuario. En el caso de que el usuario acceda como administrador este signo se
sustituye por #.
Cuando sea necesario introducir el nombre de un fichero o directorio como argumento
a un comando, Linux, permite escribir las primeras letras del mismo y reali*a un
autorrellenado al presionar la tecla del tabula1or. i no puede distinguir entre
diversos casos rellenar hasta el punto en el que se diferencien. "or ejemplo,
supongamos una carpeta con los siguientes directorios!
2ro*ra)as
%ocu)entos30ro4ecto
%ocu)entos30ri5a1os
+l escribir c1 2r<tab> Linux rellenar el resto del contenido hasta escribir c1
2ro*ra)as. "or el contrario al escribir c1 %<tab> escribir c1 %ocu)entos
Sintaxis de los comandos
$os comandos tienen la siguiente sintaxis!
, programa arg- arg. ... argn
e observa que, en la //l0nea de comandos11, se introduce el programa seguido de uno o
varios argumentos. +s0, el intrprete ejecutar el programa con las opciones que se
hayan escrito.
Cuando se quiere que el comando sea de varias l0neas, se separa cada l0nea con el
carcter barra invertida %2&. +dems, cuando se quiere ejecutar varios comandos en la
misma l0nea, los separa con punto y coma %3&. "or ejemplo!
, ma4e modules 3 ma4e modules5install
En los comandos, tambin se puede utili*ar los comodines!
El asterisco %6& es equivalente a uno o ms caracteres en el nombre de un archivo.
Ejm! ls 6.c lista todos los archivos con extensin c.
El signo de interrogacin %7& es equivalente a un 'nico carcter. Ej.! ls curso.te7
lista el archivo curso.tex completando el 'ltimo carcter.
8n conjunto de caracteres entre corchetes es equivalente a cualquier carcter del
conjunto. Ej.! ls curso5linux.t9aeiou:x lista curso5linux.tex seleccionando la e
del conjunto. .
Alias
8n //alias11 es un nombre alternativo para un comando. +s0, en lugar de escribir el
comando propiamente dicho, escribir0amos el alias de dicho comando.
8n alias se puede definir por varios motivos, por ejemplo!
;ar nombres familiares a comandos comunes!
alias md<1m4dir1
Crear0a un alias para el comando m4dir, similar al de ;=.
;ar nombres a comandos largos!
alias tb*.<1tar >cv >>use>compress>program<b*ip. >f1
Crear0a un alias para el comando tar para que use el compresor b*ip. en lugar de
g*ip.
"ara no tener que escribir todos los alias siempre que entremos al sistema, escribir0amos
dicho alias en el archivo ?.bash5profile
Directorios en Linux:
(ajo $inux el espacio de archivos que es visible a los usuarios est basado en una
estructura de rbol, con la ra0* en la parte superior % ? &. El directorio ms alto, ?, es
conocido como directorio ra0*.


?



bin dev etc home lib usr proc root sbin var




"or lo general, la mayor parte del sistema operativo reside en dos sistemas de archivos!
el sistema de archivos ra0*, 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. @uchos de los comandos como ls, son en
realidad programas que se encuentran en este directorio.

El directorio sbin tambin se utili*a para guardar archivos binarios de sistema. $a
mayor0a 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 $inux.
on los archivos que personali*an $inux. ". ej. el archivo de contraseAas, passBd, se
encuentra aqu0.

$as bibliotecas compartidas que emplean los programas cuando se ejecutan estn
guardadas en el directorio ?lib. @ediante el uso de estas bibliotecas compartidas,
muchos programas pueden utili*ar el mismo cdigo, y estas bibliotecas se pueden
guardar en un lugar com'n, reduciendo el tamaAo 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 hardBare del sistema. "or ejemplo, el
archivo ?dev?mouse se utili*a para la lectura de entrada del mouse.

?proc es un sistema de archivos virtual. e 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 tamaAo a lo largo del
tiempo. "or lo general, los diversos archivos de bitcora de sistema se encuentran bajo
este directorio. El directorio ?var?spool y sus subdirectorios se utili*an 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. "or lo general, los subdirectorios de ?usr contienen los grandes
paquetes de softBare que se instalan.

?usr?bin e guardan ah0 muchos de los programas ejecutables de $inux
?usr?etc +rchivos de configuracin miscelneos
seccionC-
seccionC.
?usr?include +rchivos de inclusin para el compilador de C.
?usr?lib (ibliotecas para los programas durante el enlace
?usr?man "ginas del manual de $inux
?usr?src +h0 se almacena el cdigo fuente de diferentes programas del sistema
?usr?local Est diseAado para la personali*acin local del sistema. "or lo general,
gran parte del softBare local se instala en los subdirectorios de este
directorio.

Algunos Co!ndos Sencillos de LINUX
"!ss"d
"ara efectuar el cambio o la introduccin de un passBord o contraseAa o agregar alguna
a una cuenta que no la tenga. "rimero se especifican la nueva y antigua contraseAa, y
luego se verifica la nueva.
El proceso a seguir es el siguiente!
6current' UNIX 0ass7or1! %se teclea la contraseAa actual3 no aparece en pantalla&
Ne7 UNIX 0ass7or1! %se teclea la nueva contraseAa3 no aparece en pantalla&
8et40e ne7 UNIX 0ass7or1! %se teclea de nuevo la nueva contraseAa comprobando que
se ha tecleado bien. i no coincide no se cambia produce el cambio&.
Changing passBord for Duser#
Enter old passBord ! passBord
Enter neB passBord!passBord
Ee>type neB passBord!passBord
d!te @uestra por pantalla el d0a y la hora.
c!l 1949 @uestra el calendario del aAo -FGF.
cal :5 1949 @uestra el calendario de mayo de -FGF.
"#o Hndica qu usuarios tiene el ordenador en ese momento, en qu terminal estn y
desde qu hora.
"#o!i Hndica cul es la terminal y la sesin en la que se est trabajando.
!n co!ndo
Iodos los manuales de Linux estn dentro del propio sistema operativo, y este
comando permite acceder a la informacin correspondiente al comando
co)an1o. "or ejemplo con )an 7ho aparecer por pantalla y de forma
formateada por pginas, la explicacin del comando 7ho. e puede navegar a
travs de estas pginas con los cursores del teclado, y presionando $ para salir.
man ls! muestra la informacin sobre el comando de visuali*acin de la pantalla.
man dir! muestra la informacin sobre el comando que contiene los directorios.
man m4dir! muestra la informacin sobre la creacin de archivos.
man rmdir! muestra la informacin sobre borrar ficheros.
man pico! muestra la informacin sobre el uso de este editor de texto.
cle!r
Este comando limpia la consola.
Directorio %erson!l
Como se ha visto anteriormente el directorio personal es un directorio con un
determinado nombre asignado a un usuario. $os directorios personales habitualmente
son subdirectorios de ;ho)e %en algunos casos se utili*a )nt, u otro subdirectorio de
orden inferior&. Jeneralmente el nombre coincide con el del no)bre 1e usuario,
aunque puede no ser as0, 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.
List!do del contenido de directorios: co!ndo ls
8na 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 @uestra los nombres de los ficheros
y subdirectorios contenidos en el directorio en el que se est. lo se obtienen los
nombres de los ficheros, sin ninguna otra informacin.
ls +a @uestra todos los ficheros incluyendo algunos que ordinariamente estn ocultos
para el usuario %aquellos que comien*an por un punto&. e 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, tamaAo y fecha de creacin o del 'ltimo cambio
introducido,...
ls +c @uestra ordenando por d0a y hora de creacin.
ls +t @uestra ordenando por d0a y hora de modificacin.
ls +r @uestra el directorio y lo ordena en orden inverso.
ls sub1ir @uestra el contenido del subdirectorio sub1ir.
ls +l <ilena)e @uestra toda la informacin sobre el fichero.
ls ++color @uestra el contenido del directorio coloreado.
$as opciones anteriores pueden combinarse. "or ejemplo!
ls +cr @uestra el directorio ordenando inversamente por fechas.
El comando ls admite los caracteres de sustitucin o metacarcteres 66& y 67&. El carcter
= representa cualquier conjunto o secuencia de caracteres. El carcter > representa
cualquier carcter, pero slo uno. "or ejemplo!
ls =?*i< @uestra todos los nombres de ficheros que acaben en ?*if, por ejemplo 1ib1?*i<(
a?*if, etc..
ls <ile> @uestra todos los ficheros cuyos nombres empiecen por <ile y tengan un nombre
de cinco caracteres, por ejemplo! <ile1( <ile2( <ilea, etc.
Cre!cin de su&directorios. Co!ndo 'dir
El comando )#1ir 6)a#e 1irectory& permite a cada usuario crear un nuevo
subdirectorio!
)#1ir sub1ir1
donde sub1ir es el nombre del directorio que se va a crear.
m4dir >p, >>parents! crea los directorios padre que faltan para cada argumento.
m4dir >>verbose! muestra un mensaje para cada directorio creado.
m4dir >help! muestra un mensaje de salida estndar de ayuda
Borr!do de su&directorios. Co!ndo rdir
Este comando borra uno o ms directorios del sistema 6re)o5e 1irectory&, siempre que
estos subdirectorios estn (!c)os. "or ejemplo!
r)1ir sub1ir1
donde sub1ir es el nombre del directorio que se va a eliminar.
rmdir >p! borra el archivo aunque tenga mas componentes en el.
rmdir >>help! muestra un archivo de ayuda.
rm >>versin! muestra el tipo de versin con el que esta trabajando la mquina.
C!&io de directorio. Co!ndo cd
Este comando permite cambiar de directorio a partir del directorio actual de trabajo. "or
ejemplo,
c1 ;ho)e;2e1ro En este ejemplo pasamos del directorio actual de trabajo al nuevo
directorio
;ho)e;2e1ro, que ser desde ahora nuestro nuevo directorio.
c1 1ire Kos traslada al subdirectorio 1ire %que deber existir como subdirectorio en el
directorio actual&.
c1 ?? Eetrocedemos un nivel en la jerarqu0a de directorios. "or ejemplo, si estamos en
;ho)e;2e1ro y usamos este comando, pasaremos al escalafn inmediatamente superior
de la jerarqu0a de directorios, en este caso a ;ho)e.
Nota! al contrario que en .S+%-S en Linux no existe la forma cd.. sin espacio entre cd
y los dos puntos.
c1 Kos sit'a nuevamente en el directorio personal del usuario.
Situ!cin !ctu!l. Co!ndo *"d
El comando 071 60rint 7or#in* 1irectory& visuali*a o imprime la ruta del directorio en
el que nos encontramos en este momento. Este comando es uno de los pocos que no
tiene opciones y se utili*a escribiendo simplemente 071.
Acceso ! unid!des de disco
Linux a diferencia de @in1o7s no utili*a letras %La!L, Lc!L, Ld!L, ...& para acceder a las
distintas unidades de disco de un ordenador. En Linux para acceder al contenido de una
unidad de disco o de un C;>E=@ este tiene que haber sido previamente A)onta1oL. El
)onta1o se reali*a mediante el comando ount, con lo que el contenido de la unidad
se pone a disposicin del usuario en el directorio de Linux que se elija. "or ejemplo
para acceder al C;>E=@ se teclear0a el siguiente comando!
)ount +t iso9: ;1e5;c1ro) ;)nt;c1ro)?
donde +t iso9: indica el tipo de sistema que usa la unidad de disco para guardar los
ficheros %las ms usuales son! iso9: en el caso de un C;>E=@, 5<at en el caso de
@in1o7s, y ext2 en el caso de Linux&, ;1e5;c1ro) indica el dispositivo que se va a
montar. Iodos los dispositivos estn representados por un fichero del directorio ;1ev,
por ejemplo en el caso de un disquete ser seguramente ;1e5;<1:, por 'ltimo
;)nt;c1ro) es el directorio en el que se pondr a disposicin del usuario el contenido
del C;>E=@. "ara montar disquetes se suele utili*ar el directorio ;)nt;<lo004.
;e todas formas el usuario siempre puede crear un directorio vac0o 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 A1es)ontarloL mediante el comando u)ount
antes de sacar el disquete o el C;>E=@. En este 'ltimo caso deber0a escribir!
u)ount ;)nt;c1ro)
"ara utili*ar el comando )ount de la forma anterior hace falta ser administrador o root.
"ara que un usuario com'n pueda utili*ar disquetes, C;>E=@, etc. hay que editar el
fichero ;etc;<stab "or ejemplo para que cualquier usuario pueda acceder a un disquete
habr que indicar la siguiente l0nea!
;1e5;<1: ;)nt;<lo004 5<at user(noauto : :
Iambin habr que asegurarse de que el directorio ;)nt;<lo004 sea accesible por todos
los usuarios.
8na ve* seguidos los pasos anteriores cualquier usuario podr LmontarL un disquete
escribiendo el siguiente comando!
)ount ;)nt;<lo004
+l igual que antes el usuario deber ejecutar el comando u)ount ;)nt;<lo004 antes de
sacar el disquete.
Nota! Existen en la actualidad distribuciones %p. ej. Linux .an1ra#e& que reali*an este
proceso de forma automtica por lo que las unidades de disquete y C;>E=@ quedan
accesibles a todos los usuarios de una forma sencilla, empleando los comandos!
)ount ;)nt;<lo004
u)ount ;)nt;<lo004
siempre que ;)nt;<lo004 sea la ruta adecuada.
Co*i! de +ic#eros. Co!ndo c*
Este comando tiene la siguiente forma,
c0 <ile1 <ile2
y hace una copia de <ile1 y le llama <ile.. i <ile2 no exist0a, lo crea con los mismos
atributos de <ile-. i <ile2 exist0a antes, su contenido queda destruido y es sustituido por
el de <ile-. El fichero <ile2 estar en el mismo directorio que <ile-. Ianto file- como
file. 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. =tra posibilidad es!
c0 <ile1 <ile2 na)e1ir
que hace copias de <ile1 y <ile2 en el directorio na)e1ir.
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.
,r!sl!do - c!&io de no&re de +ic#eros. Co!ndo (
Este comando tiene una forma similar al anterior,
)5 <ile1 <ile2
El comando )5 reali*a la misma funcin que el anterior 6cp& pero adems destruye el
fichero original. En definitiva traslada el contenido de <ile1 a <ile.3 a efectos del usuario
lo que ha hecho es cambiar el nombre a <ile-, llamndole <ile.. ;e igual forma,
)5 <ile1 <ile2 na)e1ir
traslada uno o ms ficheros 6<ile-, <ile.,...& al directorio na)e1ir conservndoles el
nombre. El comando,
)5 na)e1ir1 na)e1ir2
cambia el nombre del subdirectorio na)e1ir1 por na)e1ir2.
mv >i! con esta variacin al mover o renombrar alg'n fichero el comando pide una
confirmacin si ya hay un fichero destino.
mv >f! este comando no pide confirmacin.
mv >f, >>force!borra todos los ficheros de destino existentes, sin preguntar al usuario.
mv >v, >>verbose! con este comando se borra el nombre de cada fichero antes de
moverlo.
mv >u, >>pdate! no mueve un fichero que tenga un destino con el mismo tiempo de
modificacin.
May que recalcar que el comando )5 sirve as0 mismo para cambiar el nombre de los
ficheros.
Enl!ces ! +ic#eros. Co!ndo ln
En Linux un mismo fichero puede estar repetido con ms de un nombre, ya que con el
comando c0 se pueden reali*ar cuantas copias se desee del fichero. "ero, a veces, es ms
prctico tener un mismo fichero con varios nombres distintos, y lo que es ms
importante, poder acceder a l desde ms de un directorio. En Linux esto recibe el
nombre de enlaces m'ltiples a un fichero. El ahorro de espacio de disco es importante al
poder compartir un fichero ms de un usuario. Estos enlaces son muy prcticos a la hora
de utili*ar ficheros que pertenecen a directorios distintos. Jracias a los enlaces se puede
acceder a muchos ficheros desde un mismo directorio, sin necesidad de copiar en ese
directorio todos esos ficheros. $a forma de este comando es,
ln <ile1 <ile2
+ partir de este momento el fichero <ile1 tiene dos nombres! <ile1 y <ile.. + diferencia
de los comandos c0 y )v, este comando toma ms precauciones, ya que advierte
previamente si el nombre <ile2 est ocupado, y en este caso no se ejecuta.
ln 0anacea sub1ir;0anacea
;espus de este comando el fichero 0anacea tendr el mismo nombre, pero a efectos
del usuario estar colocado en dos sitios distintos! en el directorio actual y en el
subdirectorio sub1ir. $os ficheros enla*ados a otro se borran como los ficheros
normales. i se borra el fichero original permanece su contenido en los ficheros
enganchados.
Borr!do de +ic#eros. Co!ndo r
Este comando tiene las formas siguientes,
r) <ile1 <ile2
Este comando elimina uno o ms ficheros de un directorio en el cual tengamos permiso
de escritura. Con este comando resulta facil0simo borrar ficheros in'tiles, y
desgraciadamente, tambin los 'tiles. "or eso es conveniente y casi imprescindible
emplear lo opcin +i, de la forma siguiente!
r) +i <ile1 <ile2
Con esta opcin, Linux pedir confirmacin para borrar cada fichero de la lista, de si
realmente se desea su destruccin o no. e recomienda usar siempre este comando con
esta opcin para evitar el borrado de ficheros 'tiles. "or ejemplo, si se teclea,
r) +i su0er<luo
aparecer en pantalla el aviso siguiente!
re)o5e su0er<luo>
y habr que contestar 4 %yes& o n %not&. En este comando se pueden utili*ar los
caracteres de sustitucin 6= y 7&, como por ejemplo,
r) <ich=
que borrar0a todos los ficheros del directorio actual que comiencen por <ich. El comando
r) =
borrar todos los ficheros del directorio actual, mientras que
r) +i =
reali*a 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.
C!r!cter)stic!s de un +ic#ero. Co!ndo +ile
Este comando reali*a una serie de comprobaciones en un fichero para tratar de
clasificarlo. u formato es!
<ile <ich
Iras su ejecucin este comando muestra el tipo del fichero e informacin al respecto del
mismo.
C!&io de odo de los +ic#eros co!ndos c#od. c#o"n - c#gr*
$os permisos de cada fichero se pueden ver con el comando ls +l. "ara cambiar los
permisos de un fichero se emplea el comando ch)od, que tiene el formato siguiente!
ch)o1 BCuienD o0er 0er)iso <iles
Cuien Hndica a quien afecta el permiso que se desea cambiar. Es una combinacin
cualquiera de las letras u para el usuario, * para el grupo del usuario, o para los otros
usuarios, y a para todos los anteriores. i no se da el Cuien, el sistema supone a.
o0er Hndica la operacin que se desea hacer con el permiso. "ara dar un permiso se
pondr un N, y para quitarlo se pondr un >.
0er)iso Hndica el permiso que se quiere dar o quitar. er una combinacin cualquiera
de las letras anteriores ! r(7(x(s.
<iles Kombres de los ficheros cuyos modos de acceso se quieren cambiar. "or ejemplo,
para quitar el permiso de lectura a los usuarios de un fichero el comando es!
ch)o1 a +r <ichero?txt
chmod N hase que los permisos seAalados se aAadan.
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.
$os 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 ls3 el permiso
7 da la posibilidad de crear y borrar ficheros en ese directorio, y el permiso x autori*a a
buscar y utili*ar un fichero concreto.
"or otra parte, el comando cho7n se emplea para cambiar de propietario %Lchange
o7nerL& a un determinado conjunto de ficheros. Este comando slo lo puede emplear el
actual propietario de los mismos. $os nombres de propietario que admite Linux son los
nombres de usuario, que estn almacenados en el fichero ;etc;0ass7d. $a forma general
del comando cho7n es la siguiente!
cho7n ne7o7ner <ile1 <ile2 ???
choBn >r! cambia propietario de directorios.
choBn >c, >>changes! muestra los ficheros cuyos propietarios cambian.
choBn >f, >>silent, >quiet! no muestra mensajes de error sobre ficheros que no puedan
cambiarse.
choBn >help! muestra un mensaje de ayuda.
+nlogamente, el grupo al que pertenece un fichero puede ser cambiado con el
comando ch*rp, que tiene una forma general similar a la de cho7n,
ch*r0 ne7*rou0 <ile1 <ile2???
$os grupos de usuarios estn almacenados en el fichero ;etc;*roup.
Exit
Iermina la sesin de $inux en una terminal

More
Exhibe pantallas completas de un archivo de texto. Oiltro de fichero para la
visuali*acin en terminales.
more >num! especifica el tamaAo de la pantalla.
more >p! limpia toda la pantalla.
more >u! suprime el subrayado.
more >l! deshabilita el avance de pgina.
more >s! reducir m'ltiples l0neas en blanco a una.
!il

@anda y recibe correos electrnicos.
mail >v! cambia al modo verbose.
mail >i! ignora los bloques de interrupcin.
mail >i! fuer*a al mail correr en un modo interactivo.
mail >c! manda copias a la lista de usuarios.
mail >f! lee el contenido de los archivos especificados.
%ico
"ico es un simple editor de texto.
ctrl >4 !borra texto seleccionado
ctrl >h! muestra la opcin de comandos.
ctrl >m! muestra el funcionamiento del ratn.
ctrl >c! enable files name completion.

*ine
"rograma diseAado para enviar o recibir correos electrnicos.
adress! manda correos a una direccin dada.
pine >attach file! manda correos a una lista de archivos.
pine >file! abre archivos de texto.
pine >h! ayuda
Es*!cio ocu*!do en el disco Co!ndos du - d+
El comando 1u permite conocer el espacio ocupado en el disco por un determinado
directorio y todos los subdirectorios que cuelgan de l. "ara usarlo basta simplemente
colocarse en el directorio adecuado y teclear, 1u, ste comando da el espacio de disco
utili*ado en bloques. "ara obtener la informacin en bytes se debe emplear el comando
con la opcin Eh! 1u +h
El comando 1< por el contrario informa del espacio usado por las particiones del sistema
que se encuentren montadas.
/isu!li0!cin sin +or!to de un +ic#ero. Co!ndo c!t
Este comando permite visuali*ar el contenido de uno o ms ficheros de forma no
formateada. Iambin permite copiar uno o ms ficheros como apndice de otro ya
existente. +lgunas formas de utili*ar este comando son las siguientes,
cat <ilena)e aca por pantalla el contenido del fichero <ilena)e.
cat <ile1 <ile2??? aca por pantalla, secuencialmente y seg'n el orden especificado, el
contenido de los ficheros indicados.
cat <ile1 <ile2 ><ile3 El contenido de los ficheros <ile1 y <ile2 es almacenado en <ileP.
cat <ile1 <ile2 >><ile3 El contenido de <ile1 y <ile2 es aAadido al final de <ileP.
cat ><ile1 +cepta lo que se introduce por el teclado y lo almacena en <ile1 %se crea
<ile-&. "ara terminar se emplea <ctrl>1
Co!ndo #e!d
hea1 +! <ilena)e escribe las Q primeras l0neas del fichero filename
/isu!li0!cin de +ic#eros con +or!to. Co!ndo *r
Este comando, a diferencia de cat, imprime por consola el contenido de los ficheros de
una manera formateada, por columnas, controlando el tamaAo de pgina y poniendo
cabeceras al comien*o de las mismas. Est muy en relacin con el comando l0 de salida
por impresora. $as formas ms importantes que admite son las siguientes!
0r <ile "roduce una salida estndar de RR l0neas por pgina, con un encabe*amiento de S
l0neas %. en blanco, una de identificacin y otras . l0neas en blanco&.
0r +ln <ile "roduce una salida de n l0neas por pgina %cuando el tamaAo de papel de
impresora, por ejemplo, tiene un n'mero de l0neas distinto de RR&
0r +0 <ile Mace una pausa para presentar la pgina, hasta que se pulsa <return> para
continuar
0r +t <ile uprime las S l0neas del encabe*amiento y las del final de pgina.
0r +7n <ile +justa la anchura de la l0nea a n posiciones.
0r +1 <ile $ista el fichero con espaciado doble.
0r +h FcaracteresF <ile el argumento o cadena de caracteres FcaracteresF se convertirn
en la cabecera del listado.
0r +n <ile Hmprime el fichero a partir de la pgina n.
+dems de los ejemplos anteriores, se pueden combinar varias opciones en un mismo
comando, como por ejemplo en! 0r +1t <ile la salida de este comando es por la consola,
pero puede redireccionarse a otro fichero, por ejemplo, si ejecutamos el comando! 0r
<ile1 > <ile2 se crea un fichero nuevo llamado <ile2 que es idntico a <ile-, pero con
formato por pginas y columnas.
/isu!li0!cin de +ic#eros *!nt!ll! ! *!nt!ll!. Co!ndos ore - less
Estos comandos permiten visuali*ar un fichero pantalla a pantalla. El n'mero de l0neas
por pantalla es de .P l0neas de texto y una 'ltima l0nea de mensajes, donde aparecer la
palabra more. Cuando se pulsa la barra espaciadora %el espacio en blanco&, se
visuali*ar la siguiente pantalla. "ara salir de este comando %terminar la visuali*acin&
se pulsa <ctrl>1 o q. "or ejemplo! )ore <ile
El comando less es muy similar al anterior pero permite el despla*amiento a lo largo del
texto empleando las teclas de cursores pudiendo despla*arse hacia arriba o abajo de un
fichero.
B1s$ued! en +ic#eros. Co!ndos gre*. +gre* - egre*
El comando *re0 locali*a 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 l0neas que contienen el conjunto de caracteres buscado.
i 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 %1&. u formato es
el siguiente!
*re0 GconHuntocaracteresG <ile1 <ile2 <ile3
siendo 1conjuntocaracteres1 la secuencia de caracteres a buscar, y <ile-, <ile., y <ile31 los
ficheros donde se debe buscar. Teamos un nuevo ejemplo!
*re0 GI8IJN,ULJ8IKJLI-N .JI8IKG )atrix?< scalin*?<
Este comando buscar I8IJN,ULJ8IKJLI-N .JI8IK entre las l0neas de los
ficheros )atrix?< y scalin*?<? Este comando permite seleccionar, entre todas las l0neas
de uno o ms ficheros, aquellas que contienen un motivo que satisface una expresin
regular determinada.
grep [-opcin] expresin_regular [referencia...]
$as opciones principales son!
c lo 'nico que se hace es escribir el n'mero de las l0neas que satisfacen la condicin.
i no se distinguen may'sculas y min'sculas.
l se escriben los nombres de los ficheros que contienen l0neas buscadas.
n cada l0nea es precedida por su n'mero en el fichero.
s no se vuelcan los mensajes que indican que un fichero no se puede abrir.
5 se muestran slo las l0neas que no satisfacen el criterio de seleccin.
+ continuacin se muestra una serie de ejemplos.
U *re0 MN1O text l0neas que comien*an por d.
U *re0 MNBN1DO text l0neas que no comien*an por d.
U *re0 +5 MNLO <ile1 > <ile2 quita las l0neas de file- que comien*an por C y lo copia en
file..
Co!ndos t!r - g0i*
Ianto el comando tar como *Pi0 son ampliamente empleados para la difusin de
programas y ficheros en Linux. El primero de ellos agrupa varios ficheros en uno solo o
Aarchi5oL, mientras que el segundo los comprime. En conjunto estos dos programas
act'an de forma muy similar a programas como @inPip. "ara crear un nuevo archivo se
emplea!
tar Ec5< no)bre3archi5o?tar <ichero1 <ichero2 Q
donde fichero-, fichero. etc. son los ficheros que se van a aAadir al archivo tar. i se
desea extraer los ficheros se emplea
tar Ex05< no)bre3archi5o?tar <ichero1 Q
+l contrario que tar que agrupa varios ficheros en uno, *Pi0 comprime un 'nico fichero
con lo que la informacin se mantiene pero se reduce el tamaAo del mismo. El uso de
*Pi0 es muy sencillo
*Pi0 <ichero
con lo que se comprime fichero %que es borrado& y se crea un fichero con nombre
<ichero?**. i lo que se desea es descomprimir un fichero se emplea entonces!
*Pi0 E1 <ichero?*P
recuperando el fichero inicial. Como se ha comentado al principio es t0pico emplear tar
y *Pi0 de forma consecutiva, para obtener ficheros con extensin tar?*P o t*P que
contienen varios ficheros de forma comprimida %similar a un fichero Pip&. El comando
tar incluye la opcin * para estos ficheros de forma que para extraer los ficheros que
contiene!
tar EPx< <ichero?tar?*P
Co!ndos de i*resin.
Co!ndo l*r
El comando l0r se emplea para imprimir una serie de ficheros. i se emplea sin
argumentos imprime el texto que se introdu*ca a continuacin en la impresora por
defecto. "or el contrario,
l0r no)bre3<ichero
imprime en la impresora por defecto el fichero indicado.
2EDI2ECCIONES 3 ,4BE25AS
2edirecciones
$os comandos de Linux tienen una entrada estndar %n'mero C& y dos salidas estndar
%n'mero - para la salida normal del comando, y n'mero . para la salida de los mensajes
de error que se puedan producir en su ejecucin&. "or defecto tanto la entrada como las
salidas estndar de los comandos son la propia terminal, a no ser que por la propia
naturale*a del comando se den en l los nombres de algunos ficheros que hagan el papel
de entrada y de salida. "or ejemplo, en el comando
c0 <ile1 <ile2
<ile1 es la entrada y <ile2 es la salida3 aqu0 no intervienen las entradas y salidas estndar.
in embargo, cuando utili*amos por ejemplo el comando ls %listado de directorio&, la
salida de este comando se dirige hacia la terminal. i queremos que la salida de este
comando se dirija a un fichero llamado <ile, podr0amos escribir,
ls ><ile
el 6#& es uno de los llamados operadores de redireccin y dirige la salida estndar hacia
el fichero indicado a continuacin3 si este fichero no existe, se crea en ese momento.
=tros operadores de redireccin son el operador 6D& que redirige la entrada estndar
desde un determinado fichero, y el operador 6>#& que redirige la salida estndar hacia
otro fichero, pero aAadiendo dicha salida al final de ese fichero, sin sobrescribir el
contenido original. "or ejemplo, si cada ve* que entramos en el sistema ejecutamos el
comando,
1ate >>archi5o
tendremos un fichero llamado archi5o que contiene informacin sobre todas las veces
que hemos entrado en el sistema. =tro ejemplo, para aAadir al fichero <ile2 al final de
<ile1 y al conjunto llamarle <ileP, ser0a
cat <ile1 <ile2 ><ile3
o, si quisiramos que el fichero resultante fuera el mismo <ile-,
cat <ile2 >><ile1
8n ejemplo en redireccin a la entrada podr0a ser el siguiente,
)ail Huan <carta
que env0a al usuario Huan el contenido del fichero carta.
,u&er)!s
iguiendo con los ejemplos anteriores, si quisiramos enviar a Huan una lista de
nuestros ficheros podr0amos utili*ar los comandos,
ls ><ichero
)ail Huan <<ichero
r) <ichero
Es decir que hemos conectado la salida estndar de ls con la entrada estndar de )ail, a
travs de un fichero transitorio <ilelist. Linux permite hacer esta operacin
directamente, sin pasar por el fichero de almacenamiento transitorio! esto se hace
mediante el concepto de tuber0a %pipe&, que consiste en empalmar la salida estndar de
un comando con la entrada estndar de otro. "ara el ejemplo anterior esto se hace en la
forma,
ls R )ail Huan
Con el operador de tuber0a 6V& se pueden empalmar tantos comandos como se desee.
Bi+urc!cin o , 6co!ndo tee7
+ veces interesa que la salida de un comando, adems de redirigirse a un determinado
fichero, se bifurque tambin hacia la terminal, con objeto de observar inmediatamente el
resultado. Esto se consigue con el operador tee, que podr0a emplearse de la siguiente
forma!
ls R tee <ile
la salida de ls se bifurca hacia la terminal y hacia <ile.
i quisiramos que la salida de este comando se aAadiera al final de <ile, deber0amos
utili*ar la opcin +a,
ls R tee +a <ile
2edireccin de l! s!lid! de errores
$os mensajes de error se dirigen a la salida n'mero ., que normalmente es tambin la
terminal. + veces, por ejemplo cuando se quiere ejecutar un comando en bac4ground
%ejecutar un comando en bac4ground es lan*ar su ejecucin y recuperar el control de la
terminal sin esperar a que termine, lo cual se hace aAadiendo el carcter S al final del
comando&, interesa evitar que los mensajes de error apare*can en la pantalla, pues en
ella habremos empe*ado a hacer otra cosa. upongamos por ejemplo que queremos
compilar y montar en bac4ground un conjunto de ficheros, dirigiendo los listados a un
fichero llamado lista1os, y los mensajes de error a un fichero llamado errores. $o
har0amos en la forma,
*cc 0rueba?c 2>errores
con lo cual la salida . %errores& se redirige hacia el fichero errores. "ara redirigir la
salida estndar de errores al mismo fichero que la salida estndar se emplea un comando
como!
0ro*ra) <1atos?1 >resulta1os?r 2>S1
E8EC4CI9N DE %2O:2AMAS
E;ecucin en el +ondo < . 'ill. nice - no#u*
"ara ejecutar un programa en el fondo, es decir, recuperando inmediatamente el control
del terminal, basta aAadir el carcter S al final del comando de ejecucin!
0ro*ra) <1atos?1 >resulta1os?r S
inmediatamente aparecer en el terminal, debajo de esta l0nea, un n'mero que es el
nT)ero 1e 0roceso de la ejecucin de este programa. "ara detener definitivamente
dicha ejecucin %no se puede detener temporalmente& se puede utili*ar el comando #ill!
#ill nT)ero1e0roceso
$a ejecucin de un programa en el fondo no impide que apare*can en la pantalla los
mensajes de error que se produ*can %a no ser que se haya redirigido la salida de errores&,
y que el programa se pare cuando se salga del sistema. "ara que el programa contin'e
ejecutndose a'n cuando nosotros hayamos terminado la sesin, hay que utili*ar el
comando nohup!
nohu0 0ro*ra)
i no se utili*an redirecciones todas las salidas del programa se dirigen a un fichero
llamado nohu0?out. Cuando se utili*a nohu0 el ordenador entiende que el usuario no
tiene prisa y automticamente disminuye la prioridad de la ejecucin. Existe un
comando, llamado nice, que permite reali*ar 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. e utili*a en las formas,
nice 0ro*ra) S
nice nohu0 0ro*ra) S
"ara darle al programa la prioridad m0nima habr0a que utili*ar el comando,
nice +19 0ro*ra) S
donde el >-F indica la m0nima prioridad.
Co!ndo tie
El comando ti)e, precediendo a cualquier otro comando, suministra informacin acerca
del tiempo total empleado en la ejecucin, del tiempo de C"8 utili*ado por el programa
del usuario, y del tiempo de C"8 consumido en utili*ar recursos del sistema. "or
ejemplo para saber el tiempo utili*ado en la compilacin y montaje del programa
0rueba?c utili*ar0amos el comando,
ti)e *cc 0rueba?c
Co!ndo to*
Linux incluye una aplicacin llamada to0 cuya finalidad es manipular la ejecucin de
programas de una forma interactiva. Esta aplicacin muestra una lista de los procesos
que se estn ejecutando. $os principales comandos de top son! u que muestra los
procesos que pertenecen a un determinado usuario, 4 equivalente al comando 4ill para
matar un proceso y h que muestra la ayuda del programa.
%2O:2AMAS DE COMANDOS
El sistema operativo Linux, al igual que otros sistemas operativos, permite reali*ar
programas de comandos, esto es, programas constituidos por distintos comandos que
podr0an 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.
$os 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.
8na cierta primera forma de agrupar comandos la ofrece Linux por medio del carcter 3.
"or ejemplo, tecleando el comando,
1ateU lsU 7ho
el ordenador ejecutar sucesivamente los comandos 1ate, ls y 7ho. Iambin podr0a
crearse con un editor de textos un fichero llamado co)an1os que contuviera las l0neas
siguientes!
1ate
ls
7ho
"ara ejecutar este fichero de comandos puede teclearse,
sh co)an1os
o bien convertir el fichero co)an1os en directamente ejecutable por medio del comando
ch)o1 en la forma,
ch)o1 a+x co)an1os
de modo que el programa de comandos co)an1os puede ejecutarse simplemente
tecleando su nombre,
co)an1os
$os comandos sh co)an1os y co)an1os no son enteramente equivalentes. +s0, el
primero de ellos exige que el fichero co)an1os est en el directorio de trabajo, mientras
que el segundo slo exige que el fichero co)an1os est en uno de los directorios de
b'squeda de comandos especificados en la variable 2JIM.
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. "ara que las variables del
capara*n original conserven su valor en el nuevo capara*n es necesario prepararlas
con la sentencia ex0ort antes de abrir el nuevo shell. "or 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 coent!rios
"ara introducir l0neas de comentarios en un programa de comandos basta comen*ar
dichas l0neas con el carcter ,. May 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 L+shell %una variante especial de 8KHW desarrollada en la
8niversidad de (er4eley& y el resultado es imprevisible. "uede ser buena prctica
comen*ar todos los ficheros de comandos con una l0nea en blanco.
/!ri!&les del s#ell
8KHW permite definir variables en un fichero de comandos en la forma,
US&8V;)nt;)ecan;Huanto
I&8.Vh02392
???
Es una prctica habitual el utili*ar nombres con letras may'sculas para las variables del
capara*n. "ara recuperar el valor de una variable hay que precederla con el carcter .
"or ejemplo, utili*ando en otra parte del programa I&8@, en dicho lugar se sustituir0a
I&8. por su valor, esto es, hp.PF.. El shell del Linux tiene definidas para cada
usuario unas variables estndar. "ara averiguar cules son basta teclear el comando
siguiente,
set
"ara definir otras variables propias de cada usuario puede utili*arse el fichero ?0ro<ile,
que es un fichero de comandos propio de cada usuario que se ejecuta automticamente
al hacer el login. "ara definir variables que contengan espacios en blanco deben
encerrarse entre caracteres 61& o 6L&, como por ejemplo,
F&LWJVA31 1e %icie)bre 1e 19"A
ms adelante se ver la diferencia entre el carcter 61& y el carcter 6L&.
Co!ndo ec#o
El comando echo imprime un determinado texto en la terminal. 8n ejemplo de
utili*acin de dicho comando puede ser el siguiente!
echo .e *usta el siste)a o0erati5o 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 8KHW %
= > B D > >> < S U X G & hay que tomar precauciones especiales desconectando su
significado. 8na forma de hacerlo es precediendo dicho carcter con la barra invertida
62&. +s0, para escribir mediante el comando echo tres asteriscos, utili*ar0amos
echo X=X=X=
si no utili*ramos la barra invertida, el asterisco se interpretar0a como un carcter de
sustitucin y se imprimir0a el nombre de todos los ficheros del directorio. =tra forma de
anular el significado de los caracteres especiales es encerrando el texto a escribir
mediante comillas 6L& o entre apstrofos normales 61&. $os apstrofos 61& anulan el
significado de todos los caracteres comprendidos entre ellos. +s0 pues, el triple asterisco
lo podr0amos escribir con el comando,
echo G===G
$as comillas %L& son menos restrictivas, y anulan el significado de todos los caracteres
excepto los tres siguientes! % / 2&. Esto es muy importante porque si T+E es el nombre
de una variable, y T+E aparece en un comando echo entre apstrofos se escribe T+E,
mientras que si aparece entre comillas se escribe el valor de la variable, al cumplir el
carcter su cometido.
El carcter %2& tiene otros significados, adems del ya visto de anular el significado
especial de otros caracteres. +s0, sirve como indicador de que un comando contin'a en
la l0nea siguiente. Cuando se utili*a en la definicin interactiva de un comando, en la
l0nea siguiente aparece el prompt secundario %#&, que indica que se debe seguir
tecleando el comando. Cuando en un comando echo aparecen los caracteres %2c& y %2n&
quiere decir, respectivamente, que no se cambie de l0nea y que se salte de l0nea, al
escribir por la pantalla.
El carcter apstrofo inverso o acento grave %/& tiene tambin un significado especial.
Cuando en un comando echo aparece el nombre de otro comando encerrado entre
apstrofos inversos %por ejemplo, /date/, /Bho/, /ls/, ...&, el nombre de dicho comando
se sustituye por el resultado que genera al ejecutarse interactivamente. 8n ejemplo
podr0a ser el siguiente!
echo ALos usuarios 1el siste)a son XnXn F7hoFA
El lector puede hacer la prueba y observar el resultado correspondiente.
%!r=etros de los +ic#eros de co!ndos
+ los ficheros de comandos pueden pasrseles como parmetros un conjunto de una o
ms variables. ;entro del fichero de comandos estas variables o parmetros se conocen
con los nombres C, -, ., ..., F. $a variable : representa el propio nombre del fichero de
comandos, y -, ., ..., 9 son los nombres de los parmetros propiamente dichos.
Tamos a comen*ar viendo un ejemplo muy sencillo de programa de comandos al que se
le pasa slo una variable o parmetro. El comando de borrar de Linux r) no confirma
la operacin de borrado si no se le pone la opcin 6+i&. Esto es peligroso porque uno
fcilmente puede olvidarse de teclear dicha opcin y borrar lo que no quer0a borrar.
Tamos a crear un fichero de comandos llamado 1el que incluya dicha opcin. ;icho
fichero podr0a estar formado por,
echo AYuiere borrar el <ichero 1>A
r) +i 1
;espus de darle a este fichero el correspondiente permiso de ejecucin con el comando
ch)od, podr0amos borrar con confirmacin el fichero <ile tecleando, 1el <ile?
;entro del fichero de comandos, : valdr0a 1el y 1 valdr0a <ile.
8n programa de comandos ms complicado y que utili*a dos parmetros podr0a ser el
contenido en el fichero ca)bio, que intercambia el nombre de dos ficheros!
)5 1 <ichero0u<o
)5 2 1
)5 <ichero0u<o 2
Este fichero se ejecutar0a en la forma,
ca)bio <ile1 <ile2
En este ejemplo : es ca)bio, 1 es <ile1 y 2 es <ile.. En realidad a un fichero de
comandos se le pueden pasar todos los argumentos que se deseen, aunque slo hay
nombre espec0fico para los nueve primeros %ms el propio nombre del comando&. El
n'mero de argumentos que se le pasa est contenido en la variable ,. $a variable =
contiene el conjunto de todos los parmetros. 8n nuevo ejemplo puede aclarar algo ms
este punto.
i el programa 1el que hemos hecho previamente lo hubiramos utili*ado en la forma!
1el =?<
tericamente deber0a de borrar, con confirmacin, todos los ficheros Fortran del
directorio. En la prctica no es as0, porque 6=?f& no representa un 'nico argumento sino
muchos argumentos %todos los ficheros Fortran del directorio&. Como resultado slo se
borra el primer fichero Fortran. "ara borrar todos e indicarnos adems cuntos ficheros
hay, el fichero 1el podr0a estar compuesto por los siguientes comandos!
echo AWa4 Z 0ro*ra)as Fortran XnA
r) +i =
El comando shi<t hace posible utili*ar 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 shi<t, 2 se convierte en -, 3 en ., etc, y lo que hubiera sido 1: en F,
con lo cual ya se puede referenciar. El comando shi<t deja inalterado : y puede
utili*arse tantas veces como se desee.
Otr!s *osi&ilid!des de los +ic#eros de co!ndos
$os ficheros de comandos tienen muchas ms posibilidades que las que se han apuntado
en esta Hntroduccin! pueden leer variables, preguntar por la existencia de un fichero y
por si es ejecutable o no, y admiten construcciones lgicas del tipo IO, %=, %-
@WILE, etc. "ara utili*ar estas posibilidades acudir al manual correspondiente.
COM%ILANDO %2O:2AMAS EN LIN4>
Linux como cualquier sistema Unix que se precie incluye un compilador de L 4 L+N.
Esto no implica que se est limitado a estos dos lenguajes de programacin. "or el
contrario existen una gran cantidad de compiladores gratuitos para los lenguajes ms
importantes.
El compilador de L;L++ de Linux es un compilador de l0nea de comandos, esto es, no
dispone de ninguna interfa* grfica que facilite la programacin y compilacin del
cdigo. Existen eso s0 editores de texto capaces de mostrar la sintaxis del cdigo
resaltada como #7rite, aunque la compilacin hay que reali*arla manualmente a travs
de una consola o terminal.
Co*il!cin - lin'!do
El primer paso para crear un programa, por ejemplo en CNN, es crear el fichero de
cdigo fuente, y guardarlo en un fichero de texto por ejemplo e1?c0p. Iras esto hay que
compilar el programa. "ara esto se emplear el comando gNN, de la siguiente forma!
*++ e1?c00
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. "ara
ejecutarlo emplearemos
?;a?out
Kormalmente no desearemos que el programa se llame a?out sino que tenga un nombre
ms significativo, como eHe)0lo3-, para conseguirlo emplearemos!
*++ +o eHe)0lo31 e1?c00
i queremos ejecutar el programa emplearemos ?;eHe)0lo3-. i el programa escrito
reali*a emplea alguna funcin que no se encuentre en la librer0a estndar hay que
incluirla en la orden de compilacin, por ejemplo!
*++ +o eHe)0lo32 e2?c00 +lna)e
;onde name es el nombre de la librer0a. "or defecto estas se guardan en un fichero cuyo
nombre es
libna)e?so, cuya locali*acin suele ser ;usr;lib.
i el programa no est escrito en CNN sino en C las opciones de compilacin son las
mismas salvo que en lugar del programa *++ se emplear el comando *cc.
*cc Eo eHe)0lo33 e3?c
Co!ndo !'e
Este comando sirve para organi*ar la compilacin y el enla*ado de programas
complicados que dependen de muchos mdulos y librer0as 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 +CHH %llamado por defecto )a#e<ile& que contiene una
relacin de dependencias entre los distintos mdulos, as0 como las acciones que hay que
reali*ar 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!
)a#e BE< )a#e<ilena)eD BEar*3o0tD Bexe3na)eD
El fichero )a#e<ile %con ste o con otro nombre invocado por medio de la opcin Ef&
contiene cuatro tipos de l0neas diferentes!
U $0neas de comentario, que comien*an por el carcter %,&. i en una l0nea cualquiera
aparece el carcter %,&, se ignora todo lo que aparece a continuacin de dicho carcter en
dicha l0nea.
U $0neas de definicin de macros. Iienen la forma general,
I%&NIIFILJ%-8 V ca1ena31e3caracteres
i en alguna otra l0nea aparece %H;EKIHOHC+;=E&, dicha ocurrencia se sustituye por
ca1ena31e3caracteres. Ko es necesario que el nombre del identificador est escrito con
may'sculas, pero es una costumbre bastante extendida el hacerlo as0. @ediante el uso de
macros se pueden representar brevemente pathnames o listas de nombres de ficheros
largos. i el identificador tiene una sola letra, no hace falta poner los parntesis. El
comando )a#e tiene una serie de macros definidas por defecto que se pueden listar con
el comando )a#e Ep.
$0neas describiendo las relaciones de dependencia. Iienen la forma,
<ile?o <ila?o ??? [ <ile1?c00 <ile2?c00 ???
$a lista de ficheros que estn a la i*quierda del carcter %!& dependen de los ficheros que
estn a la derecha. En estas l0neas se reali*a la sustitucin habitual de los caracteres %7
69:&
$0neas de comandos shell, comen*ando siempre por un tabulador. Estas l0neas
representan las acciones que hay que reali*ar para actuali*ar los ficheros dependientes,
seg'n las relaciones de dependencia descritas en la l0nea anterior. En una misma l0nea
de comandos puede haber varios comandos separados por un carcter %3&, y de este
modo se ejecutan en un mismo proceso3 si hay varias l0neas de comandos, cada l0nea se
ejecuta en un proceso diferente. Estos comandos shell %compilaciones, etc.& se ejecutan
o no seg'n las fechas de los ficheros correspondientes. May tambin una lista de
dependencias impl0citas y de macrodefiniciones standard que se pueden obtener con el
comando )a#e +0 %la salida de este comando puede tener varios cientos de l0neas&. +
continuacin se presentan algunos ejemplos de ficheros )a#e<ile.
+ continuacin se muestran una serie de ejemplos
, Esto es un ejemplo de fichero ma4efile
, ;efiniciones de macros
ma < ma.Qad.o ma.Qbd.o ma.Qcd.o
IEI! test.o %ma&
xlf Xo IEI X= %ma&
test.o! test.f
xlf Xc X= test.f
ma.Qad.o! ma.Qad.f
xlf Xc X= ma.Qad.f
ma.Qbd.o! ma.Qbd.f
xlf Xc X= ma.Qbd.f
ma.Qcd.o! ma.Qcd.f
xlf Xc X= ma.Qcd.f
May informaciones que no es necesario dar por que se suponen por defecto. "or
ejemplo, si el fichero objeto 6?o& y el fichero C 6?c& o CNN 6?c0p& tienen el mismo sufijo,
no hace falta definir esas relaciones de dependencia, que por otra parte son triviales.
B1s$ued! !(!n0!d! en +ic#eros. Ex*resiones regul!res
+ veces se desea encontrar las l0neas 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 b'squeda, por ejemplo
*re0 A2JIJIJSA Lista31e3la3co)0ra?txt
in embargo, en otras ocasiones el texto que se desea buscar no es 'nico, es decir, no
est un0vocamente determinado como en el ejemplo anterior, sino que debe cumplir
unas ciertas condiciones, como la de estar escrito con may'sculas, comen*ar por
determinado carcter, estar a principio o final de l0nea, etc. Este problema se puede
resolver en muchos comandos de Linux por medio de las expresiones regulares que se
van a presentar a continuacin.
$as expresiones_regulares son una forma de describir patrones para la b'squeda de
unas determinadas l0neas dentro de uno o ms ficheros +CHH. e trata pues de
encontrar las l0neas cuyo contenido cumple ciertas condiciones, que se definen en la
expresin_regular.
C!r!cteres es*eci!les
En una expresin_regular se pueden utili*ar algunos caracteres que tienen un
significado especial.
on los siguientes!
9 comien*o de la definicin de un conjunto de caracteres
. un carcter cualquiera, excepto el Deol#
6 un conjunto de caracteres cualesquiera, excepto el primer carcter de una expresin o
inmediatamente despus de la secuencia 2%
: 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.
i va detrs del 9 o delante del :, no es especial
Y comien*o de l0nea, si est al comien*o de la expresin
Y conjunto complementario %el que no cumple la condicin&, si est justo despus del
9 que abre la definicin de un conjunto
fin de l0nea, cuando est al final de una expresin.
2 quita el significado especial a un carcter, excepto en la definicin de un conjunto de
caracteres
Ex*resiones regul!res de un solo c!r=cter
e trata de buscar palabras o conjuntos de un solo carcter, que cumple ciertas
condiciones. + continuacin se presentan algunos ejemplos!
26 representa el carcter 6
. cualquier carcter, excepto el Deol#
9a>f: un carcter cualquiera entre la a y la f
9+>Z: cualquier letra may'scula
9Ya>d: cualquier carcter que no sea una letra entre la a y la d
9!clase!: donde clase puede ser! digit %cifra del C al F&, xdigit %cifra hexadecimal&, alpha
%letra cualquiera&, upper %letra may'scula&, lower %letra min'scula&, alnum %letra o
d0gito cualquiera&,
space %un espacio en blanco&, cntrl %carcter de control&, punct %un carcter de
puntuacin& y print %carcter imprimible&.
Ex*resiones regul!res gener!les
e pueden formar de acuerdo con las siguientes reglas!
> una expresin regular de un slo carcter
9a>*: cualquier letra min'scula
> una expresin regular de un slo carcter, seguida del carcter 6, 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
9a>*:6 cualquier palabra escrita con min'sculas
> concatenando %poniendo una a continuacin de la otra& dos expresiones regulares
construidas previamente
9a>*:9+>Z: cualCuier 0alabra 1e 1os letras( 1e las cuales la 0ri)era es )inTscula 4 la
se*un1a )a4Tscula
> 8na expresin5regular definida en la forma 2%expresiones regulares2& 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 n'mero del - al F, y es posible luego hacer
referencia a una expresiones regulares por medio del n'mero que le corresponde, en la
forma 2n'mero. i 2n'mero va seguido de un 6, esa subexpresin puede repetirse un
n'mero cualquiera de veces.
Y2%.62&2-2- +l comien*o de la l0nea, 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
l0nea. Esta expresin detectar0a las l0neas que contienen palabras %o conjuntos de
palabras& triples.
> una expresiones regulares de un slo carcter seguida de 2%entero2& representa entero
apariciones consecutivas de alguno de los caracteres aceptados por la expresiones
regulares de un slo carcter. i va seguida de 2%entero,2& representa un n'mero m0nimo
de entero apariciones consecutivas. i va seguida de 2%entero-, entero.2& representa un
m0nimo de entero1 y un mximo de entero2 apariciones consecutivas. $os n'meros
enteros deben estar comprendidos entre C y .SS.
> toda expresin que comien*a con Y indica que los caracteres buscados deben estar a
comien*o de la l0nea
Y9a>*:6 selecciona las l0neas que slo contienen letras min'sculas
> toda expresin que termina con indica que los caracteres buscados deben estar a final
de la l0nea
Y9a>*:2[P2\9Ya>*:2[P2\ selecciona las l0neas que comien*an con tres min'sculas, terminan
con tres caracteres cualesquiera pero que no son min'sculas, y no tiene ning'n otro
carcter entre medio.
Co!ndo?Sint!xis Descri*cin E;e*los
c!t <ich1 @...<ichNA Concatena y muestra un archivos cat ?etc?passBd
di++ @+eAarch1 arch2
Encuentra diferencia entre
archivos
diff foo.c neBfoo.c
du @+sabrA <ich Eeporta el tamaAo del directorio du >s ?home?
+ind 1ir test acci\n Encuentra archivos. find . >name //.ba411 >print
gre* @+ciln5A ex0r
archi5os
(usca patrones en archivos grep mi4e ?etc?passBd
#e!d +count <ich @uestra el inicio de un archivo head prog-.c
ln @+sA <ich acceso
Crea un acceso directo a un
archivo
ln >s ?users?mi4e?.profile .
t!il +count <ich @uestra el final de un archivo tail prog-.c
(i <ich Edita un archivo. vi .profile
!t @BlrA #or! @+ec#!A Ejecuta un comando mas tarde at Rpm Oriday miscript
ec#o string
Escribe mensaje en la salida
estndar
echo //Mola mundo11
+inger usu!rio
@uestra informacin general
sobre un usuario en la red
finger
nn]maquina.aca.com.co
id K'mero id de un usuario id usuario
'ill @BseC!lA %ID @atar un proceso 4ill -.PG
!n co!ndo +yuda del comando especificado man gcc
man >4 printer
*s @!xiuA
@uestra informacin sobre los
procesos
ps >ux

que se estn ejecutando en el
sistema
ps >ef
"#o ? r"#o
@uestra informacin de los
usuarios
Bho
conectados al sistema.
?usr?&in?g*!ss"d B!
usu!rio gru*o
+signa cierto usuario a ese grupo.
!t D:EE
cd*l!-FCtrlGd
"rograma el computador para hacer sonar el cd a las Q!CC.
!t$ $ista las tareas automticas programadas.
!tr H Elimina la tarea n'mero ^.
&!s# Extension del sh.
c#s C shell.
d!te Bs IEJ?KL?ELI
MINDI
Cambia la fecha del sistema al .S de +bril del .CCS .
d!te Bs IOL:EE:EEI
MIN,I
Cambia la hora del sistema a las -S!CC.
dd i+P?de(?+dE
o+Pi!gendedisco
Crea una imagen del disco con el nombre imagendedisco.
dd i+Pi!gendedisco
o+P?de(?+dE
Jraba el archivo imagen a un disco.
d+ @uestra el espacio libre del disco.
d*'g Bi !rc#i(o.de& Hnstala un paquete .deb %;ebian&.
du Bc +ic#eros @uestra el total que ocupan los ficheros.
du Bs ?directorio @uestra el espacio que ocupa el directorio.
ec#o Q%A,H @uestra el path actual.
Edit!r este +ic#ero *!r!
eori0!r un! t!re!:
etc?cront!&
Ej!
CC CC .C -C 6 echo 1Ma llegado el invierno1 #?dev?null %esto
'ltimo es para que no se env0e por mail al root&.
$os siguientes directorios son para meter programas a ejecutar
cada cierto tiempo %copiarlos dentro&
?etc?cron.hourly?
?etc?cron.daily?
?etc?cron.Bee4ly?
e!cs
?etc?s-scon+ig?net"or'
"ara cambiar el JateBay %puerta de enlace&en redhat.
e!cs +ic#ero Edita el fichero CtrlNW CtrlN %guarda&, CtrlNW CtrlNC %sale&.
+ind ?directorio Bn!e
R+ic#eroR
(usca a partir de ?directorio el fichero especificado.
+or x in Q6ls ?directorio7
do
ec#o Qx
done
"ara hacer un bucle en un script bash de los ficheros de un
directorio.
gre* (usca una cadena en un fichero. cat fichero.txt V grep texto a
buscar
i+ @ Bx ?*!t#?to?dnetc AS
t#en
ec#o ISt!rting
Distri&uted.net Client...I
?*!t#?to?dnetc B$uiet
+i
El fichero ?etc?rc.d?rc.local es similar al autoexec.bat de ms>
dos y por ejemplo podemos poner estas l0neas. i no se est
ejecutando arranca dnetc.
i+con+ig Ie dice tu direccin H" aunque sirve tambin para configurar
la tarjeta de red.
;oe +ic#ero Editor de texto.
'ill BT nuero%ID @ata el proceso numero"H; que queramos %finali*a su
ejecucin&. 4ill >M8" numero "H; Mace lo mismo.
)ill >I=" numero"H;
"ara hasta nueva orden el proceso Kumero"H;.
)ill >C=KI numero"H;
Continua el proceso numero"H; parado anteriormente.
'ill!ll no&re*roceso @ata el proceso con ese nombre.
's# )orn shell, combina sh y csh.
ln Bs
?nt?cdro?M!e?ros ?
Crea un enlace blando al directorio roms del cdrom como si
fuera ?usr?games?lib?xmame %xmame no debe existir&



abla de los comandos principales de Linux
Comando Descripcin Equivalente a
DOS
ls listas del contenido de un directorio dir
cd cambio de directorio cd
cd .. directorio principal cd..
mkdir crea un nuevo directorio md
rmdir elimina un directorio deltree
cp copia de un archivo copy, xcopy
mv mueve un archivo move
rm elimina un archivo del
passwd cambia la contrasea del usuario
cat muestra el contenido del archivo type
more muestra el contenido del archivo con pausas type |more
man ayuda para el comando requerido help
Linux DOS Signi+ic!do
cat type Ter contenido de un archivo.
cd, chdir cd, chdir Cambio el directorio en curso.
chmod attrib Cambia los atributos.
clear cls (orra la pantalla.
ls dir Ter contenido de directorio.
m4dir md, m4dir Creacin de subdirectorio.
more more @uestra un archivo pantalla por pantalla.
mv move @over un archivo o directorio.
rmdir rd, rmdir Eliminacin de subdirectorio.
rm >r deltree Eliminacin de subdirectorio y todo su contenido.
apropos
lpr imprime el archivo requerido print
chmod
cambia el atributo de un archivo
chmod XXX file
XXX= Usuario|Grupo|Otro en el que X representa un
nmero entero !"X"#
Lectura=$, %scritura=&, %'ecuci(n=!
X=Leer)%scribir)%'ecutar
* si+ni,ica nin+n derecho
! si+ni,ica derecho de e'ecuci(n
& si+ni,ica derecho de escritura
- si+ni,ica derechos de escritura y e'ecuci(n
$ si+ni,ica derecho de lectura
. si+ni,ica derechos de lectura y de e'ecuci(n
/ si+ni,ica derechos de lectura y de escritura
# si+ni,ica todos los derechos

chfn cambia la in,ormaci(n personal vista tipo+r0,icamente
chsh
cambia la shell1 chsh user
ubicacin_de_la_shell

finger lista de usuarios conectados
traceroute tra2a la ruta entre el equipo local y el equipo visuali2ado
ftpmachine!
port!
get
put
quit
trans,iere el archivo entre el equipo local y el equipo de
destino
recupera un archivo 3+et4
env5a un archivo3put4
sale de la sesi(n 678 3quit4

telnet
machine!
reali2a una aplicaci(n telnet
talk
permite hablar con un usuario conectado
tal9 user

mesg
autori2a o recha2a el comando tal9
mesg n " :mpide la recepci(n de mensa'es talk
mesg y " 8ermite recibir mensa'es talk

logout desconexi(n