https://github.com/digoarthur/bash-commands-tricks
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.
https://github.com/digoarthur/bash-commands-tricks
bash
Last synced: about 1 month ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/digoarthur/bash-commands-tricks
- Owner: digoarthur
- Created: 2023-08-28T09:02:35.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-26T15:00:44.000Z (over 2 years ago)
- Last Synced: 2025-10-23T18:05:33.763Z (8 months ago)
- Topics: bash
- Language: Shell
- Homepage:
- Size: 1.33 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Bash Commands Tricks ft. React & Git
Automate your react and git commands and others
`based in` : [BashNotesForProfessionals](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/BashNotesForProfessionals.pdf)


Sobre a aplicação |
Comandos |
Rodando a Aplicação |
#
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.
---
#
Comandos
Sistema Operacional
## Organizar arquivos através de pastas
###### [organize-file-types.sh](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/organize-file-types.sh)
```bash
#!/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
###### [delete-files-than30days.sh](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/delete-files-than30days.sh)
```bash
#!/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
###### [delete-type-imgs-than30days.sh](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/delete-type-imgs-than30days.sh)
```bash
#!/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.
React
## Inicializador de aplicação react
###### [react-start-client.sh](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/react-start-client.sh)
```shell
#!/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.
Git
## Commitizen git commit (option select)
###### [git-commitzen-add-commit.sh](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/git-commitzen-add-commit.sh)
```bash
#!/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)
###### [git-commitzen-add-commit-interactive.sh](https://github.com/DIGOARTHUR/bash-commands-tricks/blob/main/git-commitzen-add-commit-interactive.sh)
```bash
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.
#
Rodando a Aplicação
1. 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.
2. 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.
4. Para customizar o código ou apenas verificar, mude a extensão `.sh` para `.txt`. Dê uma olhada aqui: [Mudar extensão arquivo](https://pt.wikihow.com/Alterar-a-Extensão-de-um-Arquivo)
#
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](https://www.linkedin.com/in/digoarthur/)
`source`: [NotesForProfessionals](https://www.linkedin.com/in/digoarthur/)