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?]]
|
- [[./02/README.org][2. Qual é a sua graça?]]
|
||||||
- [[./03/README.org][3. Jogo da adivinhação]]
|
- [[./03/README.org][3. Jogo da adivinhação]]
|
||||||
- [[./04/README.org][4. Novo arquivo]]
|
- [[./04/README.org][4. Novo arquivo]]
|
||||||
- [[#][5. Menu de configurações]]
|
- [[#][5. Menu de favoritos]]
|
||||||
- [[#][6. Tarefas]]
|
- [[#][6. Tarefas]]
|
||||||
- [[#][7. Slides no terminal]]
|
- [[#][7. Slides no terminal]]
|
||||||
- [[#][8. Busca e leitura de manuais]]
|
- [[#][8. Busca e leitura de manuais]]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue