Curso de Linux - Programas de comandos

15 - Programas de comandos

[editar]
Curso gratis creado por Anónimo.
22 de Febrero de 2006
El sistema operativo Linux, al igual que otros sistemas operativos, permite realizar programas de comandos, esto es, programas constituidos por distintos comandos que podrían teclearse interactivamente uno por uno en una terminal, pero que es muchas veces más cómodo agruparlos en un fichero, y ejecutarlos con una sola instrucción posteriormente.

Los comandos de Linux pueden ser externos - que implican la creación de un nuevo proceso, cuyo código está en /bin o /usr/bin- e internos - cuyo código está incluido en el del intérprete shell que los ejecuta.

Una cierta primera forma de agrupar comandos la ofrece Linux por medio del carácter ;. Por ejemplo, tecleando el comando,

date; ls; who

el ordenador ejecutará sucesivamente los comandos date, ls y who. También podría crearse con un editor de textos un fichero llamado comandos que contuviera las líneas siguientes:

date

ls

who

Para ejecutar este fichero de comandos puede teclearse,

sh comandos

o bien convertir el fichero comandos en directamente ejecutable por medio del comando chmod en la forma,

chmod a+x comandos

de modo que el programa de comandos comandos puede ejecutarse simplemente tecleando su nombre,

comandos

Los comandos sh comandos y comandos no son enteramente equivalentes. Así, el primero de ellos exige que el fichero comandos esté en el directorio de trabajo, mientras que el segundo sólo exige que el fichero comandos esté en uno de los directorios de búsqueda de comandos especificados en la variable PATH.

Cuando se ejecuta un fichero de comandos Linux abre lo que se llama un nuevo shell, es decir un nuevo entorno para la ejecución de los comandos. Para que las variables del caparazón original conserven su valor en el nuevo caparazón es necesario prepararlas con la sentencia export antes de abrir el nuevo shell. Por ejemplo, como consecuencia de lo que se acaba de decir, si en el interior de un fichero de comandos se cambia de directorio con el comando cd, al acabar la ejecución de dicho fichero volveremos automáticamente al directorio inicial.


Introducción de comentarios


Para introducir líneas de comentarios en un programa de comandos basta comenzar dichas líneas con el carácter #. Hay que tomar la precaución de que este carácter no sea el primer carácter del fichero de comandos, porque entonces el ordenador interpreta que el programa está escrito en Cshell (una variante especial de UNIX desarrollada en la Universidad de Berkeley) y el resultado es imprevisible. Puede ser buena práctica comenzar todos los ficheros de comandos con una línea en blanco.

Variables del shell

UNIX permite definir variables en un fichero de comandos en la forma,

USER=/mnt/mecan/juanto

TERM=hp2392

...

Es una práctica habitual el utilizar nombres con letras mayúsculas para las variables del caparazón. Para recuperar el valor de una variable hay que precederla con el carácter . Por ejemplo, utilizando en otra parte del programa TERM, en dicho lugar se sustituiría TERM por su valor, esto es, hp2392.

El shell del Linux tiene definidas para cada usuario unas variables estándar. Para averiguar cuáles son basta teclear el comando siguiente,

set

Para definir otras variables propias de cada usuario puede utilizarse el fichero .profile, que es un fichero de comandos propio de cada usuario que se ejecuta automáticamente al hacer el login.

Para definir variables que contengan espacios en blanco deben encerrarse entre caracteres (') o ("), como por ejemplo,

FECHA="31 de Diciembre de 1986"

más adelante se verá la diferencia entre el carácter (') y el carácter (").

Comando echo

El comando echo imprime un determinado texto en la terminal. Un ejemplo de utilización de dicho comando puede ser el siguiente:

echo Me gusta el sistema operativo UNIX

El comando echo es de gran utilidad en los ficheros de comandos. Cuando el texto que se desea escribir en la terminal contiene alguno de los caracteres especiales de UNIX ( * ? [ ] > >> < & ; \ ' ) hay que tomar precauciones especiales desconectando su significado. Una forma de hacerlo es precediendo dicho carácter con la barra invertida (\). Así, para escribir mediante el comando echo tres asteriscos, utilizaríamos

echo \*\*\*

si no utilizáramos la barra invertida, el asterisco se interpretaría como un carácter de sustitución y se imprimiría el nombre de todos los ficheros del directorio.

Otra forma de anular el significado de los caracteres especiales es encerrando el texto a escribir mediante comillas (") o entre apóstrofos normales ('). Los apóstrofos (') anulan el significado de todos los caracteres comprendidos entre ellos. Así pues, el triple asterisco lo podríamos escribir con el comando,

echo '*'

Las comillas (") son menos restrictivas, y anulan el significado de todos los caracteres excepto los tres siguientes: ( ` \). Esto es muy importante porque si VAR es el nombre de una variable, y VAR aparece en un comando echo entre apóstrofos se escribe VAR, mientras que si aparece entre comillas se escribe el valor de la variable, al cumplir el carácter su cometido.

El carácter (\) tiene otros significados, además del ya visto de anular el significado especial de otros caracteres. Así, sirve como indicador de que un comando continúa en la línea siguiente. Cuando se utiliza en la definición interactiva de un comando, en la línea siguiente aparece el prompt secundario (>), que indica que se debe seguir tecleando el comando. Cuando en un comando echo aparecen los caracteres (\c) y (\n) quiere decir, respectivamente, que no se cambie de línea y que se salte de línea, al escribir por la pantalla.

El carácter apóstrofo inverso o acento grave (`) tiene también un significado especial. Cuando en un comando echo aparece el nombre de otro comando encerrado entre apóstrofos inversos (por ejemplo, `date`, `who`, `ls`, ...), el nombre de dicho comando se sustituye por el resultado que genera al ejecutarse interactivamente. Un ejemplo podría ser el siguiente:

echo "Los usuarios del sistema son \n\n `who`"

El lector puede hacer la prueba y observar el resultado correspondiente.

Parámetros de los ficheros de comandos

A los ficheros de comandos pueden pasárseles como parámetros un conjunto de una o más variables. Dentro del fichero de comandos estas variables o parámetros se conocen con los nombres
, 1, 2, ..., 9. La variable representa el propio nombre del fichero de comandos, y 1, 2, ..., 9 son los nombres de los parámetros propiamente dichos

Vamos a comenzar viendo un ejemplo muy sencillo de programa de comandos al que se le pasa sólo una variable o parámetro. El comando de borrar de
Linux rm no confirma la operación de borrado si no se le pone la opción (-i). Esto es peligroso porque uno fácilmente puede olvidarse de teclear dicha opción y borrar lo que no quería borrar. Vamos a crear un fichero de comandos llamado del que incluya dicha opción. Dicho fichero podría estar formado por,

echo "Quiere borrar el fichero 1?"

rm -i 1

Después de darle a este fichero el correspondiente permiso de ejecución con el comando
chmod, podríamos borrar con confirmación el fichero file tecleando,

del file

Dentro del fichero de comandos,
valdría del y 1 valdría file.

Un programa de comandos más complicado y que utiliza dos parámetros podría ser el contenido en el fichero
cambio, que intercambia el nombre de dos ficheros:

mv 1 ficheropufo

mv 2 1

mv ficheropufo 2

Este fichero se ejecutaría en la forma,

cambio file1 file2

En este ejemplo
es cambio, 1 es file1 y 2 es file2. En realidad a un fichero de comandos se le pueden pasar todos los argumentos que se deseen, aunque sólo hay nombre específico para los nueve primeros (más el propio nombre del comando). El número de argumentos que se le pasa está contenido en la variable #. La variable * contiene el conjunto de todos los parámetros. Un nuevo ejemplo puede aclarar algo más este punto.

Si el programa
del que hemos hecho previamente lo hubiéramos utilizado en la forma:

del *.f

teóricamente debería de borrar, con confirmación, todos los ficheros
Fortran del directorio. En la práctica no es así, porque (*.f) no representa un único argumento sino muchos argumentos (todos los ficheros Fortran del directorio). Como resultado sólo se borra el primer fichero Fortran. Para borrar todos e indicarnos además cuántos ficheros hay, el fichero del podría estar compuesto por los siguientes comandos:

echo "Hay # programas Fortran \n"

rm -i *

El comando
shift hace posible utilizar y distinguir parámetros que están más a la derecha del noveno lugar en la llamada al programa de comandos. En efecto, cuando se llama al comando shift, 2 se convierte en 1, 3 en 2, etc, y lo que hubiera sido 10 en 9, con lo cual ya se puede referenciar. El comando shift deja inalterado y puede utilizarse tantas veces como se desee.

Otras posibilidades de los ficheros de comandos

Los ficheros de comandos tienen muchas más posibilidades que las que se han apuntado en esta Introducción: pueden leer variables, preguntar por la existencia de un fichero y por si es ejecutable o no, y admiten construcciones lógicas del tipo
IF, DO, DO WHILE, etc. Para utilizar estas posibilidades acudir al manual correspondiente.
[editar]

40 opiniones

Muy bueno

esta muy bueno pero le falta con acceso a paginas web
Redireccion y tuberias.

Esta muy bueno el articulo porque es bien conciso y es facil de entender, un ejemplo de ello es que pude encontrar una respuesta acertada a una duda sobre el significado del redireccionameinto, en con solo echarle una ojeada. Felicidades al autor y a este medio por publicarlo.
Excelente.

Muchisimas gracias me sirvio de mucho en realidad encontre todo lo que necesitaba esta muy claro todo lo relacionada con la estructura del sistema de ficheros en gnu/linux.
Incompleto.

La verdad yo buscaba otra cosa pero igual y si le añades lo demas pues estaria mejor o bueno al menos es lo que yo digo bueno espero y haya sido correcta mi opinion, saludos a los que trabajan en esto y pasensela chido.
Aprendiendo.

Solamente he usado arch, y me ha parecido bastante bueno. Es rapido, seguro y aunque le faltan algunos detallitos a la versión de 64 bits me agrada mucho, por es quiero aprender mas sobre linux y asi llegar a ser un linuxero profesional.
1 2 3 4 5 6 7 ... 8 | siguiente >

Cursos gratis relacionados con 'Curso de Linux'

Completo curso de Linux, un sistema operativo gratuito y de libre distribución inspirado en el... Más »
Completo curso básico de Linux. Todo lo que necesitas para iniciarte en el fascinante mundo... Más »
El objetivo de este curso es aprender a programar en el lenguaje Ada, desde sus... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
Práctico y completo curso de hacking.

Autor y licencia de 'Curso de Linux'


Curso gratis de Anónimo. Extraido de: CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.