Criar um arquivo de referência de comandos digitados no terminal.

1. Criar um arquivo de referência de comandos digitados no terminal.

taidson
nosdiat

(usa Arch Linux)

Enviado em 08/01/2016 - 14:39h

Olá, pessoal estou tentando criar um comando em C para criar um arquivo de referência de comandos digitados no terminal, ou seja, toda vez que digitar um comando no terminal quero inseri-lo em um arquivo e diferentemente do comando history ele não liste comandos repetidos.


#include<stdlib.h>
#include<stdio.h>
#include<string.h>

int bufferCmp(char buffercmp[300]) //função que deveria analizar se o comando já existe no arquivo referência.
{
char buffer[300];
pLista=fopen("listaDeComandos.txt", "a+");

if (pLista == NULL) return 1;
else
{
while ( ! feof (pLista) )
{
if (fgets(buffer , 300 , pLista) == NULL ) break;
return strcmp(buffercmp,buffer);
}

}


int main(){
FILE *pArquivo; //ponteiro que recebe a lista do comando history
FILE *pLista; //arquivo onde serão salvos os comando

char buffer[300];
char bufferfinal[300];
int w=0,k=0, cmp;
pArquivo=fopen("referencia.txt", "r");
pLista=fopen("listaDeComandos.txt", "a+");

if (pArquivo == NULL) perror ("Error not exits history comands in shell ");
else
{
while ( ! feof (pArquivo) )
{
if (fgets(buffer , 300 , pArquivo) == NULL ) break;//teste se existe algun arquivo no history
for(w=0;w<300;w++)
{
bufferfinal[w]=buffer[w+6]; //retirando a numeração do comando listado por hisrory
cmp=bufferCmp(bufferfinal); //aqui deveria testar se o comando já existe no aqruivo de referência
if(cmp != 0) //se o comando não existe escrever no arquivo
{
fputs(buffercmp[w],pLista)

}else
{printf("todos os comandos listados");}
}
}


fclose(pLista);
fclose (pArquivo);
}
return 0;
}



  


2. É uma idéia legal

Leandro Cadete da Silva
leandrocadete

(usa XUbuntu)

Enviado em 08/01/2016 - 19:21h

A um tempo atrás escrevi um programa com esse objetivo, mas perdir o código por acidente no dropbox.
Uma sujestão que te dou é usar C++ em vez de C.


3. Re: Criar um arquivo de referência de comandos digitados no terminal.

taidson
nosdiat

(usa Arch Linux)

Enviado em 08/01/2016 - 21:21h

A verdade é que mal sei usar C, e estou tendo muitos problemas na parte em que tento pegar o buffer do fgets, ver código, e compara-lo ao arquivo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts