Meus dotfiles, aliases e funções de shell do dia a dia: git, rspec, tmux, atalhos de busca e utilitários para projetos Ruby/Rails. Funciona em Linux (testado no Arch com Omarchy) e em macOS, com bash ou zsh.
git clone git@github.com:bvicenzo/bash_scripts.git ~/.config/bash_scripts
~/.config/bash_scripts/install.shO repositório pode ser clonado em qualquer lugar: todos os caminhos são resolvidos a partir
do próprio arquivo. ~/.config/bash_scripts é a sugestão por seguir o padrão
XDG, o mesmo onde git, tmux,
mise e companhia guardam suas configurações.
O instalador é interativo e pode ser executado quantas vezes quiser: o que já está no
lugar é ignorado, e nada que já existe é substituído sem perguntar. Antes de qualquer
substituição é feito um backup (arquivo.backup-AAAAMMDDHHMMSS).
-
Dotfiles: cria links simbólicos nos locais XDG.
Arquivo do repositório Destino Observação dotfiles/gitignore_global~/.config/git/ignorelocal padrão do git dotfiles/rspec~/.config/rspec/optionslocal XDG lido pelo RSpec dotfiles/tmux.conf~/.config/tmux/tmux.confsó se o tmux estiver instalado dotfiles/tmate.conf~/.tmate.confsó se o tmate estiver instalado dotfiles/terminator/config~/.config/terminator/configsó se o terminator estiver instalado Quando o destino já existe, ele pergunta se você quer manter, substituir pelo link ou ver o diff antes de decidir. Também oferece mover para backup os locais antigos (
~/.tmux.conf,~/.rspec,~/.gitignore_global), que deixaram de ser usados ou teriam prioridade sobre os novos. -
Git: em vez de substituir a configuração da máquina, adiciona um
[include]dedotfiles/gitconfigno topo da config global (~/.gitconfigou~/.config/git/config). Por estar no topo, as configurações da própria máquina continuam tendo prioridade. Nome e e-mail ficam fora do repositório; se não estiverem definidos, o instalador pergunta. -
Shell: adiciona ao
~/.bashrce/ou~/.zshrca linha que carregadotfiles/profile. No Omarchy ela fica no fim do~/.bashrc, depois dos padrões do sistema, então seus aliases e funções têm prioridade.
install.sh instalador interativo
dotfiles/
profile ponto de entrada: detecta o shell e carrega o resto
bash_environment variáveis e prompt do bash
zsh_environment variáveis do zsh (rvm, nvm, fzf)
profile_aliases aliases
profile_functions funções
gitconfig aliases e preferências do git (incluído pela config global)
gitignore_global ignores globais do git
rspec opções padrão do RSpec
tmux.conf / tmate.conf configuração do tmux e do tmate
terminator/config configuração do Terminator
oh-my-zsh/themes/ tema chiqui-ruby para o oh-my-zsh
Aliases, funções e variáveis que não devem ir para o repositório podem ficar em
~/.company_profile_environment, ~/.company_profile_functions e
~/.company_profile_aliases. O profile carrega esses arquivos quando eles existem.
| Comando | O que faz |
|---|---|
sgrep <termo> |
busca no projeto ignorando cassettes, fixtures, logs, tmp/, vendor/, node_modules/... |
rbf <termo> |
busca só em arquivos .rb, .erb e .arb |
jsof <termo> |
busca só em arquivos .js |
jsf <termo> |
busca em .js, .json e .jbuilder |
replace <de> <para> |
substitui um texto em todos os arquivos do projeto que o contêm |
| Comando | O que faz |
|---|---|
clear_untracked_branchs |
apaga as branches locais cujo par no origin já foi removido |
update_my_branches |
faz pull em todas as branches locais |
update_repos |
roda clear_untracked_branchs em cada repositório do diretório atual |
update_git_submodules |
atualiza os submódulos a partir do master |
Aliases do git (em dotfiles/gitconfig): br, cm, co, st, pl, ps, plr, df,
dfc, dfw, mg e clsorig (remote update origin --prune).
| Comando | O que faz |
|---|---|
all_tests |
bundle, prepara o banco de testes e roda o RSpec (inclusive engines) |
prepare_database_to_tests |
roda rake db:test:prepare quando a task existe |
clear_logs_and_tmps |
limpa log/ e tmp/ de cada app Rails do diretório atual |
update_bundler |
atualiza RubyGems e Bundler em todas as versões do RVM |
| Comando | O que faz |
|---|---|
fo |
escolhe um arquivo com o fzf e abre no nvim (ou vim) |
hc |
limpa o terminal, inclusive o histórico de rolagem |
ccat <arquivo> |
mostra um arquivo com syntax highlight (bat) |
json_indent |
formata um JSON (arquivo ou string) |
json_view |
formata e colore um JSON |
load_venv |
ativa o venv/ do Python no diretório atual |
start_containers |
inicia os containers Docker de uso comum |
Antes, o repositório ficava obrigatoriamente em ~/bash_scripts, com links em ~/.gitconfig,
~/.rspec, ~/.tmux.conf etc., recriados a cada shell aberto. Para migrar:
- Clone o repositório no novo local e rode o
install.sh. Ele detecta os links antigos e oferece mover cada um para backup, inclusive o~/.gitconfig: como agora ele é específico da máquina, o instalador pergunta seu nome e e-mail. - Remova do
~/.bashrc/~/.zshrca linha antiga que carrega~/bash_scripts/dotfiles/profile(o instalador mostra onde ela está). - Apague o
~/bash_scriptsantigo.