.bashrc - Alias / Funçòes/ Export / Dicas para o uso dia a dia

Iniciado por swatquest, 15 de Janeiro de 2017, 23:36

tópico anterior - próximo tópico

swatquest

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
# 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
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.
# 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.

# Interativo
alias rm='rm -i'
alias ln='ln -i'


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

# 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
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'


ou afete todos os progranmas radline:
~/.inputrc

"\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)

## comando df ##
alias df='df -H'


Para o histórico
# Procura por comando no registro history
alias hs='history | grep $1'


Manuais
# 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.
# 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
# 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
# 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
# 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
# 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
# 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)
# 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
alias grupos='cut -d: -f1 /etc/group'

Informações de usuários
# 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
# 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
# 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
# Cria e entra no diretório
mkcd() {
mkdir -p "$1"; cd "$1";
}


Entra e lista diretório
# Entra e lista diretório
cdls() {
cd "$1"; ls;
}


Citação de: niquelnauseadeletar diretórios vazios

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

function cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }



10 comando mais usados

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)

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

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
# 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
# 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


swatquest


overlock_br

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 |

swatquest

#3
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..