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
.sh
coloque-os no diretório alvo.Ex.: 2.1 Insira o
delete-files-than30days.sh
no 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
.sh
para.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