26 Feb 2009 @ 1:30 AM 

Editando archivos

A la hora de editar archivos de texto en la consola de un sistema UNIX la mejor opción es el comando vi.

Modo de uso:

vi rutaArchivo

vi tiene dos modos: modo de edición y modo de comandos.

El modo de edición permite modificar el contenido de un archivo como insertar o borrar caracteres y el modo de comandos permite ingresar comandos de vi como copiar, pegar, guardar, etc.

El programa vi se inicia por defecto en modo de comandos, a continuación se muestra una lista de los comandos más usados.

Comandos de edición de texto en vi

Comando

Descripción

i

Inserta texto antes del carácter sobre el cual se encuentra el cursor (cambia al modo de edición)

I

Inserta texto al inicio de una línea (cambia al modo de edición)

a

Inserta texto después del carácter sobre el cual se encuentra el cursor (cambia al modo de edición)

A

Inserta texto al final de una línea (cambia al modo de edición)

yy

Copia una línea de texto

p

Pega una línea de texto

dd

Corta o elimina una línea de texto

o

Inserta una línea en blanco después de la línea en la que se encuentra el cursor (cambia al modo de edición)

O

Inserta una línea en blanco antes de la línea en la que se encuentra el cursor (cambia al modo de edición)

r

Reemplaza un carácter (se presiona r y luego se ingresa el carácter deseado)

R

Inserta texto  poniendo el cursor en modo de sobre-escritura (cambia al modo de edición)

Comandos para la navegación en el archivo

Comando

Descripción

j

Desplaza el cursor hacia abajo

k

Desplaza el cursor hacia arriba

h

Desplaza el cursor hacia la izquierda

l

Desplaza el cursor hacia derecha

gg

Desplaza el cursor hacia una línea indicada, si no digitamos algún número antes de usar este comando,entonces desplazará el cursor al inicio del archivo. Ej: si deseamos dirigirnos a la línea 100 escribimos 100gg

G

Es equivalente a gg, solo que si no lo predecimos de algún número, entonces desplazará el cursor al final del archivo.

0

Desplaza el cursor al inicio de la línea actual.

$

Desplaza el cursor al final de la línea actual.

Comandos útiles para la manipulación de vi

Comando

Descripción

ZZ

Guarda los cambios y sale del editor

:w

Guarda los cambios en el archivo

:wq

Es equivalente al comando ZZ

:/

Busca texto en el archivo. Ej: si deseamos buscar la palabra hola en el archivo usamos el comando :/hola y luego presionamos ENTER, se puede navegar entre las coincidencias encontradas usando n (siguiente) y N (anterior).

:q

Permite salir del editor si no se han realizados cambios en el archivo.

:q!

Salida de modo forzado, sale del editor sin guardar los cambios realizados al archivo.

:!

Permite ingresar un comando en el shell desde vi. Ej: si deseamos conocer la hora escribimos :!date y luego presionamos ENTER

Para cambiar del modo de edición al modo de comandos se presiona la tecla ESC.

Posted By: lgavidia
Last Edit: 26 Feb 2009 @ 08:57 AM

EmailPermalinkComments (0)
Tags
 22 Feb 2009 @ 11:55 PM 

La sentencia switch() en Lenguaje C es una sentencia de selección. Esta sentencia permite seleccionar las acciones a realizar de acuerdo al valor que tome una variable.

Modo de uso:

switch(variable)
{
	case valor_1:
		//acciones
		break;
	case valor_2:
		//acciones
		break;
		.
		.
		.
	case valor_n:
		//acciones
		break;
	defalut:
		//acciones
		break;
}
Si el valor que toma la variable no coincide con los valores especificados en los casos, se
realizarán las acciones definidas en la etiqueta default.

Ejemplos:

1.  Escriba un programa en Lenguaje C que solicite el ingreso de un número del 1 al 9 y que muestre por pantalla el número seleccionado en letras.

Solución:

#include <stdio.h>
void main()
{
	int opcion;
	printf("Ingrese un numero entero: ");
	scanf("%d",&opcion);
	switch(opcion)
	{
		case 1:
			printf("Ha ingresado el numero uno\n");
			break;
		case 2:
			printf("Ha ingresado el numero dos\n");
			break;
		case 3:
			printf("Ha ingresado el numero tres\n");
			break;
		case 4:
			printf("Ha ingresado el numero cuatro\n");
			break;
		case 5:
			printf("Ha ingresado el numero cinco\n");
			break;
		case 6:
			printf("Ha ingresado el numero seis\n");
			break;
		case 7:
			printf("Ha ingresado el numero siete\n");
			break;
		case 8:
			printf("Ha ingresado el numero ocho\n");
			break;
		case 9:
			printf("Ha ingresado el numero nueve\n");
			break;
		defalut:
			printf("Ha ingresado un numero no valido\n");
			break;
	}
}

2.  Escriba un programa en Lenguaje C que solicite el ingreso de dos números enteros y que luego permita seleccionar si se sumarán, restarán dividirán o multiplicarán y muestre el resultado por pantalla.

Solución:

#include <stdio.h>
void main()
{
	int opcion,a,b,resultado;
	printf("Ingrese un numero entero [a]: ");
	scanf("%d",&a);
	printf("Ingrese un numero entero [b]: ");
	scanf("%d",&b);
	printf("Menu\n");
	printf("1. Sumar\n");
	printf("2. Restar\n");
	printf("3. Dividir\n");
	printf("4. Multiplicar\n");
	printf("Elija una operacion: ");
	scanf("%d",&opcion);
	switch(opcion)
	{
		case 1:
			resultado=a+b;
			printf("%d + %d = %d\n",a,b,resultado);
			break;
		case 2:
			resultado=a-b;
			printf("%d - %d = %d\n",a,b,resultado);
			break;
		case 3:
			resultado=a/b;
			printf("%d / %d = %d\n",a,b,resultado);
			break;
		case 4:
			resultado=a*b;
			printf("%d x %d = %d\n",a,b,resultado);
			break;
		defalut:
			printf("Opcion no valida\n");
			break;
	}
}
Posted By: lgavidia
Last Edit: 22 Feb 2009 @ 11:55 PM

EmailPermalinkComments (2)
Tags
 15 Feb 2009 @ 12:02 AM 

Caracteres en UNIX

En Unix, los caracteres tecleados son enviados al sistema, el cual los devuelve para ser mostrados en pantalla salvo el caso de cuando ingresamos un password, la clave no se mostrará y tampoco mostrará caracteres como ***.

La mayoría de los caracteres del teclado son ordinarios, sin embargo, exiten otros con funciones especiales com es el caso de la tecla ENTER (o RETURN), esta tecla indica al sistema que los  caracteres enviados por teclado deben interpretarse para ser procesados, luego de esto el sistema retroalimenta al usuario y desplaza el cursor a una nueva línea.

También existen caracteres que no aparecen en el teclado, y por lo general son el resultado de una combinación de teclas como es el caso de Ctrl-m, el cual es equivalente a presionar la tecla ENTER; Estos caracteres se llaman caracteres de control.

A continuación un listado de los caracteres de control más usados en consolas UNIX:

Ctrl-d –> Indica a un programa que no hay más datos de entrada. Esta combinación de carcateres cierra la sesión si no se está escribiendo o ejecutando nada en consola.
Ctrl-g –> Acciona la campana del PC.
Ctrl-h –> Carácter de retroceso, es equivalente a la tecla BACKSPACE.
Ctrl-i –> Tabulador, es equivalente a la tecla TAB.
Ctrl-c –> Interrumpe cualquier programa en ejecución.

Mandatos Básicos

Si deseamos conocer la fecha y hora debemos usar el comando date

$ date
sáb feb 14 23:04:12 ECT 2009

Si deseamos conocer qué usuarios están utilizando la máquina usamos el comando who

$ who
root     tty1         2009-02-14 23:08
leonardo :0           2009-02-14 19:14 (console)

En Unix cada usuario del equipo posee una bandeja de correo, la cual puede ser consultada con el comando mail

$ mail
Heirloom mailx version 12.2 01/07/07.  Type ? for help.
«/var/spool/mail/leonardo»: 1 message 1 new
>N  1 root@linux-uu97.si Sat Feb 14 23:29   18/653   Se te acaba el espacio
?

Al usar el comando mail el sistema nos informa cuantos mails tengo en mi bandeja de entrada (almacenados y no leidos), para acceder a cada mail se presiona enter y nos aparecerá algo parecido a lo siguiente:

Message  1:
From root@linux-uu97.site  Sat Feb 14 23:29:38 2009
X-Original-To: leonardo
Delivered-To: leonardo@linux-uu97.site
Date: Sat, 14 Feb 2009 23:29:37 -0500
To: leonardo@linux-uu97.site
Subject: Se te acaba el espacio
User-Agent: Heirloom mailx 12.2 01/07/07
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
From: root@linux-uu97.site (root)

Te quedan 3000MB disponibles en tu disco duro, por favor compra otro.

Si deseamos eliminar el mensaje solo escribimos d y presionamos enter.
Si deseamos salir del programa presionamos Ctrl-d.
Si deseamos enviar un mail un usuario se escribe: mail nombreUsuario

Por ejemplo:
Si deseo enviar un correo al usuario rubi

$ mail rubi
Subject: Te hecho de menos
Espero ansioso conversar contigo de nuevo

?

Para enviar el mensaje al usuario presionamos Ctrl-d.
Estos comandos son muy básicos pero tienen mucha utilidad…
Más adelante veremos muchos comandos más… Espero vuestros comentarios 🙂

Posted By: lgavidia
Last Edit: 15 Feb 2009 @ 12:13 AM

EmailPermalinkComments (1)
Tags
 13 Feb 2009 @ 10:00 PM 

En la programación es escencial el manejo de bifurcaciones (si-entonces), en el Lenguaje C se usa la sentencia if().

Modo de Uso

if(condicion)
{
Acciones
}

Las acciones dentro de las llaves {} se ejecutarán siempre y cuando se cumpla la condición especificada entre los peréntesis (). También es posible omitir las llaves si se fuera a ejecutar una sola acción.

La condición puede ser cualquier expresión lógica como por ejemplo a<=b ó x!=0 ó z+10<a&&b>0, etc.

Ejemplos:

1. Escriba un programa en Lenguaje C que solicite el ingreso de un número entero e indique si es mayor que cero y si es par.

Solución:

#include <stdio.h>
void main()
{
	int a;
	printf("Ingrese un numero: ");
	scanf("%d",&a);
	if(a>0)
		printf("El numero es mayor que cero\n");
	if(a%2==0)
		printf("El numero ingresado numero es par\n");
}
2. Escriba un programa en Lenguaje C que solicite el ingreso de un número entero por teclado, 
si el número es menor que 12 lo incremente en uno y lo multiplique por diez; si el número
ingresado es mayor o igual que 12 lo multiplique por diez y luego lo incremente en uno. Mostrar 
el resultado por pantalla.

Solución:

#include <stdio.h>
void main()
{
	int a;
	printf("Ingrese un numero: ");
	scanf("%d",&a);
	if(a<12)
	{
		a++;
		a*=10;
	}
	if(a>=12)
	{
		a*=10;
		a++;
	}
	printf("El resultado es: %d\n",a);
//Nótese que el orden es importante XD
}
El lenguaje C también soporta el uso de una estructura si-entonces, sino.Para esto se usa la
sentencia else.

Veamos otra variante del ejemplo 2 usando la sentencia else

#include <stdio.h>
void main()
{
	int a;
	printf("Ingrese un numero: ");
	scanf("%d",&a);
	if(a<12)
	{
		a++;
		a*=10;
	}
	else 	//Si un número no es menor que 12, entonces es  mayor o igual al mismo
	{
		a*=10;
		a++;
	}
	printf("El resultado es: %d\n",a);
}
Posted By: lgavidia
Last Edit: 13 Feb 2009 @ 10:30 PM

EmailPermalinkComments (0)
Tags
 11 Feb 2009 @ 2:18 AM 

Saludos a todos mis lectores 🙂

He decidido crear una sección dedicada a la creación de Scripts sobre la shell de sistemas basados en Unix, los cuales son muy importantes ya que nos ayudarán mucho en la administración de estos sistemas.

Espero les sea de utilidad…

Manos a la obra

Conceptos básicos

Antes de entrar en el entorno de programación Unix es necesario tener conceptos básicos sobre estos sistemas operativos y el manejo de la consola.

¿Que es Unix?

Unix es el núcleo de un sistema operativo de tiempo compartido, un programa que controla los recursos de un equipo y los asigna entre los usuarios. Unix no solo abarca el núcleo, sino también todos los programas esenciales para el manejo del mismo como: editores, compiladores, y lenguajes de comandos, etc.

Aprender más

¿Qué es la Shell?

Es un programa que sirve de interfaz de comunicación entre el usuario y el sistema operativo que espera órdenes escritas por el usuario.

Aprender más

Sistema de archivos en Unix

En Unix  todo funciona a base de archivos, todo lo que existe en Unix son archivos (directorios, drivers, ficheros, etc).

El sistema de archivos Unix se organiza de manera Jerárquica.

En Unix los archivos tienen asociado un nombre, contenido, ubicación y datos como dueño, tamaño, fecha de modificación, etc.

Un directorio en Unix es un archivo que contiene información de otros archivos, ya que el sistema de archivos un directorio es una ubicación que puede almacenar archivos y otros directorios.

En los sistemas Unix todo es contenido por el directorio raíz /. Este directorio es el de más alta jerarquía.

Rutas

Las rutas son un método de referenciar archivos y directorios en un sistema de archivos las cuales señalan la ubicación exacta de los mismos.

La forma de recorrer un árbol de directorios en Unix se lo hace directorio a directorio separándolos con la barra invertida «/».

Existen 2 formas de representar rutas en Unix, de manera absoluta y relativa.

Ruta absoluta: Señala la posición de un archivo o directorio desde el directorio raíz.

Ejemplo: /home/leo/Escritorio/carpeta1/

Ruta Relativa: Señala la posición de un archivo o directorio desde la ubicación actual.

Ejemplo:

Nos encontramos en /home ¿cuál es la ruta relativa a /home/leo/Escritorio/carpeta1?

La ruta relativa es leo/Escritorio/carpeta1

En las rutas relativas se usan dos representaciones  especiales a directorios ./ y ../, el primero (./) hace referencia al directorio actual y el segundo (../) hace referencia al directorio superior. Veamos algunos ejemplos:

Estamos ubicados en /home/leo/Escritorio/carpeta1 ¿cuál es la ruta relativa a /home/leo/Escritorio y  a /home/leo?

La ruta relativa a /home/leo/Escritorio es ../

La ruta relativa a/home/leo es ../../

Nótese que en el caso de la ruta relativa a /home/leo desde /home/leo/Escritorio/carpeta1 ésta fue ../../ porque se indica que es el directorio superior al directorio superior de carpeta1

Posted By: lgavidia
Last Edit: 11 Feb 2009 @ 01:04 PM

EmailPermalinkComments (3)
Tags
 06 Feb 2009 @ 7:19 PM 

El lenguaje C permite manejar una gran variedad de operadores como lo son: Operadores aritméticos, lógicos, de asignación, relacionales.

Operadores Aritméticos

Operador Nombre Descripción Sentido
+ Suma Suma dos números De izquierda a derecha
Resta Resta dos números De izquierda a derecha
/ División Divide dos números De izquierda a derecha
* Producto Multiplica dos números De izquierda a derecha
% Resto Calcula  el resto de una división De izquierda a derecha

Operadores Lógicos

Operador Nombre Descripción Sentido
! No lógico Realiza la operación lógica NOT De izquierda a derecha
&& Y lógico Realiza la operación lógica AND De izquierda a derecha
|| Ó lógico Realiza la operación lógica OR De izquierda a derecha

Operadores Relacionales

Operador Nombre Descripción Sentido
== Igual a Compara dos valores y devuelve verrdadero (1) si son iguales. De izquierda a derecha
!= Diferente de Compara dos valores y devuelve verrdadero (1) si son diferentes. De izquierda a derecha
> Mayor que Compara dos valores y devuelve verrdadero si el izquierdo es mayor que el derecho. De izquierda a derecha
>= Mayor o igual que Compara dos valores y devuelve verrdadero si el izquierdo es mayor o igual que el derecho. De izquierda a derecha
< Menor que Compara dos valores y devuelve verrdadero si el izquierdo es menor que el derecho. De izquierda a derecha
<= Menor o igual que Compara dos valores y devuelve verrdadero si el izquierdo es menor o igual que el derecho. De izquierda a derecha

Operadores de asignación

Operador Nombre Descripción Sentido
++ Incremento Incrementa en uno al valor actual de una variable
Decremento Decrementa en uno al valor actual de una variable
= Asignación Asigna un valor dado a una variable De derecha a izquierda
+= Incremento de Incrementa en una cantidad dada al valor de una variable De derecha a izquierda
-= Decremeto de Decrementa en una cantidad dada al valor de una variable De derecha a izquierda
*= Asignación del producto Multiplica al valor de una variable con un número dado y se lo asigna a la misma. De derecha a izquierda
/= Asignación de la división Divide al valor de una variable para un número dado y se lo asigna a la misma. De derecha a izquierda

En el caso de los operadores incremento y decremento, se los puede colocar a la derecha
de la variable (operación post-incremento/decremento) o a la izquierda (operación
pre-incremento/decremento). Al usar estos operadores en modo post-incremento/decremento
primero se evalúa la variable y luego se le  suma o resta 1. En el caso de los operadores
pre-incremento/decremento primero se le suma o resta 1 al valor de la variable y luego
se evalúa la misma.

Ejemplos:

Post-Incremento

#include <stdio.h>
void main(){
	int a,b;
	a=10;
	b=a++;	//A la variable b se le asigna el valor de a; luego el valor
		//de la variable a se incrementa en 1
}

Pre-Incremento

#include <stdio.h>
void main()
{
	int a,b;
	a=10;
	b=++a; 	//El valor de a es incrementado en 1 y luego este valor es asignado a		
		//la variable b
}
Posted By: lgavidia
Last Edit: 06 Feb 2009 @ 10:37 PM

EmailPermalinkComments (0)
Tags
 02 Feb 2009 @ 10:56 PM 

En el lenguaje C el ingreso de datos por teclado se hace mediante la función scanf()

scanf() es una función que lee datos ingresados por teclado y se los asigna a una variable indicada. Esta función también maneja caracteres de sustitución como lo hace printf(), con el fin de especificar los datos que se están leyendo.

Modo de uso:

scanf("%d",&variableEntera);
scanf("%c",&variableCaracter);
scanf("%f",&variableReal);

Veamos un ejemplo:

#include <stdio.h>
void main()
{
	int numero; //Declarando variable entera
	printf("Ingrese un numero: "); //Solicitando al usuario que ingrese un numero
	scanf("%d"&numero); //Leyendo el número solicitado
	printf("El numero que ingreso es %d", numero); //Mostrando el número ingresado por teclado
}
En esta función aparece un "nuevo componente" del lenguaje c, el operador "&", llamado
operador de dirección.
Este operador devuelve la dirección de memoria en la que se alojan los datos de una variable,
la función scanf() usa esta dirección para insertar directamente en este espacio de memoria los
datos leidos desde el teclado.

Veamos algunos ejemplos de la apliación de la función scanf():

1. Escriba un programa que solicite por teclado la longitud del radio de un círculo y que
muestre por pantalla el área y perímetro del mismo.
Solución:
#include <stdio.h>
#define PI 3.14
void main()
{
	//Declaración de variables
	float radio, perimetro, area;
	printf("Ingrese el valor del radio del circulo: ");
	scanf("%f",&radio); //leyendo datos desde el teclado
	perimetro = 2*PI*radio; //Calculando el perímetro del círculo
	area = PI*r*r; //Calculando el área del círculo
	//Mostrando en pantalla los resultados
	printf("El area del circulo es : %.2f\n",area);
	printf("El perimetro del circulo es: %.2f",perimetro);
}

2. Escriba un programa que solicite por teclado las longitudes de la base y altura de un
rectángulo y que muestre por pantalla el área y perímetro del mismo.
Solución:

#include <stdio.h>
void main()
{
	//Declaración de variables
	float base, altura, perimetro, area;
	printf("Ingrese el valor de la base del rectangulo: ");
	scanf("%f",&radio); //leyendo datos desde el teclado
	printf("Ingrese el valor de la altura del rectangulo: ");
	scanf("%f",&radio); //leyendo datos desde el teclado
	perimetro = 2*base + 2*altura; //Calculando el perímetro del rectángulo
	area = base*altura; //Calculando el área del rectángulo
	//Mostrando en pantalla los resultados
	printf("El area del rectangulo es : %.2f\n",area);
	printf("El perimetro del rectangulo es: %.2f",perimetro);
}
Posted By: lgavidia
Last Edit: 04 Feb 2009 @ 10:01 AM

EmailPermalinkComments (2)
Tags

 Last 50 Posts
Change Theme...
  • Users » 11164
  • Posts/Pages » 29
  • Comments » 43
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

Curso PHP



    No Child Pages.

About me



    No Child Pages.