Autor Tópico: .bashrc - Alias / Funçòes/ Export / Dicas para o uso dia a dia  (Lida 5244 vezes)

Offline swatquest

  • Usuário Ubuntu
  • *
  • Mensagens: 160
    • Ver perfil
.bashrc - Alias / Funçòes/ Export / Dicas para o uso dia a dia
« Online: 15 de Janeiro de 2017, 23:36 »
Não recomendo para quem quer aprender comandos
Oi pessoal.
 Criei este tópico para facilitar e melhorar o uso do sistema no dia a dia.
  Lógico que para dar certo será necessário da ajuda de todos. Se você sabe algum comando e quer compartilhar com a gente, por favor, sinta-se à vontade para adicionar neste tópico.
  Aqui será como uma coletânia de comandos com alias ou funções para facilitar o uso do sistema Linux.

  Serve tanto para iniciantes como para experientes.

  Copiar para o arquivo ~/.bashrc

  Aqui já vou colocar e explicar alguns comandos, e depois adiciono mais o que eu for lembrando.
  Este tópico também foi inciado em  https://forum.archlinux-br.org/viewtopic.php?id=4650
 
   Obs: Caso esqueça algum nome de alias é só executar  o comando alias

Para ver nomes de alias e funções
Código: [Selecionar]
# Ver alias e function do bashrc
alias verbashrc='alias; echo -e "\n    [          Funções          ]\n"; grep -v alias ~/.bashrc | grep -i "[a-zA-Z]()" |  sort | cut -d"(" -f1 '

Caso queira que mostre a funçao completa
Código: [Selecionar]
alias verbashrc='alias; grep -v alias ~/.bashrc | grep -i -A 30 "()"' 
Atualiza e edita o bashrc na sessão iniciada sem precisar reiniciar o terminal.
Código: [Selecionar]
# Atualiza na sessão aberta as configurações no arquivo .bashrc
alias upbashrc="source ~/.bashrc"
# Abre o arquivo rc e depois atualiza na sessão
alias bashrc='$EDITOR ~/.bashrc ; source ~/.bashrc'


 Alias e funções

 Alguns comandos é aconselhável colocar uma interatividade, por exemplo, o comando rm, pois você pode apagar o arquivo errado.

Código: [Selecionar]
# Interativo
alias rm='rm -i'
alias ln='ln -i'

Comandos como mover e cp é legal ter um explicativo e interativo.

Código: [Selecionar]
# Comando que é interativo e explica o que está sendo feito
alias mv='mv -vi'
alias cp='cp -vi'

Você digita o inicio e depois com a teclas de subir e descer do teclado ele irá procurar no histórico as conclusões.
~/.bashrc
Código: [Selecionar]
bind '"\e[A": history-search-backward'
 bind '"\e[B": history-search-forward'

ou afete todos os progranmas radline:
~/.inputrc

Código: [Selecionar]
"\e[A": history-search-backward
"\e[B": history-search-forward


Para o comando df emitir tamanhos na potência de 1000 (p.ex.: 1.1G) ( mais próximo dos gerenciadores de arquivos)
Código: [Selecionar]
## comando df ##
alias df='df -H'

Para o histórico
Código: [Selecionar]
# Procura por comando no registro history
alias hs='history | grep $1'

Manuais
Código: [Selecionar]
# Explicação de manuais
explain () {
if [ "$#" -eq 0 ]; then
while read  -p "Command: " cmd; do
curl -Gs "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$cmd"
done
echo "Bye!"
elif [ "$#" -eq 1 ]; then
curl -Gs "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$1"
else
echo "Usage"
echo "explain                  interactive mode."
echo "explain 'cmd -o | ...'   one quoted command to explain it."
fi
}


Ordenar a pasta e arquivos ou até as subpastas por tamanho.
Normalmente  pelo gerenciador de arquivos ele só ordena os arquivos e não as pastas.
Código: [Selecionar]
# Ordenar por tamanho
tamanho() {
if [ -z $1 ]; then
  du --si -d 1 -a | sort -hr | tail -n +2
elif [ $1 -eq $1 2> /dev/null ]; then
  du --si -d $1 -a | sort -hr | tail -n +2
else
 echo "Use número, por exemplo, tamanho 2"
fi
}

Uso:
tamanho
tamanho 2
tamanho 10

O número seria referente as subpastas.

Remover espaço em branco no início do nome
Código: [Selecionar]
# Remover espaço em branco no início do nome
rembranco(){
 for b in "$@"; do
  nome=$(echo "$b"|sed "s/^ //")
   if [ "$b" != "$nome" ]; then
      mv -v "$b" "$nome"
   fi
 done
}

Uso:
rembranco *
rembranco arquivo


Alguns alias interessantes
Código: [Selecionar]
# Listar arquivos de hoje
alias lshoje='ls -al --time-style=+%D | grep `date +%D`'

# Mostrar permissão
alias permissão='stat -c "(%F)- %n %a %A" "$@"'

# Mostrar portas abertas/ativas tcp e udp
alias portas='netstat -tulanp'

# Passar opções para free ##
alias meminfo='free -m -l -t -h'

# Top processos comendo memória
alias psmem='ps auxf | sort -nr -k 4'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'

# Top processos comendo cpu
alias pscpu='ps auxf | sort -nr -k 3'
alias pscpu10='ps auxf | sort -nr -k 3 | head -10'

# Obter informações da CPU do servidor
alias cpuinfo='lscpu'

# Temperatura da cpu
alias cputemp='sensors | grep Core'

# Mostrar as montagens por coluna
alias cmount="mount | column -t"


Pegar o pid do processo
Código: [Selecionar]
# Pegar o pid do processo
pid (){
  ps aux | grep -i "$1" | grep -v grep | awk '{print $2}'
}

Uso:
pid firefox

Lista somente usuário e não de serviços
Código: [Selecionar]
# lista usuários
alias usuários="awk -F : '$3 >= 1000 { print $1}' /etc/passwd "  # apenas usuários do sistema e não de serviços sem o root
alias usuários="awk -F : '$3 < 1 || $3 >= 1000 { print $1}' /etc/passwd " # apenas usuários do sistema e não de serviços com o usuário root

Lista todos  os usuários
Código: [Selecionar]
# lista usuários e grupos
alias usuários='cut -d \: -f1 /etc/passwd'

Ou use a função para lista usuários (samba,serviços e criados)
Código: [Selecionar]
# Lista usuários
usuarios(){
[[ "$1" == "r" && "$#" -lt 2 ]] && awk -F : '$3 < 1 || $3 >= 1000 { print $1}' /etc/passwd;
[[ "$1" == "c" && "$#" -lt 2 ]] && awk -F : '$3 >= 1000 { print $1}' /etc/passwd;
[[ "$1" == "s" && "$#" -lt 2 ]] && awk -F : '$3 > 0 && $3 < 1000 { print $1}' /etc/passwd;
[[ "$1" == "S" && "$#" -lt 2 ]] && sudo pdbedit -L  | cut -d \: -f1;
if [[ "$#" -eq 0 ]]; then
  cut -d \: -f1 /etc/passwd;
elif [[ "$#" -gt 1 || "$1" != "c" && "$1" != "r" && "$1" != "s" && "$1" != "S" ]]; then
cat << USOAJUDA
$@ não é uma opção válida.

ajuda: usuario [opções]
  r     : Mostra com o usuário root
  c     : Mostra usuários criados sem o serviços
  s : Mostra usuários de serviços
  S : Mostra usuários do samba

Exemplo:
usuarios r
usuarios
USOAJUDA
fi
}

Lista todos os grupos
Código: [Selecionar]
alias grupos='cut -d: -f1 /etc/group'
 Informações de usuários
Código: [Selecionar]
# Informações de usuários
infouser(){
vuser=`grep -c "^$1:" /etc/passwd`
tuser=`grep "^$1:" /etc/passwd| cut -d':' -f3`
if [[ $vuser -gt 0 ]]; then
 if [[ $# == 1 ]]  ; then
  usu=$1
  echo -e "\e[1m Usuário: \e[0m $usu"
  echo -e "\e[1m Diretório:\e[0m" `grep  $usu /etc/passwd | cut -d: -f6`
  echo -e "\e[1m Shell:\e[0m " `grep  $usu /etc/passwd | cut -d: -f7`
  echo -ne "\e[1m Tipo:\e[0m "
     if [[ $tuser -ge 1000 ]]; then
        echo "usuário comun"
     elif [[ $tuser -eq 0 ]]; then
        echo  "super usuário"
     else
        echo "usuário de serviço"
     fi
  echo -e "\e[1m \n Lista os grupos que o $usu pertence \e[0m"
  groups $usu
  echo -e "\e[1m \n Lista os privilégios do usuário $usu \e[0m"
  sudo -lU $usu
  echo -e "\e[1m \n Sistem em atividade \e[0m"
  echo -e "Tempo de atividade do sistema:" `uptime -p | sed 's/^up //g'`
  echo -e "$usu iniciou em:" `last -n1 $usu | awk '{print $3" "$4" "$5" "$6}' | head -n1`
  echo -e "$usu está no:" `last -n1 $usu | awk '{print $2}' | head -n1`
 fi
else
 [[ $# -gt 0 ]] && echo "O usuário $@ não existe" || echo "O usuário não foi informado";
 echo "USO: infouser [usuário]"
fi


Sobre obter o ip público
Código: [Selecionar]
# Pegue seu atual ip público e host
alias ipublic='curl icanhazip.com && curl icanhazptr.com'

mais informações aqui
https://major.io/icanhazip-com-faq/

Colorir páginas de manuais
Código: [Selecionar]
# Colorir páginas de manuais
export LESS_TERMCAP_mb=$(printf '\e[01;31m') # Entrar no modo intermitente - vermelho
export LESS_TERMCAP_md=$(printf '\e[01;35m') # Entrar no modo de duplo brilho - negrito, magenta
export LESS_TERMCAP_me=$(printf '\e[0m') # Desativar todos os modos de aparência (mb, md, so, us)
export LESS_TERMCAP_se=$(printf '\e[0m') # Deixar o modo standout
export LESS_TERMCAP_so=$(printf '\e[01;33m') # Entrar no modo standout - amarelo
export LESS_TERMCAP_ue=$(printf '\e[0m') # Deixar o modo sublinhado
export LESS_TERMCAP_us=$(printf '\e[04;36m') # Entrar no modo sublinhado - ciano

Cria e entra no diretório
Código: [Selecionar]
# Cria e entra no diretório
mkcd() {
 mkdir -p "$1"; cd "$1";
}

 Entra e lista diretório
Código: [Selecionar]
# Entra e lista diretório
cdls() {
 cd "$1"; ls;
}

Citação de: niquelnausea
deletar diretórios vazios
Código: [Selecionar]
deletarpastasvazias() {
        read -p "Delete all empty folders recursively [y/N]: " OPT
        [[ $OPT == y ]] && find . -type d -empty -exec rm -fr {} \; &> /dev/null
}


listar diretórios apos o comando cd
Código: [Selecionar]
function cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }


10 comando mais usados
Código: [Selecionar]
maisusados() { history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head; }


subir diretório (se não especificar quantos, sobe um nível)
Código: [Selecionar]
subir() {
      local d=""
      limit=$1
      for ((i=1 ; i <= limit ; i++)); do
        d=$d/..
      done
      d=$(echo $d | sed 's/^\///')
      if [[ -z "$d" ]]; then
        d=..
      fi
      cd $d
    }

Função parecida com a qual o niquelnausea enviou, mas com algumas opções a mais.
Comando do histórico mais usado com numeração e porcentagem
Código: [Selecionar]
maisusados(){
  history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10
}

Para o comando ping
Código: [Selecionar]
# Parar depois de enviar a contagem de pacotes ECHO_REQUEST
alias ping='ping -c 5'
# Não esparar o intervalo de 1 segundo, vá rápido
alias fastping='ping -c 100 -s.2'

Iptables - Firewall
Código: [Selecionar]
# Mostrar todas as regras iptables
alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers'
alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers'
alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers'
alias iptlistfw='sudo /sbin/iptables -L FORWARD -n -v --line-numbers'
alias firewall=iptlist
« Última modificação: 18 de Janeiro de 2017, 15:49 por swatquest »

Offline swatquest

  • Usuário Ubuntu
  • *
  • Mensagens: 160
    • Ver perfil
Re:.bashrc - Alias / Funçòes/ Export / Dicas para o uso dia a dia
« Resposta #1 Online: 18 de Janeiro de 2017, 15:49 »
consertada a função tamanho

Offline overlock_br

  • Usuário Ubuntu
  • *
  • Mensagens: 74
    • Ver perfil
Re:.bashrc - Alias / Funçòes/ Export / Dicas para o uso dia a dia
« Resposta #2 Online: 18 de Janeiro de 2017, 17:50 »
Muito bom,pra iniciantes da pra fazer tudo isso via modo gráfico em qualquer distro,qual o intuito do tópico?
| Linux User # 480186 | Debian Wheezy | Kernel 3.2.4 rt & pf2 |

Offline swatquest

  • Usuário Ubuntu
  • *
  • Mensagens: 160
    • Ver perfil
Re:.bashrc - Alias / Funçòes/ Export / Dicas para o uso dia a dia
« Resposta #3 Online: 18 de Janeiro de 2017, 22:35 »
A ideia é facilitar o processo em modo de comando.

Dá para fazer em modo gráfico algumas coisas, mas pode ser mais lento e muitas vezes mais trabalhoso.

Por exempo:

A função tamanho ordena tanto pastas quanto arquivos pelo tamanho.
Isso não pode ser feito em alguns gerenciadoes de arquivos. No gerenciador normalmente as pastas são ordenadas alfabeticamente, e só os arquivos são classificados pelo tamanho.

O completar conclusões de histórico facilita bastante sem a necessidade de ver outros comandos.

lshoje facilita ver somente os aquivos de hoje que não pode ser feito no gerenciador

rembranco muitas vezes cria um arquivo com o espaço no início e isto fixa este problema.

usuarios você pode ver quais são usuárrios de serviço e isto em modo gráfico acho que não  dá para ser feito

permissão é bom para apreender ler permissões ja que mostra nos 2 métodos, ou se você quer saber somente a permissão do arquivo

infouser mostra as configurações do sudo que em modo gráfico acho que não pode ser feito

iptlist mostra as configurações detalhadas do iptables, caso tenha sido configurado manualmente.

e por ai vai..
« Última modificação: 18 de Janeiro de 2017, 22:48 por swatquest »