Skip to content

Tips & Tricks ~Bash~ - Apresento aqui algumas aplicações utilizando Bash. Explicando a funcionalidade de cada comando e aplicações baseando-se em GIT, React e funções gerais no SO.

Notifications You must be signed in to change notification settings

DIGOARTHUR/bash-commands-tricks

Repository files navigation

Bash Commands Tricks ft. React & Git

bashftreactgit
Automate your react and git commands and others

GitHub last commit GitHub

Sobre a aplicação   |    Comandos   |    Rodando a Aplicação   |   

skills Sobre 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.


skills Comandos




bashftreactgit bashftreactgit
Sistema Operacional

Organizar arquivos através de pastas

#!/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.

Deletar arquivos com mais de 30 dias sem modificação

#!/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.

Deletar todos os tipos de imagens com mais de 30 dias sem modificação

#!/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.




bashftreactgit
React

Inicializador de aplicação react

#!/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.




bashftreactgit
Git

Commitizen git commit (option select)

bashftreactgit
#!/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.

Commitizen git commit (option select Interative)

bashftreactgit
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.

skills Rodando a Aplicação

  1. Clonar repositório:
git clone https://github.com/DIGOARTHUR/bash-commands-tricks

skills Cuidado ao executar os arquivos antes de ler o que cada um faz.

  1. 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.

  2. Para customizar o código ou apenas verificar, mude a extensão .sh para .txt. Dê uma olhada aqui: Mudar extensão arquivo

skills Por que?

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

About

Tips & Tricks ~Bash~ - Apresento aqui algumas aplicações utilizando Bash. Explicando a funcionalidade de cada comando e aplicações baseando-se em GIT, React e funções gerais no SO.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages