Automate your react and git commands and others
based in : BashNotesForProfessionals
Sobre a aplicação | Comandos | Rodando a Aplicação |
O uso de comandos script bash é uma forma de interação direta com a sua máquina, possibilitando executar ações como criação, remoção de pastas/arquivos, iniciar aplicações, automatizar tarefas na sua máquina como deletar arquivos que já estão a mais de 30 dias, organizar arquivos em varias outras pastas com o seu tipo determinado. Além dos comandos que voce executa nos terminais, há a possibilidade de criar comandos script bash executáveis que são os arquivos
.sh. Com um clique no arquivo, tudo será feito na sua máquina como programado.
#!/bin/bash mkdir imgs mv *.{png,jpeg,jpg} imgs mkdir svgs mv *.svg svgs mkdir pdfs mv *.pdf pdfs mkdir exe mv *.exe exe mkdir mp4 mv *.mp4 mp4#!/bin/bash: instrui o sistema operacional a executar o Bash e que por vez irá interpretar a instrução passada.mkdir: make directory, cria um diretório, uma pasta. Neste caso, são criados as pastas imgs, svgs, pdfs, exe e mp4.mv: move, move arquivos para determinado diretório. Neste caso para as pastas criadas.
#!/bin/bash find . -maxdepth 1 -mtime +30 -delete#!/bin/bash: instrui o sistema operacional a executar o Bash e que por vez irá interpretar a instrução passada.find: busca algum arquivo, diretório desejado. Teste caso.que significa todos.maxdepth: responsável por indicar o nível de camadas de diretórios. Caso a pasta que você queria deletar os arquivos tenha outras pastas, o maxdepth com valor 2 varrerá os arquivos destas pastas também. Quanto maior o valor, mais profundo será feita o procedimento.mtime: modification timestamp, é passado o dado do tempo de modificação do arquivo. O valor é em dias, sendo que neste caso colocado 30.delete: executa a ação de deletar arquivos, diretórios.
#!/bin/bash find . -maxdepth 1 -name "*.png" -o -name "*.svg" -o -name "*.jpeg" -o -name "*.jpg" -mtime +30 -delete-
#!/bin/bash: instrui o sistema operacional a executar o Bash e que por vez irá interpretar a instrução passada. -
find: busca algum arquivo, diretório desejado. Teste caso.que significa todos. -
maxdepth: responsável por indicar o nível de camadas de diretórios. Caso a pasta que você queria deletar os arquivos tenha outras pastas, o maxdepth com valor 2 varrerá os arquivos destas pastas também. Quanto maior o valor, mais profundo será feita o procedimento. Neste caso, foi usado no maximo a camada 1, pois quero que seja deletado apenas arquivos daquele diretório e de mais nenhum além. -
name: é passado o nome específico do arquivo/diretório. Neste caso foi passado a extensão do arquivo. -
o: or, indica o conectivo lógico ou. -
mtime: modification timestamp, é passado o dado do tempo de modificação do arquivo. O valor é em dias, sendo que neste caso colocado 30. -
delete: executa a ação de deletar arquivos, diretórios.
#!/bin/bash APPDIRCLIENT=CRUD_React_com_MySQL/client APPDIRSERVER=CRUD_React_com_MySQL/server PS3="Run App? :" select option in Yes✅ No❌; do case $REPLY in 1) cd $APPDIRCLIENT yarn start cd $APPDIRSERVER yarn start ;; 2) break ;; *) echo "invalid option $REPLY";; esac done -
#!/bin/bash: instrui o sistema operacional a executar o Bash e que por vez irá interpretar a instrução passada. -
APPDIRCLIENT & APPDIRSERVER: variável que recebe o caminho para se chegar na aplicação React e API. Este caminho pode ser obtido por meio de um comando chamado pwd -
select option in Yes✅ No❌;: aguarda a escolha da opção aqui passada Yes ou No. -
do .. case... $REPLY: a partir do momento que é feita a escolha, o $REPLY obtem a posição sendo YES = 1 e NO = 2 e direciona para o case relacioando. -
cd $APPDIRCLIENT & cd $APPDIRSERVER: choose directory, é um comando para ele 'concatenar' com o caminho de onde se encontra este arquivo .sh, com o que voce está passando agora, sendo neste caso o caminho contido na variável $APPDIRCLIENT & $APPDIRSERVER. No fim terá acesso de onde se encontra os arquivos para que logo em seguida seja feita a inicialização dos mesmos. -
yarn start: comando para inicializar a aplicação. Aqui pode variar, apenas configure com o comando de inicialização, troque se for preciso.
#!/bin/bash git add . commitizenList=$'build\nci\ndocs\nfeat\nfix\nstyle\ntest' select commitizen in $commitizenList; do read -p "git commit -m: " message; gitCommit="git commit -m" gitCommit+="${commitizen}":"${message}" eval $gitCommit break done read -p "Press [ANY] key to quit..."#!/bin/bash: instrui o sistema operacional a executar o Bash e que por vez irá interpretar a instrução passada.git add .: comando git para adicionar TODOs os arquivos no stage.select {item} in {list} do ... done: comando para iterar a lista declarada, neste caso, $commitizenList.read -p {message} {variable}: entrada de dados, input usuário.concatenate strings: uso de concatenação- gitCommit+="${commitizen}":"${message}"
eval $gitCommit: variável sendo inserida como comando, o eval é utilizado para que a sentença de comando seja executada. -read -p "Press [ANY] key to quit: comando usado para dar uma pausa no console enquanto alguma tecla NÃO seja pressionada.
- gitCommit+="${commitizen}":"${message}"
function print_menu() # selected_item, ...menu_items { local function_arguments=($@) local selected_item="$1" local menu_items=(${function_arguments[@]:1}) local menu_size="${#menu_items[@]}" for (( i = 0; i < $menu_size; ++i )) do if [ "$i" = "$selected_item" ] then echo "-> ${menu_items[i]}" else echo " ${menu_items[i]}" fi done } function run_menu() # selected_item, ...menu_items { local function_arguments=($@) local selected_item="$1" local menu_items=(${function_arguments[@]:1}) local menu_size="${#menu_items[@]}" local menu_limit=$((menu_size - 1)) clear print_menu "$selected_item" "${menu_items[@]}" while read -rsn1 input do case "$input" in $'\x1B') # ESC ASCII code (https://dirask.com/posts/ASCII-Table-pJ3Y0j) read -rsn1 -t 0.1 input if [ "$input" = "[" ] # occurs before arrow code then read -rsn1 -t 0.1 input case "$input" in A) # Up Arrow if [ "$selected_item" -ge 1 ] then selected_item=$((selected_item - 1)) clear print_menu "$selected_item" "${menu_items[@]}" fi ;; B) # Down Arrow if [ "$selected_item" -lt "$menu_limit" ] then selected_item=$((selected_item + 1)) clear print_menu "$selected_item" "${menu_items[@]}" fi ;; esac fi read -rsn5 -t 0.1 # flushing stdin ;; "") # Enter key return "$selected_item" ;; esac done } selected_item=0 menu_items=('build' 'docs' 'feat' 'fix' 'style' 'test') git add . run_menu "$selected_item" "${menu_items[@]}" commitizen="$?" read -p "git commit -m: " message; gitCommit="git commit -m" gitCommit+="${menu_items[commitizen]}":"${message}" eval $gitCommit break read -p "Press [ANY] key to quit..."-
#!/bin/bash: instrui o sistema operacional a executar o Bash e que por vez irá interpretar a instrução passada. -
print_menu(): função que itera e mostra as opções contidas na array $menu_items -
run_menu(): função para que as opções sejam interativa, esta função mantém a tela atualizada o tempo todo que a seta de seleção se movimenta. Aqui a função print_menu() é sempre chamada. -
git add .: comando git para adicionar TODOs os arquivos no stage. -
selected_item: variável que armazena um valor numérico inicial de iteração, no caso 0 -
menu_items: array que contém as opções de commitizen -
run_menu "$selected_item" "${menu_items[@]}": chamando função e passando argumentos logo à frente. -
commitizen="$?": variável que recebe o retorno da escolha feita no menu iterativo. -
read -p {message} {variable}: entrada de dados, input usuário. -
concatenate strings: uso de concatenação- gitCommit+="${commitizen}":"${message}"
-
eval $gitCommit: variável sendo inserida como comando, o eval é utilizado para que a sentença de comando seja executada. -
read -p "Press [ANY] key to quit: comando usado para dar uma pausa no console enquanto alguma tecla NÃO seja pressionada.
- Clonar repositório:
git clone https://github.com/DIGOARTHUR/bash-commands-tricks Cuidado ao executar os arquivos antes de ler o que cada um faz.
-
Para rodar os arquivos
.shcoloque-os no diretório alvo.Ex.: 2.1 Insira o
delete-files-than30days.shno diretório Downloads. Executando este arquivo, ele buscará arquivos que está mais de 30 dias e irá excluir. -
Para customizar o código ou apenas verificar, mude a extensão
.shpara.txt. Dê uma olhada aqui: Mudar extensão arquivo
Como foi visto o Bash é útil para automatizar rotinas e tarefas envolvendo o Sistema Operacional e ferramentas como Git e React, por exemplo. Uma outra aplicação usada também ligada ao Git é o uso do Husky, que é implementado no React, a base de rotina de execução dele é baseado no bash. Quis trazer e compartilhar diferentes aplicações para mostrar o poder e importância do uso dessa ferramenta.
by: @digoarthur
source: NotesForProfessionals





