Esse projeto reproduz em parte o comportamento de um prompt shell, foi realizado em dupla.
A existência de shells está ligada à própria existência de TI. Antigamente, todos os desenvolvedores concordavam que a comunicação com um computador usando os interruptores 1/0 eram seriamente irritantes. Pela lógica eles tiveram a ideia de criar um software para se comunicar com um computador usando linhas interativas de comandos em uma linguagem um pouco próxima da linguagem humana. Graças ao Minishell, pode-se viajar no tempo e encarar e solucionar os problemas que pessoas enfrentaram quando o Windows não existia.
git@github.com:prezadopedro/42-minishell.git
sudo apt-get install libreadline6 libreadline6-dev
make
./minishell
Se você deseja executar o programa executável automaticamente com sinalizadores valgrind para verificar se há vazamentos, basta escrever make leak
e pressionar enter.
Integrado | Descrição do comando |
---|---|
echo com -n |
Exibe uma linha de texto para a saída padrão |
cd |
Altera o diretório de trabalho do ambiente de execução do shell atual |
pwd |
Imprime o nome de arquivo completo do diretório de trabalho atual |
export name[=word] |
Define o atributo de exportação para variáveis |
unset |
Desconfigura valores e atributos de variáveis e funções |
env |
Define cada nome como valor no ambiente e executa o comando |
exit |
Faz com que o shell saia com o status de saída especificado |
Alguns dos principais arquivos que estão no diretório raiz do projeto:
include
: contém todos os cabeçalhos necessários para o projetolibft
: nossa própria biblioteca C com algumas funções auxiliares úteissources
: diretório que contém toda a implementação do projetobuiltins
: diretório de implementação dos builtins requeridos pelo subject do projetoexecute
: diretório que consiste em funções que executam a entrada do usuárioexpander
: diretório com arquivos que implementam expansores de shell, como aspasparser
: diretório com arquivos e funções que implementam a gramática do minishellsignals
: arquivo que consiste em funções que manipulam eventos do usuário, comoctrl-C
,ctrl-D
ectrl-\
utils
: diretório que implementa tabela hash e linked list para armazenar dados