Mini sistema de arquivos em C com interface interativa. Nesta versão, as operações usam o sistema de arquivos real do Windows: pastas e arquivos são criados/alterados dentro do diretório raiz onde o programa é executado.
- Diretório raiz: é o
cwd(diretório atual) no momento da execução. - Diretório atual: começa no raiz e muda com
cd. Não é permitido navegar para fora do raiz. - Nomes de arquivos e diretórios devem ser simples (sem
/ou\). Usecdpara entrar em subpastas.
mkdir <nome>: cria uma subpasta real no diretório atual.cd <nome>: entra em uma subpasta existente.cd /volta ao raiz;cd ..sobe um nível (sem sair do raiz).touch <arquivo>: cria o arquivo (ou atualiza sua data) no diretório atual.echo <arquivo> <conteudo>: escreve o conteúdo no arquivo (substitui o conteúdo anterior). Na UI, use_para espaços.cat <arquivo>: lê e imprime o conteúdo do arquivo.cp <origem> <destino>: copia o arquivo no diretório atual.mv <origem> <destino>: renomeia o arquivo no diretório atual.rm <arquivo>: remove o arquivo.chmod <arquivo> <permissao>: altera permissões (ver seção abaixo).ls: lista todos os arquivos e subdiretórios do diretório atual, mostrando nome e tipo (<DIR>ou<FILE>).
- O programa aceita permissões em formato octal (ex.:
755,644). - Em ambientes
ucrt64/MSYS2,chmodé mapeado, mas o efeito é limitado ao que o Windows suporta. Em geral:- Bits de leitura/escrita podem refletir no atributo somente leitura.
- Bit de execução não tem efeito nativo em arquivos regulares no Windows.
- A chamada tenta
_chmode, em seguida,chmod. Se nenhuma surtir efeito, retorna-1. - Use
chmodcomo metadado de intenção e compatibilidade; não espere o mesmo comportamento do Linux.
Via task do VS Code (recomendado):
- Execute a task "Build MiniFS" e depois rode
mini_fs.exe.
Via terminal PowerShell:
Set-Location "c:\Users\(seuUsuario)\(pastadoprojeto)\mini_fs"
C:\msys64\ucrt64\bin\gcc.exe -fdiagnostics-color=always -g src/main.c src/filesystem.c -I include -o mini_fs.exe
.\mini_fs.exeSequência de operações comuns:
mkdir pasta1cd pasta1touch arquivo.txtecho arquivo.txt conteudo_com_espacos_usa_underscorecat arquivo.txtcd ..(volta ao diretório pai)ls(lista conteúdo do diretório atual)
- Buffers de I/O de 64 KiB: operações de leitura/escrita (
cat,echo,cp) usam buffers grandes esetvbufpara minimizar chamadas ao sistema e aumentar throughput. - Concatenação manual de paths: substituição de
snprintfpormemcpyem operações de montagem de caminhos, reduzindo overhead de formatação. - API nativa do Windows:
lsusaFindFirstFileA/FindNextFileApara listagem eficiente de diretórios.
- Navegação e operações são somente no diretório atual (sem caminhos com barras).
- Entrada de conteúdo com espaços requer uso de
_(underscore). - Possíveis melhorias futuras: suporte a wide-char (Unicode), entrada com
fgets, caminhos relativos completos.
Contribuições são bem-vindas! Abra issues ou PRs com sugestões e correções.