All Projects → abantes → bash-for-developers

abantes / bash-for-developers

Licence: other
🎓 Tutorial completo e em português para devs iniciantes de como usar o Bash e o Git.

Projects that are alternatives of or similar to bash-for-developers

samba4-l1
🔴 Curso GRÁTIS SAMBA 4 Level 1 REPOSITÓRIO CONGELADO - Esse repositório não irá mais receber atualizações.
Stars: ✭ 60 (-38.14%)
Mutual labels:  linux-mint, linux-ubuntu
vite-vue3-starter
⭐ A Vite 2.x + Vue 3.x + TypeScript template starter
Stars: ✭ 384 (+295.88%)
Mutual labels:  commitizen, commitlint
fe-standard-config-seed
前端通用代码规范自动化接入
Stars: ✭ 18 (-81.44%)
Mutual labels:  commitizen, commitlint
commitlint-config-cz
⚙️ commitlint sharable configuration, automatically converts/merges your cz-customizable (commitizen) config.
Stars: ✭ 23 (-76.29%)
Mutual labels:  commitizen, commitlint
commitiquette
Plugin for Commitizen that uses commitLint configuration
Stars: ✭ 24 (-75.26%)
Mutual labels:  commitizen, commitlint
nest-boilerplate
Nest.js boilerplate with CircleCI, Commitizen, Commitlint, Docker-Compose, ESLint, GitHub Actions, Husky, Lint-staged, OpenAPI, Prettier, PostGreSQL, Travis CI, TypeORM
Stars: ✭ 16 (-83.51%)
Mutual labels:  commitizen, commitlint
Grub-Themes
Grub themes that will give a customized look to the Grub2 menu during boot.
Stars: ✭ 34 (-64.95%)
Mutual labels:  linux-mint
8821au-20210708
Linux Driver for USB WiFi Adapters that are based on the RTL8811AU and RTL8821AU Chipsets - v5.12.5.2
Stars: ✭ 40 (-58.76%)
Mutual labels:  linux-mint
commit-formatter
A CLI tool to help you write git commit
Stars: ✭ 17 (-82.47%)
Mutual labels:  commitlint
lazyaircrack
Automated tool for WiFi hacking.
Stars: ✭ 301 (+210.31%)
Mutual labels:  linux-shell
zfs-installer
Shell script program that prepares ZFS on a system, and installs Linux
Stars: ✭ 137 (+41.24%)
Mutual labels:  linux-mint
lerna-learning
基于Lerna管理packages的Monorepo项目最佳实践
Stars: ✭ 105 (+8.25%)
Mutual labels:  commitizen
node-backend-template
A template for NodeJS backend projects
Stars: ✭ 19 (-80.41%)
Mutual labels:  commitlint
Linux-admin
Shell scripts to automate download of GitHub traffic statistics, cluster administration, and create an animated GIF.
Stars: ✭ 23 (-76.29%)
Mutual labels:  linux-shell
elint
A easy way to lint your code
Stars: ✭ 38 (-60.82%)
Mutual labels:  commitlint
OSCP-Prep
Contained is all my reference material for my OSCP preparation. Designed to be a one stop shop for code, guides, command syntax, and high level strategy. One simple clone and you have access to some of the most popular tools used for pentesting.
Stars: ✭ 33 (-65.98%)
Mutual labels:  linux-shell
nest-js-boilerplate
Nest.js boilerplate
Stars: ✭ 79 (-18.56%)
Mutual labels:  commitizen
commitlint-plugin-function-rules
Commitlint plugin to define rules as functions.
Stars: ✭ 21 (-78.35%)
Mutual labels:  commitlint
zmidimap
Program for mapping midi signals to shell commands
Stars: ✭ 13 (-86.6%)
Mutual labels:  linux-shell
komit
An interactive prompt for conventional commit messages that doesn't get in your way. Designed to run as a git hook.
Stars: ✭ 29 (-70.1%)
Mutual labels:  commitlint

Bash (Ubuntu)

badge badge badge badge

Roadmap

Básico antes dos comandos

Atalhos globais do Bash

Atalho Ação
Ctrl + Shift + C Copiar.
Ctrl + Shift + V Colar.
Ctrl + C Cancela o comando atual em funcionamento.
Ctrl + Z Pausa o comando atual, retorna com "fg" em primeiro plano Linux ou "bg" em segundo plano.
Ctrl + D Faz o logout da sessão atual (similar ao comando "exit").
Ctrl + W Apaga uma palavra na linha atual.
Ctrl + U Apaga a linha inteira.
Ctrl + R Tecle para Exiber um comando recente.
Ctrl + L Limpa a tela.

Diretórios

Duretório Ação
/ É o diretório raiz, todos os demais diretórios estão abaixo dele.
/bin/ Binários principais dos usuários.
/boot/ Arquivos do sistema de Boot.
/dev/ Arquivos de dispositivos.
/etc/ Arquivos de configuração do sistema.
/home/ Diretório dos usuários comuns do sistema.
/lib/ Bibliotecas essenciais do sistema e os módulos do kernel.
/media/ Diretório de montagem e dispositivos.
/mnt/ Diretório de montagem de dispositivos - mesmo que "media".
/opt/ Instalação de programas não oficiais da distribuição ou por conta do usuário.
/sbin/ Armazena arquivos executáveis que representam comandos administrativos. Exemplo: shutdown
/srv/ Diretório para dados de serviços fornecidos pelo sistema.
/tmp/ Diretório para arquivos temporários.
/usr/ Segunda hierarquia do sistema, onde ficam os usuários comuns do sistema e programas.
/var/ Diretório com arquivos variáveis gerados pelos programas do sistema. Exemplo: logs, spool de impressoras, e-mail e cache.
/root/ Diretório do usuário root - O usuário root tem o total poder sobre o sistema. Podendo instalar, desinstalar e configurar.
/proc/ Diretório virtual controlado pelo Kernel com configuração total do sistema.

Ajuda no terminal

Você pode consultar a documentação e o manual de uso dos comandos das seguintes maneiras:

  • [comando] --help: Documentação do comando.
  • man [comando]: Manual do comando.
  • info [comando]: Semelhante ao man, mas geralmente fornece informações mais detalhadas.

Histórico de comandos

  • !!: Repete o último comando.
  • history: Lista o histórico de 2000 comandos digitados.
  • Seta para cima e seta para baixo: Últimos comandos digitados.

Manipulando arquivos

Listagem de arquivos

ls [opções]: Podemos listar o conteúdo de um diretório utilizando o comando ls.

  • -a: Lista todos os arquivos e diretórios ocultos.
  • -l: Formato longo, mostra permissões, número de links, propietário, grupo, tamanho, data de modificação e nome do arquivo.
  • -h: Lista arquivos e diretórios com informações formatadas (Tem que ser usado com o -l).
  • -R: Lista os arquivos e pastas recursivamente.
  • -p: Mostra uma barra (/) na frente de nomes de diretórios.

Ver exemplo

Entrando e saíndo de diretórios

cd: Podemos entrar e sair de um diretório utilizando o comando cd.

  • cd [destino]: Parte do local corrente até o diretório passado como referência.
  • cd /[destino]: Partindo da raiz até o último diretório passado como referência.
  • cd ..: Volta um diretório.
  • cd /: Vai direto para o diretório raiz.
  • cd ~: Vai direto para o diretório home.
  • cd -: Nos retorna para o último diretório acessado.

Ver exemplo

Exibindo o diretório atual

pwd: Exibe o caminho de diretório atual.

Ver exemplo

Exibindo o tamanho de um diretório

du [diretório]: Exibe o tamanho de um diretório e todos os seus subdiretórios.

Ver exemplo

Criando diretórios

mkdir [nome-do-diretorio]: Podemos criar diretórios utilizando o comando mkdir.

  • mkdir pasta1 pasta2 pasta3: Cria três pastas, pasta1, pasta2 e pasta3.
  • mkdir -p A/B/C: Cria a pasta A, dentro da pasta A cria a pasta B e dentro da pasta B cria a pasta C.

Ver exemplo

Criando arquivos

touch [opções] [arquivo]: Podemos criar arquivos utilizando o comando touch.

  • -a: Altera a hora de acesso do arquivo.
  • -m: Altera a hora de modificação do arquivo.
  • -am: Altera a hora de acesso e modificação do arquivo.
  • -c: Altera a hora de acesso sem criar um novo arquivo.

Observação: podemos gerar nomes automáticos usando as chaves {}, desta maneira: touch exemplo{1..3}.txt, este comando irá criar 3 arquivos chamados exemplo1.txt, exemplo2.txt e exemplo3.txt.

Ver exemplo

Excluíndo diretórios e arquivos

rm [opções] [arquivo]: Podemos excluir arquivos utilizando o comando rm.

  • -f: Exclui arquivos forçadamente.
  • -r: Exclui o diretório e os arquivos na direção recursiva.
  • -d: Remove somente diretórios vazios.
  • -i: Pergunta se queremos remover o arquivo/diretório antes de excluir.

Ver exemplo

Copiando diretórios e arquivos

cp [opções] [arquivo] [destino]: Podemos copiar arquivos utilizando o comando cp.

  • -r: Copia diretórios de forma recursiva.
  • -p: Preserva as permissões originais do arquivo (proprietário, grupo, etc.).
  • -i: Pergunta se desejamos sobrescrever um arquivo destino já existente.
  • -n: Não sobrescreve um arquivo já existente.

Ver exemplo

Movendo e renomeando arquivos e pastas

mv [opções] [arquivo] [destino]: Podemos mover arquivos com o comando mv.

  • -b: Cria um backup de cada arquivo destino existente.
  • -f: Apaga destinos existente sem perguntar ao usuário.
  • -i: Pergunta se desejamos sobrescrever o arquivo destino já existente.
  • -n: Não sobrescrever um arquivo destino já existente.

O comando mv também é usado para renomear arquivos.

  • mv [nome_atual.extenção] [novo_nome.extenção]

Ver exemplo

Visualização de arquivos

more [arquivo]: Mostra o conteúdo de um arquivo em partes.

less [arquivo]: Exibi o conteúdo de um arquivo páginado.

tac [arquivo]: Exibi o conteúdo de um arquivo de trás pra frente (da última linha pra primeira).

cat [opções] [arquivo]: Abre o arquivo em modo de visualização.

  • -n: Mostra a quantidade de linas do arquivo.
  • -v: Exibe caracteres não exibíveis.
  • -T: Exibe tabulação mostradas como ^I.
  • -s: Remove linhas repetidas em branco.
  • -b: Numera as linhas que possuem algum conteúdo.

Busca e manilupalção de conteúdo:

  • cat [arquivo] | grep [busca]: Busca no arquivo (case sensitive).
  • cat [arquivo] | grep [busca] -i: Busca no arquivo (case insensitive).
  • cat [arquivo] > [arquivo]: Copia o conteúdo do arquivo para outro.
  • cat [arquivo] >> [arquivo]: Adiciona o conteúdo do arquivo para outro.

Ver exemplo

Compressão de arquivos

Tar:

  • tar cf pacote.tar [arquivos]: Cria um pacote TAR (nomeado pacote.tar) com os arquivos especificados.
  • tar xf pacote.tar: Extrai os arquivos de "pacote.tar" (substituir a variável pacote.tar pelo nome do arquivo).

GZip:

  • tar czf pacote.tar.gz [arquivos]: Cria um pacote TAR (nomeado pacote.tar.gz) com compressão GZip.
  • tar xzf pacote.tar.gz: Extrai um pacote TAR (nomeado pacote.tar.gz) com compressão GZip.

bz2:

  • tar cjf pacote.tar.bz2 [arquivos]: Cria um pacote TAR (nomeado pacote.tar.bz2) com compressão BZip2.
  • tar xjf pacote.tar.bz2: Extrai um pacote TAR (nomeado pacote.tar.gz) com compressão BZip2.

Gz:

  • gzip arq: Compacta um arquivo e o renomeia para arq.gz (substituir a variável arq pelo nome do arquivo).
  • gzip -d arq.gz: Descompacta arq.gz para um arquivo (substituir a variável arq.gz pelo nome do arquivo).

Ver exemplo

Buscas

Buscando por arquivos

Podemos buscar por arquivos específicos em todo nosso sistema com o comando find.

  • find .: Lista todos os arquivos contidos em um diretório e subdiretórios.
  • find . -name [arquivo]: Busca um arquivo com um nome especifico.
  • find [diretório] -iname [arquivo]: Procura ignorando case sensitive.

Ver exemplo

Referência global

Referências globais são recursos para especificar um ou mais arquivos ou diretórios de uma vez. Vamos usar o comando 'ls' para os exemplos, mas pode ser usado qualquer outro comando.

  • ls /etc/*.conf: Lista todos os arquivos que tem a extenção '.conf'.
  • ls /etc/*x*: Lista todos os aquivos que em algum lugar do nome tem a lera 'x'.
  • ls /etc/f*: Lista todos os aquivos que começa com a letra 'f'.
  • ls /etc/?as*: Lista todos os arquivos que começa com uma letra qualquer, tem segundo caractere 'a', o terceiro 's' e qualquer caractere depois.
  • ls /etc/???a*: Lista todos os arquivos que tem o quarto caractere 'a'.
  • ls /etc/f[a-t]*: Lista todos os aqruivos que começa com a letra 'f', depois a segunda letra varia do 'a' ao 't' e depois qualquer caractere.
  • ls /etc/f[u,o]*: Lista todos os aqruivos que começa com a letra 'f', depois a segunda letra é 'u' ou 'o' e depois qualquer caractere.
  • ls /etc/?[a,e,i,o,u]*: Lista todos os aqruivos que começa com uma letra qualquer, depois a segunda letra é uma vogal e depois qualquer caractere.
  • ls /etc/?[a,e,i,o,u]???: Lista todos os aqruivos que começa com uma letra qualquer, depois a segunda letra é uma vogal e depois tem mais 3 caracteres qualquer.
  • ls /etc/?{am,ul}*: Lista todos os aqruivos que começa com uma letra qualquer, depois a segunda e a terceira letra é 'am' ou 'ul' e depois qualquer caractere.
  • ls /etc/*{ev,ux}: Lista todos os aqruivos que termina com 'ev' ou 'ux'.
  • ls /etc/*.{conf,db}: Lista todos os aqruivos que tem a extenção '.conf' ou '.db'.

Sistema

Processos

  • top: Exibe os processos usando a maioria dos recursos do sistema, a qualquer momento. "Q" pode ser usado para sair.

  • htop: O comando HTOP é uma evolução do comando TOP. As informações são semelhantes às produzidas pelo comando TOP, mas apresentadas num interface mais intuitivo e colorido.

  • kill pid: Mata o processo com o id de processo pid.

  • killall Discord: Mata todos os processo com o nome discord.

  • pkill fire: Mata todos os processo que tenha "fire" em seu nome.

ps [opções]: O comando ps exibe informações sobre os processos que estão executando na máquina.

  • -a: Mostra os processos de todos os usuários.
  • -A ou -e: Mostra todos os processos.
  • -f: Mostra a árvore de execução de comandos.
  • -g [grupo]: Mostra os processos de um determinado grupo.
  • -x: Mostra os processos que não foram iniciados no console.
  • -u: Fornece o nome do usuário e a hora de início do processo.
  • -aux: exibe todos os processos do sistema independente de terminal.

Ver exemplo

Informações do sistema

  • whereis [programa]: Exibe possíveis localizações de um determinado programa.
  • date: Exibe a data e hora atual.
  • whoami: Imprime o nome de usuário usado no momento em que foi digitado.
  • sudo su: Entra no modo usuário root.
  • exit: Sai do usuário logado no momento que o comando é executado.

uname [opções]: Mostra informações sobre o sistema operacional.

  • -a: imprime todas as informações, omitindo uname -p e uname -i se as informações forem desconhecidas.
  • -s: Imprime o nome do kernel.
  • -n: Imprime o nome do host do nó da rede.
  • -r: Imprime a versão do kernel.
  • -v: Imprime a versão do kernel.
  • -m: Imprime o nome do hardware da máquina.
  • -p: Imprime o tipo de processador ou " desconhecido ".
  • -i: Imprime a plataforma de hardware, ou " desconhecido ".
  • -o: Imprime o sistema operacional.
  • --version: Exibe informações da versão.

Ver exemplo

Memória

  • free: Este comando exibe a quantidade de espaço livre disponível no sistema.

df [opções]: Exibe informações sobre o uso do espaço em disco de todos os sistemas de arquivos montados.

  • -a: Inclui sistema de arquivos com 0 (zero) blocos.
  • -h: Mostra o espaço livre/ocupado em MB, KB, GB em vez de bloco.
  • -k: Lista em Kbyts.
  • -l: Somente lista sistema de arquivos locais.
  • -m: Lista em Mbytes.
  • -T: Lista o tipo de sistema de arquivos de cada partição.

Ver exemplo

Programas e atualizações

  • sudo apt-get update: Baixa os pacotes disponíveis.
  • sudo apt-get upgrade: Atualiza os pacotes do sistema.
  • sudo apt-get clean: Remove cache de programas.
  • sudo apt-get cache [busca]: Busca um programa.
  • sudo apt-get install [programa]: Instala um programa.
  • sudo apt-get remove [pacote] --purge: Remove programas e configs.

Observação: Se você estiver logado como usuário root, não é necessário o uso do 'sudo' na frente dos comandos.

Usuários

Trocando senha de usuários

passwd [opções] [usuário]: O passwd é um comando utilizado para configurar ou trocar a senha das contas dos usuários do sistema. É necessário possuir privilégios administrativos para executá-lo, mas um usuário comum consegue alterar sua própria senha.

  • -l: Trava a senha do usuário, ficando impedido de se logar e não pode trocar a senha (não é desabilitado).
  • -u: Destrava a senha do usuário.
  • -d: Exclui a senha do usuário.
  • -e: Expira a senha do usuário, forçando-o a fornecer uma nova ao logar-se novamente.
  • -x dias: Expira a senha do usuário quando atingir o número de dias especificados.
  • -n dias: Define a quantidade mínima de dias que o usuário deverá esperar para trocar a senha.
  • -w dias: define a quantidade mínima de dias que o usuário receberá o aviso que a senha precisa ser alterada.
  • -i: Deixa o usuário inativo, caso a senha tenha expirado.
  • -S: Exibe o status da conta.
  • -a: Usada em conjunto com a opção -S mostra o status das contas de todos os usuários.

Adicionar usuários

Criar um usuário novo no Linux é bem simples, apenas é necessário o comando useradd e indicar o nome do novo usuário.

useradd [opções] [nomeusuario]: Cria um novo usuário.

  • -d: Define o nome do diretório home do usuário (mas não o cria).
  • -s: Define o shell padrão do usuário.
  • -h: Exibe as opções do comando.

Alterar usuários

Para alterarmos uma conta de usuário basta apenas utilizarmos o comando usermod.

usermod [opções] [nomeusuário]: Altera um usário.

  • -d diretório [-m]: Cria uma nova home para o usuário. A opção -m move os arquivos da home atual do usuário para a nova.
  • -e yyyy-mm-dd: Altera a data de expiração da conta do usuário.
  • -g grupo: Altera o GID do grupo do usuário para o especificado.
  • -G grupo[, grupo2, ...]: Define o GID dos outros grupos que o usuário pertence.
  • -l nome: Altera o nome do usuário (ele não pode estar logado).
  • -s shell: Altera o shell do usuário.
  • -u uid: Altera o número de UID do usuário.

Remover usuários

Para removermos um usuário utilizamos o comando userdel.

userdel [opções] [nomeusuario]: Remove um usuário.

  • userdel -h [nomeusuario]: Exibe as opções do comando.
  • userdel -r [nomeusuario]: Deleta a home e todos os seus arquivos.

Calculadora

  • bc: Abre uma calculadora do Bash

Observação: Para sair bastas digitar 'quit' e apertar enter ou 'Ctrl+d'.

Ver exemplo

Git

Configurando o git

  1. Instalção: https://git-scm.com/downloads
  2. Documentação: https://git-scm.com/docs

Antes de começar a usar o Git é importante que você tenha ele configurado corretamente em sua máquina:

  • git config --global user.name "Fulano de Tal": Nome, coloque o mesmo nome do github;
  • git config --global user.email [email protected]: Email, coloque o mesmo email do github;
  • git config --global core.editor vim: Editor, aqui você pode escolher o editor padrão do git;
  • git config --list: Use para ver o resultado das suas confirugarções.

Comandos

Básico

  • git init: Cria um repositório git vazio.

  • git status: Informa o estado das alterações do nosso projeto.

  • git add [arquivo]: Adiciona novos arquivos ou atualiza mudanças para irem para o nosso repositório.

    • git add .: Você pode adicionar todos os arquivo usando o "." (ponto).
  • git commit -m "message": Registra alterações no repositório.

    • git commit --amend -m "New message": Troca a mensagem feita no último commit.
  • git log: Mostra os pontos na "linha do tempo" do repositório (commits).

    • git log --oneline: Mostra os pontos da "linha do tempo" de forma resumida.
    • git log --abbrev-commit: Mostra o hash dos commits com 7 caracteres.
    • git log --graph: Desenha uma representação gráfica dos commits no lado esquerdo da saída do terminal.
    • git log --grep="palavra": Busca por commits que tenha uma palavra ou parte de uma especificada.
  • git diff: Mostra o que foi alterado em um arquivo, de vermelho o que foi excluído, de verde o que foi adicionando. Use-o antes do git add.

  • git show: Apresenta o último ponto na "história" do nosso projeto.

    • git show [hash]: Apresenta determinado ponto na "história" do nosso projeto.
  • git remote: Verifica se existe um repositório remoto.

  • git push: Envia alterações locais para o repositório remoto.

  • git clone [link-do-repositório]: Clona um repositório (Github por exemplo).

  • git pull: Puxa as alterações feitas no repositório remoto (Github por exemplo).

Avançado

  • git reset [arquivo]: Remove um arquivo adicionado com o git add, use antes do git commit.

    • git reset --hard [hash]: Reverte um commit. Vai para um determinado ponto da "história" do projeto.
  • git branch: Lista ramificações do nosso repositório.

    • git branch -d [ramificação]: Exclui uma ramificação do nosso repositório.
  • git checkout [hash]: Restaura arquivos da árvore de trabalho.

    • git checkout -b [minha-ramificação]: Cria uma nova ramificação no nosso projeto.
    • git checkout [minha-ramificação]: Vai para a ramificação criada pelo desenvolvedor.
  • git merge [branch]: Faz a fusão de uma branch X com uma branch Y.

  • git mv [arquivo] [diretório]: Move um arquivo para um diretório especificado.

  • git mv [nome-original] [novo-nome]: Renomea um arquivo.

  • git rm -f [file]: Exclúi um arquivo do nosso repositório forçadamente.

  • git clean -f: Remove arquivos não rastreados forçadamente.

Criando boas mensagens de commits

Cada mensagem tem um formato pré-definido, que inclui um tipo e um título:

git commit -m "[type]: [message]"

Evite escrever mensagens do commit com mais de 100 caracteres, assim fica mais fácil para ler no GitHub, Gitlab e outras ferramentas.

Tipos:

  • build: Alterações que afetam o sistema de build ou dependências externas.
  • static: Alterações no conteúdo de arquivos estáticos (dados .json, imagens, etc).
  • ci: Alterações em nossos arquivos e scripts de configuração de CI.
  • cd: Alterações em nossos arquivos e scripts de configuração para CD.
  • docs: Somente alterações na documentação.
  • feat: Um novo recurso.
  • fix: Uma correção de bug da aplicação.
  • perf: Uma alteração de código que melhora o desempenho.
  • refactor: Uma alteração de código que não corrige um bug nem adiciona um recurso.
  • improve: Alguma alteração de código que melhore o comportamento de um recurso.
  • style: Alterações que não afetam o significado do código (espaço em branco, formatação, ponto e vírgula, etc).
  • test: Adicionando testes ausentes ou corrigindo testes existentes.
  • revert: Reverter para um commit anterior.

Título:

O título contém uma descrição sucinta da mudança:

  • Use o imperativo, tempo presente: "mudança" não "mudou" nem "muda".
  • Não capitalize a primeira letra.
  • Sem ponto (.) no final.
git commit -m "fix: fix typo in introduction to user guide"

Alias

Você pode criar alias para os comandos do git, basta ir no arquivo ".gitconfig" e definir seus alias. No Linux o arquivo ".gitconfig" fica localizado em: /home/seuusuário/.gitconfig

[alias]
  cl = clone
  it = init
  ad = add
  bn = branch
  ci = commit -m
  co = checkout
  cm = checkout master
  cb = checkout -b
  st = status -sb
  sf = show --name-only
  pom = push origin master -u
  ps = push
  lg = log --pretty=format:'%Cred%h%Creset %C(bold)%cr%Creset %Cgreen<%an>%Creset %s' --max-count=30
  incoming = !(git fetch --quiet && git log --pretty=format:'%C(yellow)%h %C(white)- %C(red)%an %C(white)- %C(cyan)%d%Creset %s %C(white)- %ar%Creset' ..@{u})
  outgoing = !(git fetch --quiet && git log --pretty=format:'%C(yellow)%h %C(white)- %C(red)%an %C(white)- %C(cyan)%d%Creset %s %C(white)- %ar%Creset' @{u}..)
  unstage = reset HEAD --
  undo = checkout --
  rollback = reset --soft HEAD~1

Vim

Eu escolhi usar o editor vim, mas você pode usar outros editores além do vim como o nano por exemplo.

O vim (VI Improvement) é uma melhoria do antigo editor de texto vi. Este por sua vez é uma melhoria do editor de texto orientado a linha chamado ed. Existe também uma versão do vim para ambiente X chamada gvim.

O vim possui três formas de trabalho: modo de linha, modo de edição e modo de comandos. A mudança de um modo para outro modo é feita através do uso da tecla Esc.

Após o arquivo ser aberto pelo vim, o modo de comando é ativado. No modo de comando, as teclas digitadas pelo usuário são interpretadas pelo vim como ações a serem executadas dentro do arquivo aberto. No modo de edição, as teclas digitadas pelo usuário são ecoadas na tela. Para entrar neste modo, pode-se digitar, por exemplo, "a" (adicionar), "i" (incluir), etc. No modo de linha, o usuário define ações a serem executadas no arquivo como um todo (por exemplo, salvar, substituir caracteres, sair do aplicativo, etc). Para entrar neste modo, deve-se digitar Esc.

  • vim [opções] [arquivo]

São alguns dos comandos do vim no modo de comandos:

  • 0: Mover o cursor para o início da linha em que o cursor está posicionado.
  • a: Inserir texto após a posição atual do cursor.
  • A: Inserir texto no final da linha atual.
  • -b: Permite editar arquivo binário.
  • dd: Deletar linha atual.
  • [n]+dd: Deletar n linhas a partir da linha atual.
  • G: Ir para o fim do arquivo.
  • [n]+G: Ir para a n-ésima linha do arquivo.
  • h: Voltar um caractere.
  • H: Ir para a primeira linha exibida na tela atual.
  • i: Inserir texto a partir da posição atual do cursor.
  • I: Inserir texto no início da linha atual.
  • j: Descer uma linha.
  • J: Juntar a linha atual com a linha seguinte.
  • [n]+J: Juntar n linhas consecutivas a partir da linha atual.
  • k: Subir uma linha.
  • l: Avançar um caractere.
  • L: Ir para a última linha exibida na tela atual.
  • n: Procurar, a partir da posição atual do cursor, a próxima ocorrência do texto definido no último comando /.
  • N: Procurar, a partir da posição atual do cursor e indo em direção ao início do arquivo, a próxima ocorrência do texto definido no último comando /.
  • o: Inserir uma linha em branco após a linha atual.
  • O: Inserir uma linha em branco acima da linha atual.
  • p: Inserir linhas copiadas após a linha atual.
  • P: Inserir linhas copiadas antes da linha atual.
  • r: Substituir o caractere atual.
  • R: Substituir um conjunto de caracteres.
  • s: Deletar o caractere atual e inserir texto.
  • S: Apagar linha e inserir novo texto na linha.
  • u: Desfazer a última alteração feita no texto e ainda não desfeita.
  • U: Desfazer a última alteração feita no texto.
  • x: Apagar caractere onde o cursor está posicionado.
  • $: Mover o cursor para o fim da linha em que o cursor está posicionado.
  • [n]+y: Copiar n linhas a partir da linha atual.
  • yy: Copiar a linha atual.
  • [n]+Y: Copiar n linhas a partir da linha atual.
  • YY: Copiar a linha atual.
  • CTRL+B: Voltar uma página.
  • CTRL+F: Avançar uma página.
  • F1: Exibir tela de ajuda.
  • [n]+ENTER: Ir para n linhas abaixo da linha atual.
  • [n]+.: Repetir o último comando que alterou o texto n vezes a partir da posição atual do cursor.
  • [n]+~+ENTER: Inverter a caixa (case) dos n caracteres seguintes ao cursor.
  • /texto: Procurar pela primeira ocorrência do texto especificado a partir da posição atual do cursor.

São alguns dos comandos do vim no modo de linha:

  • :r arquivo: Incluir arquivo a partir da linha atual do cursor.
  • :q+ENTER: Sair da tela de ajuda.
  • :q!: Sair do vim sem salvar as alterações.
  • :w arquivo: Salvar arquivo com o nome especificado.
  • :wq!: Sair do vim salvando as alterações.
  • :X: Criptografa o arquivo.
  • :n: Ir para a linha "n". Exemplo: Para ir para linha 10 do arquivo, :10

Busca:

  • /palavra: Procura por "palavra" do início para o fim.
  • ?palavra: Procura por "palavra" do fim para o início.
  • /Mari[oa]: Procura por "Mario" ou "Maria".
  • /\< pal: Procura por expressões que começem com "pala" como, "palavra" ou "palíndromo".
  • /ismo\>: Procura por expressões que terminem com "ismo" como, "autismo".
  • /\< para\>: Procura pela palavra "para".
  • /\<...\>: Procura por todas as palavras com 3 letras.
  • /maria\|joao: Procura por maria ou joao.
  • /\<\d\d\d\d\>: Procura exatamente por 4 dígitos numéricos.
  • /^\n\{3}: Procura por três linhas em branco.
  • :bufdo /palavra/: Procura "palavra" em todos os arquivos abertos.

Substituição:

  • :%s/antigo/novo/g: Substitui todas as ocorrências de "antigo" por "novo" no arquivo.
  • :%s/antigo/novo/gw: Substitui todas as ocorrências com confirmação.
  • :2,35s/antigo/novo/g: Substitui todas as ocorrências entre as linhas 2 e 35.
  • :5,$s/antigo/novo/g: Substitui todas as ocorrências da linha 5 até EOF (fim da linha).
  • :%s/^/legal/g: Substitui o começo de cada linha com "legal".
  • :%s/$/Oh/g: Substitui o fim de cada linha por "Oh".
  • :%s/antigo/novo/gi: Substitui "antigo" por "novo" desconsiderando maíusculas e/ou minúsculas.
  • :%s/ *$//g: Apaga todos os espaços em branco.
  • :g/palavra/d: Apaga todas as linhas contendo "palavra".
  • :v/palavra/d: Apaga todas as linhas que não contém "palavra".
  • :s/maria/joao/: Substitui a primeira ocorrência de "maria" por "joao" na linha corrente.
  • :s/maria/joao/g: Substitui todas as ocorrências de "maria" por "joao" na linha corrente.
  • :%s/maria/joao/g: Substitui "maria" por "joao" em todo o arquivo.
  • :%s/\r//g: Apaga retornos de carro do windows (\n).
  • :%s/\r/\r/g: Transforma os retornos de carro do windows (\n) em retornos do Linux (\r).
  • :%s#<[^>]\+>##g: Apaga tags HTML mas mantêm o texto.
  • :%s/^\(.*\)\n\1$/\1/: Apaga linhas repetidas.
  • Ctrl+a: Incrementa o número sob o cursor.
  • Ctrl+x: Decrementa o número sob o cursor.
  • ggVGg?: Muda o texto usando Rot13.

Minúsculo / Maiúsculo:

  • Vu: Torna todos os caracteres da linha minúsculos.
  • VU: Torna todos os caracteres da linha maiúsculos.
  • g~~: Inverte os caracteres do texto inteiro.
  • vEU: Coloca as letras da palavra em maiúsculas.
  • vE~~: Inverte os caracteres da palavra selecionada.
  • ggguG: Coloca todo o texto em minúsculas.
  • :set ignorecase: Ignora minúsculos/maiúsculos nas buscas.
  • :set smartcase: Ignora minúsculos/maiúsculos em buscas exceto quando uma letra msiúscula é usada.
  • :%s/\<./\u&/g: Coloca a primeira letra de cada palavra em maiúscula.
  • :%s/\<./\l&/g: Coloca a primeira letra de cada palavra em minúscula.
  • :%s/.*/\u&: Coloca a primeira letra de cada linha em maiúscula.
  • :%s/.*/\l&: Coloca a primeira letra de cada linha em minúscula.

Lendo/Gravando arquivos:

  • :1,10 w arquivo: Salva as linhas de 1 a 10 em "arquivo".
  • :1,10 w >> arquivo: Adiciona as linhas de 1 a 10 em "Arquivo".
  • :r arquivo: Insere o conteúdo de "arquivo" no atual.
  • :23r arquivo: Insere o conteúdo de "arquivo" a partir da linha 23.

Explorando arquivos:

  • :e .: Abre o gerenciador de arquivos integrado do Vim.
  • :Sex: Divide a janela e abre o gerenciador de arquivos integrado.
  • :browse e: Abre o gerenciador de arquivos integrado na janela corrente.
  • :ls: Lista os buffers carregados.
  • :cd ..: Move para a pasta superior.
  • :args: Lista os arquivos.
  • :args *.php: Abre lista de arquivos.
  • :grep expressao *.php: retorna uma lista de arquivos .php que contenham a expressão informada.
  • gf: Abre o arquivo sob o cursor.

Interação com o Linux:

  • :!pwd: Executa o comando "pwd" e retorna para o Vim.
  • !!pwd: Executa o comando "pwd" e insere a saída no buffer.
  • :sh: Retorna temporariamente para o shell.
  • exit: Retorna para o Vim.

Alinhamento:

  • :%!fmt: Alinha todas as linhas.
  • !}fmt: Alinha todas as linhas a partir da posição corrente.
  • 5!!fmt: Alinha as próximas 5 linhas.

Abas:

  • :tabnew: Cria uma nova aba.
  • gt: Mostra a próxima aba.
  • :tabfirst: Mostra a primeira aba.
  • :tablast: Mostra a última aba.
  • :tabm n(posicao): Reorganiza as abas.
  • :tabdo %s/foo/bar/g: Executa um comando em todas as abas.
  • :tab ball: Coloca todos os arquivos abertos em abas.

Divisão da janela do Vim:

  • :e arquivo: Edita "arquivo" na janela corrente.
  • :split arquivo: Divide a janela e abre "arquivo".
  • ctrl-w "seta para cima": Coloca o cursor na janela do topo.
  • ctrl-w ctrl-w: Coloca o cursor na próxima janela.
  • ctrl-w_: Maximiza a janela corrente.
  • ctrl-w=: Coloca todas as janelas com o mesmo tamanho.
  • 10 ctrl-w+: Adiciona 10 linhas de tamanho na janela corrente.
  • :vsplit arquivo: Divide a janela verticalmente.
  • :sview arquivo: O mesmo que split, mas em modo somente-leitura.
  • :hide: Fecha a janela corrente.
  • :only: Fecha todas as janelas, exceto a janela atual.
  • :b 2: Abre #2 na janela corrente.

Auto-completion do texto:

  • Ctrl+n Ctrl+p (em modo de inserção): Completa palavra.
  • Ctrl+x Ctrl+l: Completa linha.
  • :set dictionary=dict: Define dict como o dicionário atual.
  • Ctrl+x Ctrl+k: Completa usando o dicionário.

Marcações:

  • mk: Marca a posição corrente como k.
  • ‘k: Move o cursor para a marca k.
  • d’k: Apaga tudo até a marca k.

Abreviações:

Identação de Texto:

  • :set autoindent: Liga a identação automática.
  • :set smartindent: Liga a identação inteligente.
  • :set shiftwidth=4: Define o tamanho da identação em 4 espaços.
  • ctrl-t, ctrl-d: Identa/Deidenta no modo de inserção.
  • >>: Identa.
  • <<: Deidenta.

Marcação de sintaxe:

  • :syntax on: Liga a marcação de sintaxe.
  • :syntax off: Desliga a marcação de sintaxe.
  • :set syntax=perl: Força a usar a marcação de sintaxe do perl.

Referências

confira os link's abaixos para saber mais:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].