Vous êtes sur la page 1sur 19

Aprenda Linux, 101: La línea de comando Linux

Cómo dominar los comandos GNU y UNIX

Ian Shields 08-07-2010


Senior Programmer (Primera publicación 08-07-2010)
IBM

Las IGUs son útiles, pero para descubrir el verdadero potencial de Linux®, no hay nada mejor que la
línea de comando. En este artículo, Ian Shields le presenta algunos de los características más importantes
del shell bash, principalmente los características importantes para la certificación LPI. Al terminar
este artículo usted dominará el uso de los comandos básicos de Linux como echo y exit, estableciendo
variables de entorno, y recogiendo información del sistema. [Las primeras dos notas siguientes al listado
8 han sido actualizadas para corregir las IDs (PIDs) del proceso. -Ed.]

Ver más contenido de esta serie

Acerca de esta serie


Esta serie de artículos lo ayudarán a aprender las tareas relacionadas con la administración del sistema
Linux. Usted puede utilizar el contenido de estos artículos para prepararse para los Linux Professional
Institute Certification level 1 (LPIC-1) exams.

Vea la series roadmap para obtener una descripción de y un link a cada uno de los artículos de esta
serie. La guía básica se encuentra en marcha y refleja los últimos (Abril de 2009) objetivos para los
exámenes LPIC-1: a medida que completamos los artículos, los agregamos a la guía básica. Mientras
tanto, sin embargo, usted puede encontrar versiones anteriores de contenido similar, que sirven de
soporte para objetivos LPIC-1 anteriores previos a Abril de 2009, en nuestros LPI certification exam
prep tutorials.

Requisitos previos

Para aprovechar al máximo los artículos de esta serie, usted debería poseer conocimiento básico
sobre Linux y tener un sistema de trabajo Linux en el que poder practicar los comandos explicados
en este artículo. En ocasiones, versiones diferentes de un mismo programa muestran los resultados en
formatos diferentes, por lo cual los resultados pueden no siempre ser idénticos a los de los listados y
figuras presentados en este artículo.

Visión general
Este artículo le brinda una breve introducción a algunas de las características más importantes del shell bash,
y abarca los siguientes temas:

© Copyright IBM Corporation 2010 Marcas


Aprenda Linux, 101: La línea de comando Linux Pagina 1 de 19
developerWorks® ibm.com/developerWorks/ssa/

• Interacción con shells y comandos mediante la línea de comandos


• Comandos y secuencias de comandos válidos
• Definición, modificación, referencia, y exportación de variables de entorno
• Historial de comandos y facilidades de edición
• Invocación de comandos dentro y fuera de la ruta
• Uso de páginas man (manuales) para aprender sobre los comandos

Este artículo lo ayuda a preparar los Objetivos 103.8 del Tema 103 del examen 101 de Administración Nivel
Junior de Linux (LPIC-1). Este objetivo tiene un valor de ponderación de 4. El contenido de este artículo
corresponde a los objetivos del examen 101 de Abril de 2009 objectives for exam 101. Siempre debería
consultar los objetivos para conocer los requisitos definitivos.

El shell bash
El shell bash es uno de los numerosos shells disponibles para Linux. También denominado Bourne-again
shell, en honor a Stephen Bourne, creador del shell inicial (/bin/sh). Bash es básicamente compatible con
sh, pero además proporciona varias mejoras tanto en las capacidades de las funciones como en las de
programación. Bash incorpora características del shell Korn (ksh) y del shell C (csh), y and ha sido pensado
para ser compatible con el shell POSIX.

Antes de ahondar en bash, recuerde que un shell es un programa que acepta y ejecuta comandos. También
soporta construcciones de de programación que permiten la construcción de comandos complejos a partir
de partes más pequeñas. Estos comandos complejos, o scripts, pueden guardarse para convertirse en nuevos
comandos. De hecho, muchos de los comandos en un sistema Linux típico son scripts.

Los shells tienen algunos comandos incorporados como cd, break, y exec. Otros comandos son externos.

Los shells también utilizan tres streams de entrada y salida estándar:

• stdin es el flujo de entrada estándar, que proporciona los datos de entrada a los comandos.
• stdout es el flujo de salida estándar, que muestra los datos de salida de los comandos.
• stderr es el flujo de error estándar, que muestra los datos de salida de error de los comandos.

Los flujos de entrada proporcionan datos de entrada a los programas, generalmente a partir de la pulsación
de las teclas de la terminal. Los flujos de salida imprimen caracteres de texto, generalmente a la terminal. La
terminal era en un principio una máquina de escribir ASCII o una terminal de visualización, pero ahora por
lo general se trata de una ventana o un escritorio gráfico.

En otro artículo de esta serie series.

podrá encontrar más detalles sobre la forma de redireccionar estos flujos estándar de entrada/salida.

De aquí en adelante, asumiremos que usted sabe cómo lograr el aviso del shell. De lo contrario, el artículo
developerWorks "Basic tasks for new Linux developers" muestra cómo hacer esto y otras cosas.

Si usted utiliza un sistema Linux sin escritorio gráfico, o si usted abre la ventana de una terminal en un
escritorio gráfico, usted verá un aviso, quizá igual a los señalados en el Listado 1.

Aprenda Linux, 101: La línea de comando Linux Pagina 2 de 19


ibm.com/developerWorks/ssa/ developerWorks®

Listado 1. Algunos avisos típicos de usuario


[db2inst1@echidna db2inst1]$ ian@lyrebird:~> $

Si usted inicia sesión como usuario raíz (o super usuario), el aviso que visualice puede ser similar a alguno
de los mostrados en el Listado 2.

Listado 2. Super usuario, o usuario raíz, ejemplos de avisos


[root@echidna ~]# lyrebird:~ # #

El poder que tiene el usuario raíz es importante, por lo cual hay que ser cuidadoso al utilizarlo. Al tener
privilegios raíz, la mayoría de los prompts tienen añadido un signo numeral (#). Los privilegios de usuarios
comunes suelen estar delineados con un carácter diferente, generalmente un signo de dólar ($). Su prompt
actual puede ser diferente a los ejemplos presentados en este artículo. Su prompt puede incluir su nombre de
usuario, nombre de host, directorio actual, fecha u hora de impresión del host, y demás.

Estos artículos incluyen ejemplos de códigos copiados y pegados de sistemas Linux reales por medio de los
prompts predeterminados de dichos sistemas. Nuestros prompts raíces poseen un # añadido, por lo cual usted
puede distinguirlos de los prompts de usuarios comunes, los cuales tienen un $ añadido. Esta convención es
consistente con muchos libros que tratan el tema. Si le parece que algo no funciona, verifique el prompt que
aparece en el ejemplo.

Comandos y secuencias
Entonces ahora que tenemos un prompt, veamos qué puede hacer con él. La función principal del shell es
interpretar los comandos de manera que usted pueda interactuar con su sistema Linux. En los sistemas Linux
(y UNIX®), los comandos tienen un nombre de comando, y cuentan con opciones y parámetros. Algunos
comandos no poseen ni opciones ni parámetros, y otros tienen sólo uno de los dos..

Cuando una línea contiene un carácter #, el resto de los caracteres de la línea se ignora. Entonces, un carácter
# puede indicar tanto un comentario como un prompt raíz. El contexto indicará de cuál de los dos se trata.

Echo
El comando echo imprime sus argumentos (o hace eco de los mismos) a la terminal tal como se muestra en el
Listado 3.

Listado 3. Ejemplos de Echo


[ian@echidna ~]$ echo Word Word [ian@echidna ~]$ echo A
phrase A phrase [ian@echidna ~]$ echo Where are my spaces? Where are
my spaces? [ian@echidna ~]$ echo "Here are my spaces." # plus comment Here
are my spaces.

En el tercer ejemplo del Listado 3, todos los espacios sobrantes se comprimieron en un único espacio en los
datos de entrada. Para evitar esto, usted necesita colocar comillas utilizando comillas dobles (") o simples
('). Bash utiliza el espacio en blanco, como los espacios vacíos, las tabulaciones, y los caracteres de las
líneas nuevas, para separar las líneas de entrada en tokens, las que luego se pasan al comando. Al colocar las

Aprenda Linux, 101: La línea de comando Linux Pagina 3 de 19


developerWorks® ibm.com/developerWorks/ssa/

cadenas entre comillas se conserva el espacio vacío adicional y se convierte a la cadena en un único token.
En el ejemplo anterior, cada token posterior al nombre del comando es un parámetro, por lo tanto tenemos 1,
2, 4, y 1 parámetro respectivamente.

El comando echo tiene un par de opciones. Normalmente echo anexa un carácter de línea nueva a los datos
de salida. Utilice la opción -n para suprimirlo. Utilice la opción -e para permitir que ciertos caracteres de
escape de barra invertida tengan un significado especial. Algunos de ellos pueden observarse en el Cuadro 1.

Cuadro 1. Echo y caracteres de escape


Secuencia de escape Función

\a Alerta (campana)

\b Barra invertida

\c Suprimir nuevas líneas añadidas (cumple la misma función que la opción -n)

\f Avance de página (limpia la pantalla de un visor de video)

\n Nueva línea

\r Retorno de carro

\t Tabulación horizontal

Escapes y continuación de línea


El uso de barras invertidas en bash provoca un pequeño problema. Cuando el carácter barra invertida (\)
no se coloca entre comillas, funciona como un escape para señalarle a bash que conserve el significado
literal del carácter a continuación. Esto es necesario en los metacaracteres shell especiales, a los que nos
referiremos un poco más adelante. Existe una excepción a esta regla: una barra invertida seguida de una
nueva línea provoca que bash saltee ambos caracteres y trate la secuencia como un pedido de continuación
de línea. Esto puede resultar de ayuda para romper las líneas largas, en especial en scripts de shell.

Para que las secuencias descriptas más arriba sean correctamente administradas por el comando echo o
alguno de los muchos comandos que utilizan caracteres de control de escape similares, deben colocar
las secuencias de escape entre comillas o incluirlas en una cadena entre comillas, salvo que usted utilice
una segunda barra invertida para que el shell conserve una para el comando. El listado 4 muestra algunos
ejemplos de los distintos usos de \.

Listado 4. Mas ejemplos de echo


[ian@echidna ~]$ echo -n No new line No new
line[ian@echidna ~]$ echo -e "No new line\c" No new line[ian@echidna ~]$
echo "A line with a typed > return" A line with a typed return
[ian@echidna ~]$ echo -e "A line with an escaped\nreturn" A line with an
escaped return [ian@echidna ~]$ echo "A line with an escaped\nreturn but no -e
option" A line with an escaped\nreturn but no -e option [ian@echidna ~]$
echo -e Doubly escaped\\n\\tmetacharacters Doubly escaped metacharacters
[ian@echidna ~]$ echo Backslash \ > followed by newline \ >
serves as line continuation. Backslash followed by newline serves as line
continuation.

Tenga en cuenta que bash muestra un prompt especial (>) al ingresar una línea entre comillas simples. Su
flujo de entrada continúa en una segunda línea e incluye el carácter de la línea nueva.

Aprenda Linux, 101: La línea de comando Linux Pagina 4 de 19


ibm.com/developerWorks/ssa/ developerWorks®

Metacaracteres y operadores de control del shell bash


Bash posee varios metacaracteres, los cuales, cuando no se colocan entre comillas, también sirven para
separar los datos de entrada en palabras. Además del espacio en blanco, estos son:

• |
• &
• ;
• (
• )
• <
• >

Analizaramos algunos de estos con más detalle en otras partes de este artículo. Por ahora, tenga en cuenta
que si desea incluir un metacaracter en su texto, debe colocarlo entre comillas o como carácter de escape
mediante una barra invertida (\) como se observa en el Listado 4.

La nueva línea y ciertos metacaracteres o pares de metacaracteres también sirven como operadores de
control. Estos son:

• ||
• &&
• &
• ;
• ;;
• |
• (
• )

Algunos de estos operadores de control permiten crear secuencias o listas de comandos.

La secuencia de comando más sencilla se compone sólo de dos comandos separados por un punto y coma
(;). Cada comando se ejecuta en secuencia. En los entornos programables los comandos devuelven un aviso
de éxito o falla; los comandos de Linux por lo general devuelven un valor de cero en los caso de éxito y un
valor distinto a cero en caso de falla. Usted puede introducir algún procesamiento condicional en su lista
utilizando && y los operadores de control ||. Si usted separa dos comandos con el operador de control && el
segundo se ejecuta sólo si el primero devuelve un valor de salida de cero. Si usted separa los comandos con
||, el segundo comando se ejecuta sólo si el primero devuelve un código de salida distinto de cero. El Listado
5 muestra algunas secuencias de comandos que utilizan el comando echo. Estas no son muy interesantes
porque el retorno de echo es cero, pero más adelante, cuando podamos utilizar más comandos veremos más
ejemplos de esto.

Listado 5. Secuencias de comandos


[ian@echidna ~]$ echo line 1;echo line 2; echo line 3
line 1 line 2 line 3 [ian@echidna ~]$ echo line 1&&echo line
2&&echo line 3 line 1 line 2 line 3 [ian@echidna ~]$ echo line
1||echo line 2; echo line 3 line 1 line 3

Aprenda Linux, 101: La línea de comando Linux Pagina 5 de 19


developerWorks® ibm.com/developerWorks/ssa/

Exit
Usted puede terminar un shell utilizando el comando exit Usted puede opcionalmente proporcionar un código
de salida como parámetro. Si usted está ejecutando su shell en una ventana terminal en un escritorio gráfico,
su ventana se cerrará. De manera similar, si usted está conectado a un sistema remoto utilizando ssh o telnet
(por ejemplo), su conexión se interrumpirá. En el shell bash usted puede mantener presionada presionar la
tecla Ctrl y presionar la tecla d para salir.

Analicemos otro operador de control. Si usted adjunta un comando o una lista de comandos entre paréntesis,
se ejecuta el comando o la secuencia en un sub shell, y el comando exit saldrá del subshell en lugar de salir
de salir del shell en el cual usted está trabajando. El Listado 6 muestra un ejemplo simple de && y de || junto
con otros dos códigos exit diferentes.

Listado 6. Subshells y secuencias


[ian@echidna ~]$ (echo In subshell; exit 0) &&
echo OK || echo Bad exit In subshell OK [ian@echidna ~]$ (echo In
subshell; exit 4) && echo OK || echo Bad exit In subshell Bad exit

Continúe leyendo para encontrar más secuencias de comando en este artículo.

Variables de entorno
Al ejecutar en un shell bash, muchas elementos constituyen su entorno, como la forma de su prompt, su
directorio principal, su directorio de trabajo, el nombre de su shell, los archivos que ha abierto, las funciones
que ha definido, etc. Su entorno incluye muchas variables que pueden haber sido establecidas por bash o
por usted. El shell bash también le permite tener variables shell, que usted puede exportar a su entorno para
ser utilizadas en otros procesos que se están ejecutando en el shell o por otros shells que usted puede haber
generado desde el shell actual.

Tanto las variables de entorno como las variables shell tienen un nombre. Usted hace referencia al valor
de una variable colocando '$' delante de su nombre. Algunas de las variables de entorno bash que usted
encontrará se pueden observar en el Cuadro 2.

Cuadro 2.Algunas variables comunes de entorno bash


Nombre Función

USER El nombre del usuario que inició la sesión

UID La id de usuario numérico del usuario que inició sesión

HOME El directorio principal del usuario

PWD El directorio de trabajo actual

SHELL El nombre del shell

$ La id de proceso (o PIDdel proceso de shell bash que se está ejecutando (u


otro)

PPID La id de proceso del proceso que inició este proceso (que es, la id del proceso
primario)

? El código de salida del último comando

El Listado 7 muestra lo que usted podría ver en algunos de estas variables bash comunes.

Aprenda Linux, 101: La línea de comando Linux Pagina 6 de 19


ibm.com/developerWorks/ssa/ developerWorks®

Listado 7. Variables de entorno y variables shell


[ian@echidna ~]$ echo $USER $UID ian 500
[ian@echidna ~]$ echo $SHELL $HOME $PWD /bin/bash /home/ian /home/ian
[ian@echidna ~]$ (exit 0);echo $?;(exit 4);echo $? 0 4 [ian@echidna ~]$
echo $$ $PPID 2559 2558

¿No utiliza bash?


El shell bash es el shell predefinido en la mayoría de las distribuciones Linux. Si usted no está
ejecutando bajo shell bash, puede desear considerar una de las siguientes formas de practicar con el
shell bash.

• Utilice el comando
chsh -s /bin/bash
para cambiar su shell predefinido. El nuevo shell tendrá efecto la próxima vez que usted inicie
sesión.
• Utilice el comando
su - $USER -s /bin/bash
para crear otro proceso como un proceso secundario del shell actual. El nuevo proceso será un
shell de inicio de sesión que utiliza bash.
• Cree una id con un shell bash predeterminada para utilizarla en la preparación del examen LPI.

Usted puede crear o establecer una variable shell escribiendo un nombre seguido inmediatamente por un
signo igual (=). Si la variable existe, usted la modificará para asignar el nuevo valor. Las variables son
capaces de distinguir mayúsculas de minúsculas, por lo tanto var1 y VAR1 son variables diferentes. Por
convención, las variables, particularmente las exportadas, se escriben en mayúscula, pero este no es un
requisito. En teoria, $$ y $? son parámetros shell, no variables. Éstos sólo pueden referenciarse; usted no
puede asignarles un valor.

Al crear una variable shell, usted a menudo deseará exportarla al entorno de manera que esté disponible para
otros procesos que usted inicie desde este shell. Las variables que usted exporta no se encuentran disponibles
para un shell primario. Usted utiliza el comando export para exportar el nombre de una variable. Como un
atajo en bash, usted puede asignar un valor y exportar una variable en un sólo paso.

Para ilustrar la asignación y la exportación, ejecutemos el comando bash desde el shell bash y luego
ejecutemos el shell korn (ksh) desde el nuevo shell bash. Utilizaremos el comando ps para mostrar
la información sobre el comando que se está ejecutando. Analizaremos más en profundidad nuestro
conocimiento de ps en otro de los artículos de esta serie. Vea Temas relacionados for the roadmap..............de
las series).

Listado 8. Más variables de entorno y shell


[ian@echidna ~]$ ps -p $$ -o "pid ppid cmd" PID PPID
CMD 2559 2558 -bash [ian@echidna ~]$ bash [ian@echidna ~]$ ps -p $$ -o
"pid ppid cmd" PID PPID CMD 2811 2559 bash [ian@echidna ~]$ VAR1=var1
[ian@echidna ~]$ VAR2=var2 [ian@echidna ~]$ export VAR2 [ian@echidna
~]$ export VAR3=var3 [ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 var1 var2
var3 [ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 $SHELL var1 var2 var3 /bin/bash
[ian@echidna ~]$ ksh $ ps -p $$ -o "pid ppid cmd" PID PPID CMD 2840
2811 ksh $ export VAR4=var4 $ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL var2
var3 var4 /bin/bash $ exit [ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 $VAR4
$SHELL var1 var2 var3 /bin/bash [ian@echidna ~]$ ps -p $$ -o "pid ppid
cmd" PID PPID CMD 2811 2559 bash [ian@echidna ~]$ exit exit
[ian@echidna ~]$ ps -p $$ -o "pid ppid cmd" PID PPID CMD 2559 2558 -bash
[ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL /bin/bash

Aprenda Linux, 101: La línea de comando Linux Pagina 7 de 19


developerWorks® ibm.com/developerWorks/ssa/

Notas:

1. Al comienzo de esta secuencia, el shell bash tenía el PID 2559.


2. El segundo shell bash tiene el PID 2811, y su primario es PID 2559, el shell bash original.
3. 3.Creamos VAR1, VAR2 y VAR3 en el segundo shell bash, pero solamente . exportamos VAR2 y
VAR3.
4. 4.En el shell Korn, creamos VAR4. El comando echo mostró valores sólo para VAR2, VAR3, y VAR4,
confirmando que VAR1 no se exportó. ¿Le sorprendió ver que el valor de la variable SHELL no
cambió pese al cambio de prompt? No siempre se puede esperar que SHELL le informe bajo qué shell
está ejecutando, pero el comandops le indica el comando real. Tenga en cuenta que ps coloca un guión
(-) delante del primer shell bash para indicar que este es el shell de inicio.
5. Volviendo al segundo shell bash, podemos observar VAR1, VAR2, y VAR3.
6. Y por último, al regresar al shell original, ninguna de nuestras nuevas variables existen ya.
En la explicación anterior sobre las comillas mencionamos que usted podía utilizar comillas simples o
dobles. Existe una diferencia importante entre ellas. El shell expande las variables shell que se encuentran
entre comillas dobles ($quot;), pero esta expansión no se produce en el caso de las variables simples ('). En
los ejemplos anteriores, iniciamos otro shell dentro de nuestro shell y obtuvimos un nuevo id de proceso.
Utilizando la opción -c usted puede pasar un comando al otro shell, el cual ejecutará el comando y volverá.
Si usted pasa una cadena que se encuentra entre comillas como un comando, su shell externo quitará las
comillas y pasará la cadena. En el caso de comillas dobles, ocurrirá la expansión de las variables antes de
que la cadena pase, de manera que los resultados pueden no ser los esperados. El shell y el comando se
ejecutará en otro proceso de manera que estos tendrán otro PID. El listado 9 ejemplifica estos conceptos. El
PID del shell bash de nivel superior se encuentra resaltado.

Listado 9. Colocación de comillas y variables shell


[ian@echidna ~]$ echo "$SHELL" '$SHELL' "$$"
'$$' /bin/bash $SHELL 2559 $$ [ian@echidna ~]$ bash -c "echo
Expand in parent $$ $PPID" Expand in parent 2559 2558 [ian@echidna
~]$ bash -c 'echo Expand in child $$ $PPID' Expand in child 2845
2559

Todas las referencias de variables presentadas hasta ahora terminan en espacios en blanco, por lo cual ha
sido fácil determinar donde terminaban las mismas. De hecho, los nombres de las variables pueden estar
compuestos sólo de letras, números o el carácter guión bajo. El shell sabe que el nombre de una variable
termina cuando encuentra otro carácter. Aveces es necesario utilizar variables en expresiones en las cuales el
significado es ambiguo. En tales casos, usted puede utilizar llaves para delinear el nombre de una variable tal
como se muestra en el Listado 10.

Listado 10. El uso de las llaves en los nombres de las variables


[ian@echidna ~]$ echo
"-$HOME/abc-" -/home/ian/abc- [ian@echidna ~]$ echo "-$HOME_abc-" --
[ian@echidna ~]$ echo "-${HOME}_abc-" -/home/ian_abc-

Env
El comando env sin ninguna opción ni parámetro muestra las variables del entorno actual. Usted puede
utilizar este comando también para ejecutar un comando en un entorno personalizado. La opción -i (o

Aprenda Linux, 101: La línea de comando Linux Pagina 8 de 19


ibm.com/developerWorks/ssa/ developerWorks®

simplemente -) limpia el entorno actual antes de ejecutar el comando, mientras que la opción -u desactiva las
variables de entorno que usted no desea pasar.

El Listado 11 muestra la salida parcial del comando env sin ningún parámetro y luego tres ejemplos de
invocación de shells diferentes sin el entorno primario. Observe todo esto cuidadosamente antes de nuestro
análisis.

Nota: Si su sistema no tiene el ksh (Korn) o los shells tcsh instalados, usted necesitará instalarlos para
realizar estos ejercicios.

Listado 11. El comando env


[ian@echidna ~]$ env HOSTNAME=echidna
SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=1000
SSH_CLIENT=9.27.206.68 1316 22 SELINUX_USE_CURRENT_RANGE= QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include SSH_TTY=/dev/pts/3 USER=ian ... _=/bin/env OLDPWD=/etc
[ian@echidna ~]$ env -i bash -c 'echo $SHELL; env' /bin/bash PWD=/home/ian
SHLVL=1 _=/bin/env [ian@echidna ~]$ env -i ksh -c 'echo $SHELL; env' /bin/sh
_=/bin/env PWD=/home/ian _AST_FEATURES=UNIVERSE - ucb [ian@echidna ~]$ env -i
tcsh -c 'echo $SHELL; env' SHELL: Undefined variable.

Observe que bash ha establecido la variable SHELL, pero no la exportó al entorno, aunque existen otras tres
variables que ha creado bash en el entorno. En el ejemplo de ksh, tenemos dos variables de entorno, pero
nuestro intento de hacer eco del valor de la variable SHELL genera una línea en blanco. Finalmente, tcsh no
ha creado ninguna variable de entorno y produce un error ante el intento de referenciar el valor del SHELL.

Unset and set


El Listado 11 mostró diferentes comportamientos de los shells en cuanto al manejo de las variables y los
entornos. Aunque este artículo trata sobre bash, es bueno saber que no todos los shells se comportan del
mismo modo. Además, los shells se comportan de manera diferente conforme sean o no un shell de inicio de
sesión. Por el momento, podemos decir simplemente que un shell de inicio es aquel que se obtiene al iniciar
sesión en el sistema; se pueden iniciar otros shells para que se comporten como shells de inicio si así se lo
desea. Los tres shells iniciados más arriba utilizando env -i no son shells de inicio de sesión. Pruebe pasar la
opción -l para el comando shell en sí para ver cuales son las diferencias que se obtienen de un shell de inicio.

Entonces, considerando nuestro intento por mostrar el valor de nuestra variable SHELL en estos shells de
inicio de sesión:

1. Al iniciar el bash, éste activó la variable SHELL, pero no la exportó automáticamente al entorno.
2. Al iniciar el ksh, éste no activó la variable SHELL. Sin embargo, referenciar una variable de entorno
indefinida es equivalente a referenciar una con un valor vacío.
3. Al iniciar el tcsh, éste no activó la variable SHELL. En este caso, el comportamiento predefinido es
diferente al del ksh (y al del bash), dado que se informa un error al intentar utilizar una variable que no
existe.
Usted puede utilizar el comando unset para desactivar una variable y quitarla de la lista de variables shell.
Si la variable se exportó al entorno, éste la removerá del entorno. Usted puede utilizar el comando set para
controlar muchos aspectos del modo de trabajo de bash (o de otros shells). Set es un comando incorporado
a shell, de modo que varias opciones son específicas para shell. En bash, la opción -u hace que bash informe

Aprenda Linux, 101: La línea de comando Linux Pagina 9 de 19


developerWorks® ibm.com/developerWorks/ssa/

errores en caso de variables indefinidas en lugar de tratarlas como definidas pero vacías. Usted puede activar
las diferentes opciones de set con un - y desactivarlas con un +. Usted puede visualizar que se encuentran
activas utilizando echo $-.

Listado 12. Unset and set


[ian@echidna ~]$ echo $- himBH [ian@echidna ~]$ echo $VAR1
[ian@echidna ~]$ set -u;echo $- himuBH [ian@echidna ~]$ echo $VAR1
-bash: VAR1: unbound variable [ian@echidna ~]$ VAR1=v1 [ian@echidna ~]$
VAR1=v1;echo $VAR1 v1 [ian@echidna ~]$ unset VAR1;echo $VAR1
-bash: VAR1: unbound variable [ian@echidna ~]$ set +u;echo $VAR1;echo $-
himBH

Si utiliza el comando set sin ninguna opción, éste le mostrará todas las variables shell y sus respectivos
valores (si los hubiera). También existe otro comando, declare, que se puede utilizar para crear, exportar,
y visualizar valores de variables shell. Usted puede conocer el resto de las opciones de set y del comando
declare utilizando las paginas de los manuales. Más adelante analizaremos las páginas de los manuales.

Exec
El último comando que debemos analizar es exec. El comando exec puede utilizarse para ejecutar otro
programa que reemplace el shell actual. En el Listado 13 se inicia un shell bash secundario y luego se utiliza
exec para reemplazarlo por un shell Korn. Luego de salir del shell Korn, usted vuelve al shell bash original
(en este ejemplo, PID 2852).

Listado 13. Uso de exec


[ian@echidna ~]$ echo $$ 2852 [ian@echidna ~]$ bash [ian@echidna ~]$
echo $$ 5114 [ian@echidna ~]$ exec ksh $ echo $$ 5114 $
exit [ian@echidna ~]$ echo $$ 2852

Información de sistema con uname


El comando uname imprime información sobre el sistema y su kernel. En el Listado 14 se observan todas las
opciones para uname y la información resultante; luego cada opción se define en el Cuadro 3.

Listado 14. El comando uname


[ian@echidna ~]$ uname Linux [ian@echidna ~]$ uname
-s Linux [ian@echidna ~]$ uname -n echidna.raleigh.ibm.com
[ian@echidna ~]$ uname -r 2.6.29.6-217.2.3.fc11.i686.PAE [ian@echidna ~]$
uname -v #1 SMP Wed Jul 29 16:05:22 EDT 2009 [ian@echidna ~]$ uname
-m i686 [ian@echidna ~]$ uname -o GNU/Linux [ian@echidna ~]$ uname
-a Linux echidna.raleigh.ibm.com 2.6.29.6-217.2.3.fc11.i686.PAE #1 SMP Wed
Jul 29 16:05:22 EDT 2009 i686 i686 i386 GNU/Linux

Cuadro 3. Opciones para uname

Opción Descripción

-s Imprime el nombre del kernel. En el


caso de que no se especifique ninguna
opción esto sucederá por defecto.

Aprenda Linux, 101: La línea de comando Linux Pagina 10 de 19


ibm.com/developerWorks/ssa/ developerWorks®

-n Imprime el nombre del nodo o del


dominio.

-r Imprime la actualización del kernel.


Esta opción por lo general se utiliza
en los comandos de manipulación de
módulos.

-v Imprime la versión del kernel.

-m Imprime el nombre del hardware de la


máquina (CPU).

-o Imprime el nombre del sistema


operativo.

-a Imprime toda la información anterior.

El listado 14 es de un sistema Fedora 11 ejecutándose en una CPU Intel.® El comando uname se encuentra
disponible en la mayoría de los sistemas UNIX® y en los similares a UNIX, al igual que en los sistemas
Linux. La información impresa dependerá de la distribución y la versión de Linux así como del tipo de
máquina en la cual se ejecute. El Listado 15 muestra los datos de salida de un sistema AMD Athlon 64
ejecutando Ubuntu 9.04.

Listado 15. Uso de uname en otros sistemas


ian@attic4:~$ uname -a Linux attic4 2.6.28-14-generic
#47-Ubuntu SMP Sat Jul 25 01:19:55 UTC 2009 x86_64 GNU/Linux

Historial de comandos
Si usted está escribiendo comandos mientras lee esto, notará que utiliza un mismo comando varias veces, ya
sea exactamente igual o con pequeñas modificaciones. La buena noticia es que el bash shell puede guardar
un historial de sus comandos. El historial se encuentra activado por defecto. Usted puede desactivarlo
utilizando el comando set +o history y volver a activarlo utilizando set -o history. Una variable de entorno
denominada HISTSIZE le dice al bash cuantas líneas del historial guardar. Otra serie de configuraciones
controla el modo de trabajo y la administración del historial. Si desea obtener más información diríjase a las
páginas del manual del bash.

Algunos de los comandos que se pueden utilizar mediante las funciones del historial son:

history
Muestra todo el historial
history N
Muestra las últimas líneas N del historial
history -d N
Elimina la línea N de su historial; usted podría hacer esto si la línea contiene una clave, por ejemplo
!!
Muestra el comando más reciente
!N
Muestra el N comando del historial
!-N
Muestra el comando que se encuentra N comandos atrás en el historial (!-1 es equivalente a !!)

Aprenda Linux, 101: La línea de comando Linux Pagina 11 de 19


developerWorks® ibm.com/developerWorks/ssa/

!#
Muestra el comando que usted está escribiendo actualmente
!string
Muestra el comando más reciente que inicia con string
!?string?
Muestra el comando más reciente que contiene string
Usted puede usar también dos puntos (:) seguidos de ciertos valores para acceder a una parte o comando del
historial, o modificarlo. El Listado 16 grafica algunas de las capacidades del historial.

Listado 16. Administración del historial


[ian@echidna ~]$ echo $$ 2852 [ian@echidna ~]$ env
-i bash -c 'echo $$' 9649 [ian@echidna ~]$ !! env -i bash -c 'echo
$$' 10073 [ian@echidna ~]$ !ec echo $$ 2852 [ian@echidna ~]$
!en:s/$$/$PPID/ env -i bash -c 'echo $PPID' 2852 [ian@echidna ~]$
history 6 595 echo $$ 596 env -i bash -c 'echo $$' 597 env -i bash -c
'echo $$' 598 echo $$ 599 env -i bash -c 'echo $PPID' 600 history 6 [ian@echidna ~]$
history -d598

Los comandos mencionados en el Listado 16 realizan las siguientes operaciones:

1. Se hace eco del PID del shell actual


2. Se ejecuta un comando echo en un nuevo shell y hace eco del PID del shell
3. Se vuelve a ejecutar el último comando
4. Se vuelve a ejecutar el último comando que comienza con 'ec'; este vuelve a ejecutar el primer
comando de este ejemplo
5. Se vuelve a ejecutar el último comando que comienza con 'en', pero sustituye '$PPID' por '$$', de
manera que se visualice el PID primario
6. Se muestran los últimos 6 comandos del historial
7. Se elimina la entrada 598 del historial, el último comando echo

También es posible editar el historial de manera interactiva. El shell bash utiliza la biblioteca readline para
administrar la edición y el historial de los comandos. Por defecto, las teclas y las combinaciones de teclas
utilizadas para moverse dentro del historial o editar las líneas son similares a aquellas utilizadas en el editor
Emacs de GNU . Las combinaciones de pulsaciones de teclas en Emacs por lo general son expresadas como
C-x o M-x, donde x es una tecla común y C y M son las teclas Control y Meta, respectivamente. En un
sistema de PC típico, la tecla Ctrl es equivalente a la tecla Control en Emacs, y la tecla Alt es equivalente
a la tecla Meta. En el Cuadro 3 se pueden observar algunas de las funciones de edición del historial a las
que se puede acceder. Además las combinaciones de teclas que se observan en el Cuadro 3, las teclas de
movimiento del cursor, como las flechas derecha, izquierda, arriba, y abajo, y las teclas Inicio y Fin por
lo general están configuradas para funcionar de una forma lógica. Las funciones adicionales así como el
modo de personalizar estas opciones utilizando un fichero de inicio readline (generalmente inputrc en su
directorio) pueden encontrarse en las páginas de los manuales.

C uadro 3. Edición del historial con los comandos emacs


Comando Tecla común de PC Descripción

C-f Flecha derecha Mueve el cursor un espacio hacia la derecha

Aprenda Linux, 101: La línea de comando Linux Pagina 12 de 19


ibm.com/developerWorks/ssa/ developerWorks®

C-b Flecha izquierda Mueve el cursor un espacio hacia la izquierda

C-p Flecha hacia arriba Mueve un comando anterior en el historial

C-n Flecha hacia abajo Mueve un comando posterior en el historial

C-r Búsqueda inversa incremental. Escribir una letra o


letras para buscar una cadena hacia atrás. Presionar
C-r de nuevo para buscar el acontecimiento anterior
siguiente de la misma cadena.

M-f Alt-f Moverse al inicio de la siguiente palabra;


los entornos GUI por lo general toman esta
combinación de teclas File para abrir el menú de la
ventana

M-b Alt-b Moverse al final de la palabra anterior

C-a Home Moverse al principio de la línea

C-e End Moverse al final de la línea

Backspace Backspace Eliminar el carácter que está antes del cursor

C-d Del Eliminar el carácter que se encuentra debajo del


cursor (las funciones Del y Backspace pueden
configurarse con significados opuestos)

C-k Ctrl-k Borrar (kill) hasta el final de la línea y guardar el


texto eliminado para usarlo luego

M-d Alt-d Borrar (kill) hasta el final de la palabra y guardar el


texto eliminado para usarlo luego

C-y Ctrl-y Volver a insertar el texto eliminado con un


comando kill

Si desea administrar el historial utilizando el modo de edición tipo vi, utilice el comando set -o vi para pasar
al modo vi. Vuelva al modo emacs utilizando set -o emacs. Al recuperar un comando en modo vi, inicialmente
estará en el modo insert de vi. El editor de vi es explicado en otro de los artículos de esta serie. (Vea Temas
relacionados for the series roadmap).

Rutas - ¿Dónde se encuentra mi comando?


Algunos comandos bash están incorporados, mientras otros son externos. Analicemos ahora los comandos
externos y el modo en el que se ejecutan, y cómo darse cuenta de que se trata de un comando interno.

¿Dónde encuentra el shell los comandos?


Los comandos externos son sólo archivos de su sistema de archivos. La administración básica de archivos es
un tema que tratamos en otro de los artículos de esta serie. (Vea Temas relacionados for the series roadmap).
En sistemas Linux y UNIX, se puede acceder a todos los archivos como parte de un mismo árbol raíz
enorme al que se accede por medio de /. En los ejemplos que hemos dado hasta ahora, nuestro directorio
actual ha sido el directorio principal del usuario. Los usuarios que no sean raíz por lo general tienen un
directorio dentro del directorio principal, como /home/ian, en mi caso. El directorio raíz principal es por lo
general /root. Si usted escribe el nombre de un comando, el bash busca ese comando en su ruta, la cual es
una lista de directorios separados por punto y coma en la variable de entorno PATH.

Si desea saber cuál es el comando que se ejecutará si escribe una cadena en particular, utilice el comando
which o type . El Listado 17 muestra mi ruta predeterminada junto con las ubicaciones de varios comandos.

Aprenda Linux, 101: La línea de comando Linux Pagina 13 de 19


developerWorks® ibm.com/developerWorks/ssa/

Listado 17. Búsqueda de ubicaciones de comandos


[ian@echidna ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/bin:/usr/b
in:/home/ian/bin [ian@echidna ~]$ which bash env zip xclock echo set ls alias
ls='ls --color=auto' /bin/ls /bin/bash /bin/env /usr/bin/zip /usr/bin/xclock
/bin/echo /usr/bin/which: no set in
(/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache
:/usr/local/bin:/bin:/usr/bin:/home/ian/bin) [ian@echidna ~]$ type bash env zip
xclock echo set ls bash is hashed (/bin/bash) env is hashed (/bin/env) zip
is /usr/bin/zip xclock is /usr/bin/xclock echo is a shell builtin set is a shell
builtin ls is aliased to `ls --color=auto'

Tenga en cuenta que la mayoría de los directorios de la ruta terminan en /bin. Esta es una convención
común, pero no es un requerimiento como puede observarse desde /usr/lib/ccache. El comando which
informó que el comando ls es un alias y que el comando set no pudo encontrarse. En este caso, interpretamos
que esto significa que no existe o que se trata de un comando incorporado. El comando type informa que
el comando ls es un alias, pero identifica al comando set como un comando incorporado al shell. También
informa que hay un comando echo incorporado, además del encontrado en /bin por which. Los comandos
también producen datos de salida en diferentes órdenes.

Hemos observado que el comando ls utilizado para listar el contenido de los directorios, es un alias. Los
alias son una forma práctica de configurar algunos comandos para utilizar diferentes series de elementos
predefinidos o para proporcionar alternativas a los nombres de los comandos. En nuestro ejemplo, la opción
--color=tty hace que el listado de directorio sea codificado por colores según el tipo de archivo o directorio.
Pruebe ejecutar dircolors --print-database para ver cómo la codificación por color es controlada y qué colores se
utilizan para cada tipo de archivo.

Cada uno de estos comandos posee opciones adicionales. Según su necesidad, usted puede utilizar uno u
otro comando. Yo tiendo a utilizar which cuando estoy muy seguro de encontrar un ejecutable y sólo necesito
la especificación de su ruta completa. Yo creo que type me proporciona información más precisa, aveces
necesaria sobre el script de un shell.

Ejecución de otros comandos


Hemos visto en el Listado 17 que los archivos ejecutables tienen una ruta inicial completa con /, el directorio
raíz. Por ejemplo, el programa xclock es realmente /usr/bin/xclock, un archivo ubicado en el directorio /
usr/bin. En los sistemas antiguos, esto se podía encontrar en el directorio /usr/X11R6/bin. Si un comando
no se encuentra en la especificación de ruta, usted puede igualmente ejecutarlo especificando una ruta y un
nombre del comando. Existen dos tipos de rutas que se pueden utilizar:

• Rutas Absolutas que son aquellas que comienzn con /, como aquellas que vimos en el Listado 17 (/bin/
bash, /bin/env, etc).
• Rutas Relativas varían según el tipo de directorio de trabajo actual, según lo informado por el comando
pwd Estos comandos no comienzan con /, pero si contienen al menos una /.

Usted puede utilizar rutas absolutas sin importar cuál sea el directorio en el cual está trabajando actualmente,
pero probablemente utilizará rutas relativas sólo si un comando se encuentra cerca de su directorio actual.
Supongamos que usted está desarrollando una nueva versión del clásico programa "Hello World!" en un
subdirectorio de su directorio principal denominado mytestbin. Usted podría utilizar una ruta alternativa para
ejecutar su comando como mytestbin/hello. Existen dos nombres especiales que usted puede utilizar en una

Aprenda Linux, 101: La línea de comando Linux Pagina 14 de 19


ibm.com/developerWorks/ssa/ developerWorks®

ruta; un sólo punto (.) se refiere al directorio actual, y un par de puntos (..) se refiere al directorio primario
actual. Dado que su directorio principal por lo general no se encuentra en su RUTA (y generalmente no
debería estarlo), usted necesitará proporcionar explícitamente una ruta para cualquier ejecutable que desee
ejecutar desde su directorio principal. Por ejemplo, si tuviera una copia de su programa hello en su directorio
principal, usted podría ejecutarla utilizando el comando ./hello. Usted puede usar tanto . como .. como parte
de una ruta absoluta, aunque un sólo . no es muy útil en tal caso. Usted puede también usar una virgulilla (~)
para referirse a su directorio principal ~nombre de usuario para referirse al directorio principal del usuario
denominado nombre de usuario. En el Listado 18 se pueden encontrar algunos ejemplos de esto.

Listado 18. Rutas absolutas y relativas


[ian@echidna ~]$ /bin/echo Use echo command rather than
builtin Use echo command rather than builtin [ian@echidna ~]$
/usr/../bin/echo Include parent dir in path Include parent dir in path
[ian@echidna ~]$ /bin/././echo Add a couple of useless path components Add a
couple of useless path components [ian@echidna ~]$ pwd # See where we are
/home/ian [ian@echidna ~]$ ../../bin/echo Use a relative path to echo Use a
relative path to echo [ian@echidna ~]$ myprogs/hello # Use a relative path with
no dots -bash: myprogs/hello: No such file or directory [ian@echidna ~]$
mytestbin/hello # Use a relative path with no dots Hello world!
[ian@echidna ~]$ ./hello Hello world! [ian@echidna ~]$ ~/mytestbin/hello #
run hello using ~ Hello world! [ian@echidna ~]$ ../hello # Try running
hello from parent -bash: ../hello: No such file or directory

Modificación del directorio de trabajo


Del mismo modo en el que puede ejecutar programas desde varios directorios de su sistema, puede también
modificar el directorio que está funcionando actualmente utilizando el comando cd. El argumento para cd
debe ser una ruta absoluta o relativa a un directorio. En cuanto a los comandos, usted puede utilizar ., ..,
~, y ~nombre de usuario en las rutas. Si utiliza cd sin parámetros, el cambio se realizará en su directorio
principal. Un sólo guión (-) como parámetro significa que se debe volver al directorio de trabajo anterior. Su
directorio principal se almacena en la variable de su entorno PRINCIPAL, y el directorio anterior se guarda
en la variable OLDPWD, de modo que cd solo es equivalente a cd $HOME y cd - es equivalente a cd $OLDPWD.
Por lo general hablamos de cambiar directorio en lugar de cambiar directorio de trabajo.

En cuanto a los comandos, existe también una variable de entorno, CDPATH, que contiene una serie de
directorios separados por dos puntos que deberían buscarse (además del directorio actual de trabajo) al
resolver rutas relativas. Si en la resolución se utilizó una ruta de CDPATH, cd imprimirá la ruta completa del
directorio resultante como datos de salida. Normalmente, un cambio de directorio exitoso genera solamente
un prompt nuevo y posiblemente modificado. En el Listado 19 pueden encontrarse algunos ejemplos de esto.

Listado 19. Modificación de directorios


[ian@echidna ~]$ cd /;pwd / [ian@echidna /]$ cd
/usr/local;pwd /usr/local [ian@echidna local]$ cd ;pwd /home/ian
[ian@echidna ~]$ cd -;pwd /usr/local /usr/local [ian@echidna local]$ cd
~ian/..;pwd /home [ian@echidna home]$ cd ~;pwd /home/ian [ian@echidna
~]$ export CDPATH=~ [ian@echidna ~]$ cd /;pwd / [ian@echidna /]$ cd
mytestbin /home/ian/mytestbin

Páginas de los manuales (man)


El último tema que trataremos en este artículo es el modo de obtener la documentación relativa a los
comandos Linux através de las páginas de los manuales y otras fuentes de documentación.

Aprenda Linux, 101: La línea de comando Linux Pagina 15 de 19


developerWorks® ibm.com/developerWorks/ssa/

Páginas y secciones de los manuales


La principal (y tradicional) fuente de documentación la constituyen las páginas de los manuales, a las cuales
puede acceder utilizando el comando man . En la Figura 1 se muestra la página del manual para el comando
man . Utilice el comando man man para visualizar esta información.

Figura 1. Página del manual para el comando man

La Figura 1 muestra algunos de los elementos típicos de las páginas de los manuales:

• Un encabezado con el nombre del comando seguido de su correspondiente número de sección entre
paréntesis
• El nombre del comando y los comandos relacionados al mismo descriptos en la misma página del
manual
• Un resumen de las opciones y los parámetros aplicables al comando
• Una breve descripción del comando
• Información detallada de cada una de las opciones
Pueden encontrarse otras secciones sobre el uso, el modo de informar las fallas, información sobre el autor, y
una lista de los comandos relacionados. Por ejemplo, las páginas del manual man nos dicen que los comandos
relacionados (y sus secciones del manual) son:
apropos(1), whatis(1), less(1), groff(1), y man.conf(5).

Aprenda Linux, 101: La línea de comando Linux Pagina 16 de 19


ibm.com/developerWorks/ssa/ developerWorks®

Existen ocho secciones en las páginas de los manuales comunes. Los manuales comunes por lo general se
instalan al instalar un paquete, por lo tanto si usted no ha instalado ningún paquete probablemente no tenga
las páginas del manual correspondientes. De modo similar, algunas de las secciones del manual pueden estar
vacías o casi vacías. Las secciones típicas de los manuales y los ejemplos que estas contienen son:

1. Comandos de usuario (env, ls, echo, mkdir, tty)


2. Llamadas al sistema o funciones kernel (link, sethostname, mkdir)
3. Rutinas de la bibliotecas (acosh, asctime, btree, locale, XML::Parser)
4. Información relacionada con dispositivos (isdn_audio, mouse, tty, zero)
5. Descripciones de formato de archivos (keymaps, motd, wvdial.conf)
6. Juegos (tener en cuenta que muchos juegos ahora son gráficos y poseen ayuda gráfica externa al
sistema de las páginas del manual)
7. Varios (arp, boot, regex, unix utf8)
8. Administración del sistema (debugfs, fdisk, fsck, mount, renice, rpm)

Otras secciones que podrían encontrarse son 9 relacionada con documentación del kernel de Linux, n
relacionada con la nueva documentación, o relacionada con la documentación antigua, y l relacionada con la
documentación local.

Algunas entradas aparecen en múltiples secciones. Nuestros ejemplos muestran mkdir en las secciones 1 y 2,
y tty en las secciones 1 y 4. Usted puede especificar una sección determinada, por ejemplo, man 4 tty o man 2
mkdir, o usted puede especificar la opción -a para listar todas las secciones del manual que sean pertinentes

Usted puede haber observado en la figura que man posee muchas opciones para explorar por si mismo. Por el
momento, echemos un vistazo a algunos de los comandos "Ver también" relacionados con man.

Ver también
Dos comandos importantes relacionados con man son whatis y apropos. El comando whatis busca en las páginas
de los manuales el nombre que se le da y muestra la información del nombre desde la página del manual
correspondiente. El comando apropos realiza una búsqueda de palabras claves de manuales y listas que
contienen dicha palabra. El Listado 20 muestra estos comandos.

Listado 20. Ejemplos de whatis and apropos


[ian@echidna ~]$ whatis man man [] (1) - format and
display the on-line manual pages man [] (1p) - display system documentation man []
(7) - macros to format man pages man [] (7) - pages - conventions for writing Linux
man pages man.config [] (5) - configuration data for man man-pages (rpm) - Man
(manual) pages from the Linux Documentation Project man (rpm) - A set of
documentation tools: man, apropos and whatis [ian@echidna ~]$ whatis mkdir mkdir []
(1) - make directories mkdir [] (1p) - make directories mkdir [] (2) - create a
directory mkdir [] (3p) - make a directory [ian@echidna ~]$ apropos mkdir mkdir []
(1) - make directories mkdir [] (1p) - make directories mkdir [] (2) - create a
directory mkdir [] (3p) - make a directory mkdirat [] (2) - create a directory
relative to a directory file descriptor mkdirhier [] (1) - makes a directory
hierarchy

Por cierto, si no puede encontrar las páginas del manual correpondientes a man.conf, pruebe ejecutando man
man.config.

Aprenda Linux, 101: La línea de comando Linux Pagina 17 de 19


developerWorks® ibm.com/developerWorks/ssa/

Los datos de salida de las páginas del comando man se visualizan utilizando un programa de paginación. En
la mayoría de los sistemas Linux, es probable que sea el programa less . Otra alternativa pod`ía ser el antiguo
programa more . Si desea imprimir la página, especifique la opción -t para formatear la página para impresión
utilizando el programa groff o troff .

El paginador less posee varios comandos que ayudan a buscar cadenas en los datos de salida visualizados.
Utilice man less para conocer más sobre / (buscar hacia adelante), ? (buscar hacia atrás), y n (repetir la última
búsqueda), entre otros.

Otras fuentes de documentación


Además de las páginas de los manuales a las cuales se puede acceder desde una línea de comando, la
Fundación para el Software libre ha creado una serie de archivos de información que son procesados con
el programa info . Estos archivos proporcionan facilidades para la navegación de gran alcance incluyendo
la habilidad para saltar a otras secciones. Si desea más información ingrese man info o info info . No todos
los comandos están documentados en info, por lo cual deberá utilizar simultáneamente man e info si se
convierte en un usuario de información.

Existen además algunas interfaces gráficas en las páginas de los manuales, como por ejemplo xman (from the
XFree86 Project) y yelp (the Gnome 2.0 help browser).

Si no puede encontrar ayuda para utilizar un comando determinado, pruebe ejecutando el comando con
la opción --help . Esto puede proporcionar la ayuda que necesita para utilizar el comando, o decirle cómo
obtenerla.

Aprenda Linux, 101: La línea de comando Linux Pagina 18 de 19


ibm.com/developerWorks/ssa/ developerWorks®

Sobre el autor
Ian Shields

Ian Shields trabaja en varios proyectos de Linux para la zona Linux de developerWorks. Es
programador sénior en IBM en Research Triangle Park, NC. Se unió a IBM en Canberra,
Australia, como ingeniero de sistemas en 1973 y desde entonces viene trabajando con sistemas
de comunicaciones e informática ubicua en Montreal, Canadá, y RTP, NC. Tiene varias
patentes. Tiene diplomatura en matemática pura y filosofía por la Universidad Nacional de
Australia. Tiene maestría y doctorado en ciencia de computación por la Universidad del
Estado de North Carolina. Puede contactar a Ian a través de ishields@us.ibm.com.

© Copyright IBM Corporation 2010


(www.ibm.com/legal/copytrade.shtml)
Marcas
(www.ibm.com/developerworks/ssa/ibm/trademarks/)

Aprenda Linux, 101: La línea de comando Linux Pagina 19 de 19