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









