Fórum Ubuntu Linux - PT
Área para Iniciantes => Dicas e Truques => Tópico iniciado por: swatquest em 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
# 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/ (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;
}
deletar 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
-
consertada a função tamanho
-
Muito bom,pra iniciantes da pra fazer tudo isso via modo gráfico em qualquer distro,qual o intuito do tópico?
-
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..