remoção das instruções de inscrição
This commit is contained in:
parent
51a618868d
commit
0cc372e822
7 changed files with 0 additions and 0 deletions
|
@ -1,138 +0,0 @@
|
|||
#+title: Shell Script na Prática
|
||||
#+author: Blau Araujo
|
||||
#+email: blau@debxp.org
|
||||
|
||||
|
||||
* Desafio 4: Novo arquivo
|
||||
|
||||
** Objetivos
|
||||
|
||||
- Manipulação de argumentos
|
||||
- Separação de palavras em campos
|
||||
- Vetores associativos
|
||||
- Menu de seleção do Bash
|
||||
- Criação de menus customizados
|
||||
- Criação de menus com Fuzzy Finder
|
||||
- Estrutura de seleção
|
||||
- Execução de programas
|
||||
- Leitura e escrita em arquivos
|
||||
- Filtragem de texto
|
||||
|
||||
** Enunciado
|
||||
|
||||
Criar um programa que crie um novo arquivo de um dado modelo e o abra no
|
||||
editor adequado. O programa será chamado de ~nf~ e a sintaxe de uso será:
|
||||
|
||||
#+begin_example
|
||||
nf NOVO_ARQUIVO[.EXT]
|
||||
nf [OPÇÕES]
|
||||
#+end_example
|
||||
|
||||
O programa será chamado de ~nf~ (de /new file/) e receberá as seguintes opções:
|
||||
|
||||
- ~--list~ ou ~-l~: Lista os modelos disponíveis e o editor associado.
|
||||
- ~--help~ ou ~-h~: Exibe ajuda de uso.
|
||||
- ~--version~ ou ~-v~: Exibe informações de versão e copyright.
|
||||
|
||||
#+begin_quote
|
||||
Na ausência do nome do novo arquivo, a ajuda deverá ser impressa
|
||||
e o programa terminará com erro.
|
||||
#+end_quote
|
||||
|
||||
A associação de modelos e editores será feita com base na extensão do nome
|
||||
do arquivo a ser criado, por exemplo:
|
||||
|
||||
- ~.asm~: arquivo de um programa em Assembly (NASM)
|
||||
- ~.bash~ ou sem extensão: arquivo de script em Bash
|
||||
- ~.c~: arquivo de um programa em C
|
||||
- ~.md~: arquivo-texto formatado em GitHub Markdown
|
||||
- ~.org~: arquivo-texto formatado em Org Mode (Emacs)
|
||||
- ~.s~: arquivo de um programa para o /GNU Assembler/ (GAS)
|
||||
- ~.sh~: arquivo de script para o shell ~sh~
|
||||
- ~.txt~: arquivo-texto plano (/raw text/)
|
||||
|
||||
Os arquivos de modelo deverão ser criados no diretório: =~/.config/nf/modelos=
|
||||
e seus nomes devem ser iguais às extensões a que estão associados.
|
||||
|
||||
Exemplo:
|
||||
|
||||
#+begin_example
|
||||
.config/
|
||||
└─ nf/
|
||||
├─ modelos/
|
||||
│ ├─ asm
|
||||
│ ├─ bash
|
||||
│ ├─ c
|
||||
│ ├─ md
|
||||
│ ├─ org
|
||||
│ ├─ s
|
||||
│ ├─ sh
|
||||
│ ├─ txt
|
||||
│ └─ ...
|
||||
└─ config
|
||||
#+end_example
|
||||
|
||||
O arquivo =~/.config/nf/config= deve conter a associação das extensões com
|
||||
os respectivos editores:
|
||||
|
||||
#+begin_example
|
||||
DEFAULT='emacs -nw'
|
||||
|
||||
editor[asm]=$DEFAULT
|
||||
editor[bash]=$DEFAULT
|
||||
editor[c]=geany
|
||||
editor[md]=ghostwriter
|
||||
editor[txt]=nano
|
||||
#+end_example
|
||||
|
||||
O editor definido em ~DEFAULT~ será usado para qualquer extensão sem editor
|
||||
definido na configuração.
|
||||
|
||||
** Evolução 1
|
||||
|
||||
Sem argumentos, o programa deve exibir um menu com os modelos disponíveis.
|
||||
|
||||
Exemplo:
|
||||
|
||||
#+begin_example
|
||||
NOVO ARQUIVO
|
||||
|
||||
[1] asm
|
||||
[2] bash
|
||||
[3] c
|
||||
[4] md
|
||||
[5] org
|
||||
[6] s
|
||||
[7] sh
|
||||
[8] txt
|
||||
|
||||
Modelo (tecle <q> para sair):
|
||||
#+end_example
|
||||
|
||||
Em seguida, deve ser apresentado um /prompt/ para a digitação (obrigatória)
|
||||
do nome do arquivo:
|
||||
|
||||
#+begin_example
|
||||
Nome do arquivo:
|
||||
#+end_example
|
||||
|
||||
Se o campo for deixado vazio, deve ser apresentada uma opção de tentar
|
||||
novamente:
|
||||
|
||||
#+begin_example
|
||||
Nome do arquivo:
|
||||
|
||||
O nome do arquivo é obrigatório!
|
||||
Tecle <enter> para tentar novamente ou <c> para cancelar:
|
||||
#+end_example
|
||||
|
||||
** Evolução 2
|
||||
|
||||
Implementar uma opção de menu para criar um novo modelo usando o editor
|
||||
padrão para criar o arquivo de modelo e um prompt para a escolha do
|
||||
editor.
|
||||
|
||||
** Evolução 3
|
||||
|
||||
Utilizar a ferramenta ~fzf~ para exibir o menu.
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue