SlideShare una empresa de Scribd logo
UNIVERSIDAD TÉCNICA DE AMBATO




FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN

     CARRERA DE DOCENCIA EN INFORMÁTICA

                  SEMESTRE

        SEPTIEMBRE 2011 – FEBRERO 2012

             SISTEMAS OPERATIVOS

                 TEMA: SHELL

           Integrantes: JUAN VALENCIA

                MARCOS VAYAS
RESUMEN
Hay que tomar en cuenta algunos pasos para crear una Shell

Que es una Shell.- En informática, el término Shell se emplea para
referirse a programas que proveen una interfaz de usuario para acceder a
los servicios bien una vez que ya sabemos que es una Shell veamos

   1. Primero hay que saber en dónde y en qué sistema operativo vas a
      trabajar , por esta razón de que si hacemos una Shell para XP esta
      no correrá en vista o mucho menos en otro sistema operativo
   2. Entonces debemos crear librerías para esta Shell en este caso de
      nosotros crearemos tres comandos
      Estas son:
      2.1 Para ver el directorio
          Esta tendrá el nombre de “directorio” el mismo que puede ser
          modificado en el código fuente
      2.2 Para limpiar la pantalla
          Este comando se llamara “limpiar” el mismo que puede ser
          cambiado en el código fuente de la misma manera que todas las
          instrucciones o comandos
      2.3 Para salir de la pantalla principal o de modo consola
          Utilizaremos una instrucción llamada “salir”



         A continuación se mostrara el código fuente que se utilizo

# include <stdio.h>
# include <conio.h>
# include <string.h>
# include <dir.h>

void Imprimir(int x, int y, int c, char cmd[])
{
  int i=0;
  gotoxy(x,y);
  for(i=0; i<c; i++)
  {
    printf("%c",cmd[i]);
  }
  printf(" ");
  gotoxy(x+c,y);
}

void Ingresar(char cmd[])
{
  char op;
int c=0;
    int x=wherex();
    int y=wherey();

    do{
     op=getche();
     if (op==8)
     {
       if (c>0)
       {
           c--;
       }
     }
     if (op!=13 && op!=8 && op!=27)
     {
       cmd[c]=op;
       c++;
     }
     Imprimir(x,y,c,cmd);
    }while(op!=13);
    cmd[c]='0';
}

int Comparar(char cmd1[], char cmd2[])
{
  int resultado=0;
  int l1 = strlen(cmd1);
  int l2 = strlen(cmd2);
  if (l1!=l2)
    resultado=1;
  else
  {
    int i;
    for(i=0; i<l1; i++)
    {
      if(cmd1[i]!=cmd2[i])
      {
          resultado=1;
          break;
      }
    }
  }
  return resultado;
}

int CompararParte(char cmd1[], char cmd2[], int l)
{
  int resultado=0;
  int l1 = strlen(cmd1);
  int l2 = strlen(cmd2);
if (l1<l || l2<l)
      resultado=1;
    else
    {
      int i;
      for(i=0; i<l; i++)
      {
        if(cmd1[i]!=cmd2[i])
        {
            resultado=1;
            break;
        }
      }
    }
    return resultado;
}

void Limpiar()
{
  clrscr();
}

void Lista(char ruta[], char dir[])
{
  struct ffblk ffblk;
  int done;

    if (dir[0]=='0')
    {
      printf("nArchivos del Directorio actual %sn",dir);
    }
    else
    {
      printf("nDirectorio de %sn",dir);
    }
    if (ruta[0]=='0')
    {
      done = findfirst("*.*",&ffblk,0);
    }
    else
    {
      done = findfirst(ruta,&ffblk,0);
    }
    while (!done)
    {
       printf("t%sn", ffblk.ff_name);
       done = findnext(&ffblk);
    }
}
void Directorio(char cmd[])
{
  //Obtener el directorio
  char ruta[80];
  char dir[80];
  int i=0,j=0,k=0;
  int l=strlen(cmd);

 for(i=l-1;i>=0;i--)
 {
   if(cmd[i]==' ')
   {
     break;
   }
 }
 k=0;
 if(i>0)
 {
   for(j=i+1;j<l;j++)
   {
     ruta[k]=cmd[j];
     k++;
   }
 }
 ruta[k]='0';

 l=strlen(ruta);
 k=0;
 for(i=l-1;i>0;i--)
 {
   if(ruta[i]=='')
   {
     k=1;
     break;
   }
 }
 if(k==1)
 {
   for(j=0;j<i;j++)
   {
     dir[j]=ruta[j];

  }
  dir[j]='0';
 }
 else
 {
   dir[0]='0';
 }
Lista(ruta, dir);
}

void main()
{
  char cmd[80];
  int salir=0;

    clrscr();
    printf("C:>");
    do{

     Ingresar(cmd);
     if(Comparar(cmd,"salir")==0)
     {
       salir=1;
     }
     else
     {
       if(Comparar(cmd,"limpiar")==0)
       {
           Limpiar();
       }
       else
       {
           if(CompararParte(cmd,"enlistar",3)==0)
             Directorio(cmd);
           else
             printf("nEl comando es incorrecto");
       }
             }
     printf("C:>");
    }while(salir==0);
}

Más contenido relacionado

PDF
5... reglas de produccion
PDF
Ahorcado
ODP
Charla Mysql
PDF
Funciones con ficheros
DOCX
Juego el ahorcado
DOCX
Practicas programacion 1 10
PDF
Procesamiento de datos
DOCX
Programas en netbeans
5... reglas de produccion
Ahorcado
Charla Mysql
Funciones con ficheros
Juego el ahorcado
Practicas programacion 1 10
Procesamiento de datos
Programas en netbeans

La actualidad más candente (17)

DOCX
Código Arbol Binario de Búsqueda.docx
DOCX
Lenguaje de raptor, c# y java
DOCX
Programa que almacena en una base de datos las características de un carro co...
PDF
Listas con apuntadores dinámicos
RTF
Pila
DOCX
Practica
DOCX
Prueba#3 erika quillupangui
PDF
Programa de Cola Estática
DOC
Que es una funcion
RTF
Sumaoctal
PDF
Programa de Pila Estática
PDF
A lil' of Groovy for Ruby developers
PDF
Pilas con apuntadores dinamicos
PDF
Practica 5
PDF
Colas apuntadores dinámicos
Código Arbol Binario de Búsqueda.docx
Lenguaje de raptor, c# y java
Programa que almacena en una base de datos las características de un carro co...
Listas con apuntadores dinámicos
Pila
Practica
Prueba#3 erika quillupangui
Programa de Cola Estática
Que es una funcion
Sumaoctal
Programa de Pila Estática
A lil' of Groovy for Ruby developers
Pilas con apuntadores dinamicos
Practica 5
Colas apuntadores dinámicos
Publicidad

Destacado (7)

PDF
Tecnicas de programacion Shell Para Administradores
PDF
Agilidad en shell de linux
PPTX
Manual apache cassandra y comandos en la shell
PPT
Estructura Y Funciones Del Sistema Operativo
PPTX
Shells
PPT
Unix/Linux Basic Commands and Shell Script
DOC
Shell
Tecnicas de programacion Shell Para Administradores
Agilidad en shell de linux
Manual apache cassandra y comandos en la shell
Estructura Y Funciones Del Sistema Operativo
Shells
Unix/Linux Basic Commands and Shell Script
Shell
Publicidad

Similar a Shell (20)

PPTX
Como crear un programa de ciclo FOR en lenguaje C++
DOCX
Informe minishell
PDF
Quasi - Practicas de Programacion en C
DOCX
DOCX
Instrucciones(raptor, java, c#)
DOCX
Instrucciones(raptor, java, c#)
DOCX
Códigos c++
PDF
08 strings o cadenas
DOCX
Tipo de Operadores
DOCX
Codigos C+++
DOCX
comandos
DOCX
Instrucciones(raptor, java, c#)
DOCX
Instrucciones(raptor, java, c#)
DOCX
Instrucciones(raptor, java, c#)
DOCX
Investigacion de elementos y codigos de c++
DOCX
Comandos de Raptor,C# y Java
DOCX
Tarea pagweb
PDF
100 ejercicios linux
Como crear un programa de ciclo FOR en lenguaje C++
Informe minishell
Quasi - Practicas de Programacion en C
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
Códigos c++
08 strings o cadenas
Tipo de Operadores
Codigos C+++
comandos
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
Investigacion de elementos y codigos de c++
Comandos de Raptor,C# y Java
Tarea pagweb
100 ejercicios linux

Más de Marcos Vayas (10)

PDF
Auditoria informatica
PDF
Auditoria informatica
PDF
Zentyal
PPTX
Dns marcos
PPT
PPTX
COMO CREAR UN VIRUS
PPTX
Como poner al el nombre al costado de la hora
PPTX
Poner imagen en mi pc
PPTX
Para insertar una imagen en el grub
PPT
Metodología paice
Auditoria informatica
Auditoria informatica
Zentyal
Dns marcos
COMO CREAR UN VIRUS
Como poner al el nombre al costado de la hora
Poner imagen en mi pc
Para insertar una imagen en el grub
Metodología paice

Shell

  • 1. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN CARRERA DE DOCENCIA EN INFORMÁTICA SEMESTRE SEPTIEMBRE 2011 – FEBRERO 2012 SISTEMAS OPERATIVOS TEMA: SHELL Integrantes: JUAN VALENCIA MARCOS VAYAS
  • 2. RESUMEN Hay que tomar en cuenta algunos pasos para crear una Shell Que es una Shell.- En informática, el término Shell se emplea para referirse a programas que proveen una interfaz de usuario para acceder a los servicios bien una vez que ya sabemos que es una Shell veamos 1. Primero hay que saber en dónde y en qué sistema operativo vas a trabajar , por esta razón de que si hacemos una Shell para XP esta no correrá en vista o mucho menos en otro sistema operativo 2. Entonces debemos crear librerías para esta Shell en este caso de nosotros crearemos tres comandos Estas son: 2.1 Para ver el directorio Esta tendrá el nombre de “directorio” el mismo que puede ser modificado en el código fuente 2.2 Para limpiar la pantalla Este comando se llamara “limpiar” el mismo que puede ser cambiado en el código fuente de la misma manera que todas las instrucciones o comandos 2.3 Para salir de la pantalla principal o de modo consola Utilizaremos una instrucción llamada “salir” A continuación se mostrara el código fuente que se utilizo # include <stdio.h> # include <conio.h> # include <string.h> # include <dir.h> void Imprimir(int x, int y, int c, char cmd[]) { int i=0; gotoxy(x,y); for(i=0; i<c; i++) { printf("%c",cmd[i]); } printf(" "); gotoxy(x+c,y); } void Ingresar(char cmd[]) { char op;
  • 3. int c=0; int x=wherex(); int y=wherey(); do{ op=getche(); if (op==8) { if (c>0) { c--; } } if (op!=13 && op!=8 && op!=27) { cmd[c]=op; c++; } Imprimir(x,y,c,cmd); }while(op!=13); cmd[c]='0'; } int Comparar(char cmd1[], char cmd2[]) { int resultado=0; int l1 = strlen(cmd1); int l2 = strlen(cmd2); if (l1!=l2) resultado=1; else { int i; for(i=0; i<l1; i++) { if(cmd1[i]!=cmd2[i]) { resultado=1; break; } } } return resultado; } int CompararParte(char cmd1[], char cmd2[], int l) { int resultado=0; int l1 = strlen(cmd1); int l2 = strlen(cmd2);
  • 4. if (l1<l || l2<l) resultado=1; else { int i; for(i=0; i<l; i++) { if(cmd1[i]!=cmd2[i]) { resultado=1; break; } } } return resultado; } void Limpiar() { clrscr(); } void Lista(char ruta[], char dir[]) { struct ffblk ffblk; int done; if (dir[0]=='0') { printf("nArchivos del Directorio actual %sn",dir); } else { printf("nDirectorio de %sn",dir); } if (ruta[0]=='0') { done = findfirst("*.*",&ffblk,0); } else { done = findfirst(ruta,&ffblk,0); } while (!done) { printf("t%sn", ffblk.ff_name); done = findnext(&ffblk); } }
  • 5. void Directorio(char cmd[]) { //Obtener el directorio char ruta[80]; char dir[80]; int i=0,j=0,k=0; int l=strlen(cmd); for(i=l-1;i>=0;i--) { if(cmd[i]==' ') { break; } } k=0; if(i>0) { for(j=i+1;j<l;j++) { ruta[k]=cmd[j]; k++; } } ruta[k]='0'; l=strlen(ruta); k=0; for(i=l-1;i>0;i--) { if(ruta[i]=='') { k=1; break; } } if(k==1) { for(j=0;j<i;j++) { dir[j]=ruta[j]; } dir[j]='0'; } else { dir[0]='0'; }
  • 6. Lista(ruta, dir); } void main() { char cmd[80]; int salir=0; clrscr(); printf("C:>"); do{ Ingresar(cmd); if(Comparar(cmd,"salir")==0) { salir=1; } else { if(Comparar(cmd,"limpiar")==0) { Limpiar(); } else { if(CompararParte(cmd,"enlistar",3)==0) Directorio(cmd); else printf("nEl comando es incorrecto"); } } printf("C:>"); }while(salir==0); }