Dicas rápidas Linux

  • Gerar Lorem Ipsum pelo terminal
sudo apt update && sudo apt install libtext-lorem-perl
lorem -w 96  # 96 words
lorem -s 8   # 8 sentences
lorem -p 12  # 12 paragraphs
  • Formatar pendrive
df -h 
# encontre o pendrive a ser formatado
sudo umount /dev/sdXX
sudo mkfs.vfat /dev/sdXX
  • Acessar WiFi que precisa de autenticação pelo browser (Captive Portals)
ip --oneline route get 1.1.1.1 | awk '{print $3}' | xargs google-chrome
  • Ler o output de um processo
less /proc/<pid>/fd/1  #stdout
less /proc/<pid>/fd/2  #stderr
  • Inverter o teclado para os símbolos serem primários e os números secundários (créditos ao Vítor)
xmodmap -pke | sed -nre 's/keycode  (1[0-9]) = ([^ ]*) ([^ ]*)/keycode \1 = \3 \2/p' | xmodmap - 

Dicas rápidas Git

  • Encontrar um commit de uma branch deletada
git reflog --no-abbrev
  • Usar o blame a partir de um determinado commit
git blame COMMIT_HASH^ -- /path/to/file
  • Pesquisar um código que já foi removido
git log -c -S'removed_code' /path/to/file
  • Editar um commit específico 
git rebase -i '50defb6^'
# Alterar pick para edit no commit a ser alterado
# Fazer as alterações desejadas
git commit --all --amend --no-edit
git rebase --continue
git rebase -i
git rebase -i
  • Desfazer o commit mais recente (uncommit)
git reset --soft HEAD^
  • Adicionar alterações ao commit mais recente
 git commit --amend
  • Melhorar o git log
$ git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
$ git lg
git lg, um log melhorado
  • Adicionar ao stage apenas pedaços de um arquivo
git add -p
git add -p
  • Puxar uma branch juntando todos os comitts num só
git pull --squash origin <branch>
  • Reescrever o nome e e-mail do autor no histórico de commits
git filter-branch --env-filter '
	OLD_EMAIL="MY OLD E-MAIL"
	CORRECT_NAME="MY CORRECT NAME"
	CORRECT_EMAIL="MY CORRECT E-MAIL"

	if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
	then
		export GIT_COMMITTER_NAME="$CORRECT_NAME"
		export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
	fi
	if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
	then
		export GIT_AUTHOR_NAME="$CORRECT_NAME"
		export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
	fi' -- origin/HEAD..HEAD

Dicas rápidas MongoDB

  • Como filtrar e atualizar elementos de um array
// Atualiza para 'Python' todas as tags que o atributo 'nome' seja igual 'Phyton'
db.collection.updateMany(
    {},
    {'$set': {'tags.$[tag].nome': 'Python'}},
    {arrayFilters: [{'tag.nome': 'Phyton'}]}
)
  • Como atualizar nomes de campos de todos documentos de uma collection
db.collection.updateMany({}, {$rename: {'campo_antigo': 'campo_novo', 'segundo_campo_antigo': 'segundo_campo_novo'}})
  • Como filtrar pelo tamanho de uma string
db.collection.find({"$expr": {"$lte": [{"$strLenCP": "$FIELD"}, 4]}})
  • Como atualizar um campo de todos documentos com a data atual
 db.collection.updateMany({}, {$set: {FIELD: new Date()}})