desafio 5
This commit is contained in:
parent
0f83217d5e
commit
2ef98ba3d0
2 changed files with 105 additions and 1 deletions
104
desafios/05/README.org
Normal file
104
desafios/05/README.org
Normal file
|
@ -0,0 +1,104 @@
|
|||
#+title: Shell Script na Prática
|
||||
#+author: Blau Araujo
|
||||
#+email: blau@debxp.org
|
||||
|
||||
|
||||
* Desafio 5: Menu de favoritos
|
||||
|
||||
** Objetivos
|
||||
|
||||
- Manipulação de arquivos (inclusão, edição e exclusão de linhas)
|
||||
- Casamento de padrões de texto
|
||||
- Separação de linhas em campos
|
||||
|
||||
** Enunciado
|
||||
|
||||
Criar um programa que gerencie uma lista de arquivos frequentemente editados
|
||||
no terminal, como arquivos de configurações, anotações ou scripts.
|
||||
|
||||
O programa será chamado de ~bm~ (de /bookmark/) e deve implementar as seguintes
|
||||
instruções de uso:
|
||||
|
||||
#+begin_example
|
||||
Bookmark (bm) - Gerenciador de arquivos favoritos
|
||||
|
||||
USO:
|
||||
|
||||
bm [OPÇÕES] [PADRÃO]
|
||||
|
||||
Quando executado sem argumentos, exibe o menu para seleção do arquivo
|
||||
que deverá ser aberto no editor de texto.
|
||||
|
||||
Sem OPÇÕES, abre no editor de texto o arquivo cujo nome casar com
|
||||
PADRÃO. Se houver mais de um casamento, o menu de seleção será
|
||||
exibido listando apenas os casamentos encontrados.
|
||||
|
||||
OPÇÕES:
|
||||
|
||||
-a CAMINHO[:DESCRIÇÃO] Inclui o arquivo em CAMINHO com uma DESCRIÇÃO
|
||||
opcional.
|
||||
|
||||
-l [PADRÃO] Lista os arquivos que casam com o PADRÃO. Se
|
||||
não for informado um PADRÃO, todos os arquivos
|
||||
serão listados.
|
||||
|
||||
-e [PADRÃO] Edita a entrada que casa com o PADRÃO. Caso
|
||||
não seja informado um PADRÃO, ou se houver
|
||||
mais de um casamento, o menu de seleção
|
||||
será exibido.
|
||||
|
||||
-r [PADRÃO] Remove a entrada que casa com PADRÃO. Caso
|
||||
não seja informado um PADRÃO, ou se houver
|
||||
mais de um casamento, o menu de seleção
|
||||
será exibido.
|
||||
|
||||
-h, --help Exibe esta ajuda.
|
||||
|
||||
-v, --version Exibe informações de versão e licença.
|
||||
#+end_example
|
||||
|
||||
** Sobre o menu de seleção
|
||||
|
||||
Este desafio não tem evoluções. Em vez disso, o programa deve ser capaz
|
||||
de utilizar os seguintes menus:
|
||||
|
||||
*** Se invocado no terminal
|
||||
|
||||
- Menu ~select~ (padrão)
|
||||
- Menu com ~fzf~ (padrão, se instalado)
|
||||
|
||||
*** Se invocado no ambiente gráfico
|
||||
|
||||
No ambiente gráfico (por exemplo, invocado por um lançador), só será dada
|
||||
a opção de selecionar uma entrada para abertura no editor. Selecionada a
|
||||
entrada, o terminal será aberto com o arquivo carregado no editor padrão.
|
||||
|
||||
Neste caso, o menu poderá ser:
|
||||
|
||||
- Abre um terminal e exibe o menu (padrão)
|
||||
- Menu ~dmenu~ (se instalado)
|
||||
- Menu ~rofi~ (se instalado)
|
||||
|
||||
Para uso no ambiente gráfico com ~rofi~ ou ~dmenu~ (ou qualquer outro, como um
|
||||
diálogo do YAD, por exemplo), será necessário definir uma configuração no
|
||||
arquivo =~/.config/bm/config=.
|
||||
|
||||
** Opções de configuração
|
||||
|
||||
O arquivo de configuração (=~/.config/bm/config=) deve conter as seguintes
|
||||
definições:
|
||||
|
||||
#+begin_example
|
||||
DEFAULT_EDITOR=nano # Editor padrão.
|
||||
MENU=default # O padrão é 'select' ou 'fzf' (se instalado).
|
||||
|
||||
# Configurações do menu com 'fzf':
|
||||
fzf_options=(
|
||||
...
|
||||
)
|
||||
#+end_example
|
||||
|
||||
Para utilizar outros menus, além dos nomes de seus executáveis em ~MENU~,
|
||||
deve ser criado um vetor com as sus opções de linha de comando (como
|
||||
feito para o 'fzf').
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
- [[./02/README.org][2. Qual é a sua graça?]]
|
||||
- [[./03/README.org][3. Jogo da adivinhação]]
|
||||
- [[./04/README.org][4. Novo arquivo]]
|
||||
- [[#][5. Menu de configurações]]
|
||||
- [[#][5. Menu de favoritos]]
|
||||
- [[#][6. Tarefas]]
|
||||
- [[#][7. Slides no terminal]]
|
||||
- [[#][8. Busca e leitura de manuais]]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue