SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
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

La actualidad más candente

La actualidad más candente (17)

Código Arbol Binario de Búsqueda.docx
Código Arbol Binario de Búsqueda.docxCódigo Arbol Binario de Búsqueda.docx
Código Arbol Binario de Búsqueda.docx
 
Lenguaje de raptor, c# y java
Lenguaje de raptor, c# y javaLenguaje de raptor, c# y java
Lenguaje de raptor, c# y java
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...
 
Practicas
PracticasPracticas
Practicas
 
Listas con apuntadores dinámicos
Listas con apuntadores dinámicosListas con apuntadores dinámicos
Listas con apuntadores dinámicos
 
Pila
PilaPila
Pila
 
Practica
PracticaPractica
Practica
 
Prueba#3 erika quillupangui
Prueba#3 erika quillupanguiPrueba#3 erika quillupangui
Prueba#3 erika quillupangui
 
Programa de Cola Estática
Programa de Cola EstáticaPrograma de Cola Estática
Programa de Cola Estática
 
Que es una funcion
Que es una funcionQue es una funcion
Que es una funcion
 
Saia
SaiaSaia
Saia
 
Sumaoctal
SumaoctalSumaoctal
Sumaoctal
 
Programa de Pila Estática
Programa de Pila EstáticaPrograma de Pila Estática
Programa de Pila Estática
 
A lil' of Groovy for Ruby developers
A lil' of Groovy for Ruby developersA lil' of Groovy for Ruby developers
A lil' of Groovy for Ruby developers
 
Pilas con apuntadores dinamicos
Pilas con apuntadores dinamicosPilas con apuntadores dinamicos
Pilas con apuntadores dinamicos
 
Practica 5
Practica 5Practica 5
Practica 5
 
Colas apuntadores dinámicos
Colas apuntadores dinámicosColas apuntadores dinámicos
Colas apuntadores dinámicos
 

Destacado

Tecnicas de programacion Shell Para Administradores
Tecnicas de programacion Shell Para AdministradoresTecnicas de programacion Shell Para Administradores
Tecnicas de programacion Shell Para AdministradoresPedro López
 
Manual apache cassandra y comandos en la shell
Manual apache cassandra y comandos en la shellManual apache cassandra y comandos en la shell
Manual apache cassandra y comandos en la shellKevin López
 
Estructura Y Funciones Del Sistema Operativo
Estructura Y Funciones Del Sistema OperativoEstructura Y Funciones Del Sistema Operativo
Estructura Y Funciones Del Sistema Operativopainni
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Scriptsbmguys
 

Destacado (7)

Tecnicas de programacion Shell Para Administradores
Tecnicas de programacion Shell Para AdministradoresTecnicas de programacion Shell Para Administradores
Tecnicas de programacion Shell Para Administradores
 
Agilidad en shell de linux
Agilidad en shell de linuxAgilidad en shell de linux
Agilidad en shell de linux
 
Manual apache cassandra y comandos en la shell
Manual apache cassandra y comandos en la shellManual apache cassandra y comandos en la shell
Manual apache cassandra y comandos en la shell
 
Estructura Y Funciones Del Sistema Operativo
Estructura Y Funciones Del Sistema OperativoEstructura Y Funciones Del Sistema Operativo
Estructura Y Funciones Del Sistema Operativo
 
Shells
ShellsShells
Shells
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Script
 
Shell
ShellShell
Shell
 

Similar a Shell (20)

Informe minishell
Informe minishellInforme minishell
Informe minishell
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Jorge informe tecnico
Jorge informe tecnicoJorge informe tecnico
Jorge informe tecnico
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Modelo Simulado
Modelo SimuladoModelo Simulado
Modelo Simulado
 
Revista digital
Revista digitalRevista digital
Revista digital
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Corridas de los ejercicios ya realizados
Corridas de los ejercicios ya realizadosCorridas de los ejercicios ya realizados
Corridas de los ejercicios ya realizados
 
CURSO DE PROGRAMACION BASICA - Cap 9
CURSO DE PROGRAMACION BASICA - Cap 9CURSO DE PROGRAMACION BASICA - Cap 9
CURSO DE PROGRAMACION BASICA - Cap 9
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Seguridad Informatica Virus
Seguridad Informatica VirusSeguridad Informatica Virus
Seguridad Informatica Virus
 
Graficas especiales
Graficas especialesGraficas especiales
Graficas especiales
 

Más de Marcos Vayas

Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticaMarcos Vayas
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticaMarcos Vayas
 
COMO CREAR UN VIRUS
COMO CREAR UN VIRUSCOMO CREAR UN VIRUS
COMO CREAR UN VIRUSMarcos Vayas
 
Como poner al el nombre al costado de la hora
Como poner al el nombre al costado de la hora Como poner al el nombre al costado de la hora
Como poner al el nombre al costado de la hora Marcos Vayas
 
Poner imagen en mi pc
Poner imagen en mi pcPoner imagen en mi pc
Poner imagen en mi pcMarcos Vayas
 
Para insertar una imagen en el grub
Para insertar una imagen en el grubPara insertar una imagen en el grub
Para insertar una imagen en el grubMarcos Vayas
 
Metodología paice
Metodología paiceMetodología paice
Metodología paiceMarcos Vayas
 

Más de Marcos Vayas (10)

Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Zentyal
Zentyal  Zentyal
Zentyal
 
Dns marcos
Dns marcosDns marcos
Dns marcos
 
DHCP
DHCPDHCP
DHCP
 
COMO CREAR UN VIRUS
COMO CREAR UN VIRUSCOMO CREAR UN VIRUS
COMO CREAR UN VIRUS
 
Como poner al el nombre al costado de la hora
Como poner al el nombre al costado de la hora Como poner al el nombre al costado de la hora
Como poner al el nombre al costado de la hora
 
Poner imagen en mi pc
Poner imagen en mi pcPoner imagen en mi pc
Poner imagen en mi pc
 
Para insertar una imagen en el grub
Para insertar una imagen en el grubPara insertar una imagen en el grub
Para insertar una imagen en el grub
 
Metodología paice
Metodología paiceMetodología paice
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); }