Shell
Click here to load reader
-
Upload
marcos-vayas -
Category
Documents
-
view
1.180 -
download
0
description
Transcript of Shell
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 %s\n",dir); } else { printf("\nDirectorio de %s\n",dir); } if (ruta[0]=='\0') { done = findfirst("*.*",&ffblk,0); } else { done = findfirst(ruta,&ffblk,0); } while (!done) { printf("\t%s\n", 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); }