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

Cómo dominar los comandos GNU y UNIX

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.]

Ian Shields, Senior Programmer, IBM

author photo - Ian ShieldsIan 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.


Nivel de autor contribuyente en developerWorks

08-07-2010 (Primera publicación 08-07-2010)

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:

  • 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.

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 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 escapeFunción
\aAlerta (campana)
\bBarra invertida
\cSuprimir nuevas líneas añadidas (cumple la misma función que la opción -n)
\fAvance de página (limpia la pantalla de un visor de video)
\nNueva línea
\rRetorno de carro
\tTabulació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.

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

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
NombreFunción
USEREl nombre del usuario que inició la sesión
UIDLa id de usuario numérico del usuario que inició sesión
HOMEEl directorio principal del usuario
PWDEl directorio de trabajo actual
SHELLEl nombre del shell
$La id de proceso (o PIDdel proceso de shell bash que se está ejecutando (u otro)
PPIDLa 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.

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 Resources 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

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 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 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ónDescripción
-sImprime el nombre del kernel. En el caso de que no se especifique ninguna opción esto sucederá por defecto.
-nImprime el nombre del nodo o del dominio.
-rImprime la actualización del kernel. Esta opción por lo general se utiliza en los comandos de manipulación de módulos.
-vImprime la versión del kernel.
-mImprime el nombre del hardware de la máquina (CPU).
-oImprime el nombre del sistema operativo.
-aImprime 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 !!)
!#
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
ComandoTecla común de PCDescripción
C-fFlecha derechaMueve el cursor un espacio hacia la derecha
C-bFlecha izquierdaMueve el cursor un espacio hacia la izquierda
C-pFlecha hacia arribaMueve un comando anterior en el historial
C-nFlecha hacia abajoMueve un comando posterior en el historial
C-rBú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-fAlt-fMoverse 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-bAlt-bMoverse al final de la palabra anterior
C-aHomeMoverse al principio de la línea
C-eEndMoverse al final de la línea
BackspaceBackspaceEliminar el carácter que está antes del cursor
C-dDelEliminar el carácter que se encuentra debajo del cursor (las funciones Del y Backspace pueden configurarse con significados opuestos)
C-kCtrl-kBorrar (kill) hasta el final de la línea y guardar el texto eliminado para usarlo luego
M-dAlt-dBorrar (kill) hasta el final de la palabra y guardar el texto eliminado para usarlo luego
C-yCtrl-yVolver 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 Resources 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 Resources 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.

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 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.

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
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).

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.

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.

Recursos

Aprender

  • Use el roadmap for LPIC-1 para encontrar los artículos developerWorks que necesita para prepararse para la certificación LPIC-1 basada en los objetivos de Abril de 2009.
  • Vea los objetivos de abril de 2009 para el examen LPI 101 y LPI 102. Siempre deberá consultar los objetivos para ver los requerimientos definitivos.
  • Vea toda la serie de exámenes para la preparación del LPI en developerWorks para aprender las bases de Linux y prepararse para la certificación de administrador de su sistema conforme a los objetivos anteriores al mes de abril de 2009.
  • En el programa LPIC, encuentre listas de tareas, ejemplos de preguntas, y objetivos detallados para los tres niveles de la certificación en administración de sistema Linux del Linux Professional Institute.
  • En "Basic tasks for new Linux developers" (developerWorks, March 2005), aprenda como abrir una ventana de terminal o un prompt de shell y mucho más.
  • El Linux Documentation Project posee una variedad de documentos útiles, especialmente sus HOWTOs.
  • En la developerWorks Linux zone, encuentre más recursos para los desarrolladores de Linux, y vea most popular articles and tutorials.
  • Vea todos los tips de Linux aquí y los tutoriales en en developerWorks.
  • Esté al tanto de los acontecimientos y transmisiones técnicas de developerWorks aquí.

Obtener los productos y tecnologías

  • Con el software de prueba de IBM , disponible para descargar directamente desde developerWorks, cree su próximo proyecto de desarrollo de Linux.

Comentar

  • Participar en el foro de debate.
  • Conéctese con la comunidad My developerWorks aquí ; con su perfil personal y personalice su página principal; usted puede ajustar developerWorks según sus intereses e interactuar con otros usuarios de developerWorks

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=965736
ArticleTitle=Aprenda Linux, 101: La línea de comando Linux
publish-date=07082010