Personalize ou crie comandos próprios no Linux com o alias

Mesmo que você não conheça o comando alias, ele provavelmente já está sendo usado em seu sistema.
Os arquivos de configurações pessoais .bashrc ou .bash_profile devem ter uma série de configurações com o uso do alias.

“Alias”, quer dizer apelido.
Sua função é dar nomes curtos para sequências grandes de comandos.

Por exemplo, você pode criar um alias para realizar a atualização do seu sistema, na linha de comandos (CLI):


alias atualiza="sudo apt update"

atualiza

[sudo] senha para justincase: 

O arquivo de configuração .bashrc, presente no seu diretório home (no Debian), já vem com alguns alias predefinidos:

 
cat .bashrc | grep alias

# enable color support of ls and also add handy aliases
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'

No meu caso, a maioria está relacionada ao comando grep e ls.

Armazene os apelidos em um arquivo externo

Opcionalmente, você pode adicionar todos os seus alias a um arquivo externo, chamado .bash_aliases (ou outro nome, à sua escolha). Para isto, acrescente ao arquivo de configuração pessoal do Bash (.bashrc), as seguintes linhas:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

No Debian, estas linhas já estão presentes. De forma que é possível já criar e editar o arquivo .bash_aliases.
Não é obrigatório. Apenas pode ajudar a organizar melhor seus arquivos de configuração do sistema.

Sugestões de alias para usar no seu sistema

Se há sequências de comandos muito longas e usadas, elas podem ser encurtadas em apelidos.
As sequências de atualização do sistema, por exemplo:

alias sau="sudo apt update"
alias alu="apt list --upgradable"
alias saf="sudo apt full-upgrade"

Você pode adicionar apelidos para chegar mais rápido às suas pastas de arquivos mais acessadas:

alias documentos="cd ~/Documentos"
alias scripts="cd ~/scripts/python"
alias vid="cd ~/Vídeos"
alias down="cd ~/Downloads/"
alias mus="cd ~/Músicas/"
alias wallp="cd ~/Imagens/wallpapers"

Alguns comandos úteis para o seu sistema:

alias sair="exit" # para encerrar a sessão no terminal atual
alias reset="systemctl reboot" # para reiniciar o sistema
alias desligar="systemctl poweroff" # para desligar o sistema
alias suspender="systemctl suspend" # para suspender o sistema
alias hibernar="systemctl hibernate" # para hibernar

Obtenha outras sugestões de uso do alias, neste artigo.


Saiba mais sobre as diferenças entre suspender, hibernar e hybrid-sleep.
Use sempre alias para criar apelidos curtos para sequências de comandos grandes — mas que não são tão extensos, que justifique criar um script. 😉
Você tem outras sugestões?! Então, conta pra gente, na caixa de comentários.

Como criar um registro da sua linha de comando no Linux

Você pode querer registrar todos os comandos dados durante uma sessão, no terminal.
Usualmente, para depois analisar com calma e, se for o caso, criar um script a partir deles, para automatizar a tarefa.
Pode ser útil também em aulas, quando o professor deseja aplicar um teste. O aluno apenas envia para ele o arquivo resultado.
O utilitário script inicia automaticamente a gravação (no arquivo typescript) de todas os comandos executados no seu terminal.
Quando terminar e desejar sair da gravação, use o comando exit.
Veja um exemplo:


script


Script iniciado, o arquivo é typescript
justincase@ultra-5 

echo "Toda esta linha será gravada em um arquivo chamado typescript."

ls # esta também.

exit

Script concluído, o arquivo é typescript

cat typescript

linux script save
Se preferir, é possível indicar um outro nome para o seu arquivo:


script meuarquivo.log

Como comportamento padrão, o script sobrescreve o arquivo existente.
Use a opção ‘–append’ ou ‘-a’ para adicionar código a um arquivo preexistente.


script --append backup.sh

Como manter a execução de um programa, mesmo após finalizar a sessão no Linux

Ao finalizar uma sessão no Linux (na GUI ou na CLI), o sistema operacional entende que todos os programas e processos iniciados pelo usuário devem ser fechados.
Terminar uma sessão não é a mesma coisa que desligar o computador.
Comumente, as pessoas encerram uma sessão, para iniciar outra, sob um novo perfil de usuário.
Este pode ser o momento ideal para executar programas de manutenção, como um script de backup, por exemplo.
O truque pode ser realizado com o utlitário nohup.

O nohup executa comandos imunes a hangups e envia seus resultados (output) a um terminal non-tty.
Em resumo, ele mantém o comando vivo, em execução, mesmo após o fim da sua sessão.
O nome é derivado da junção dos 2 termos: no hangup.

Veja um exemplo, tirado do manual do comando:


nohup wget site.com/file.zip

Outro caso em que ele pode ser útil, é na atualização do sistema.
Se você estava adiando o update, para não sobrecarregar a sua conexão, pode rodar o procedimento ao sair:


nohup sudo apt update

Webmasters podem se valer deste utilitário, para manter procedimentos em funcionamento, mesmo após se desconectarem do servidor remoto.
Como padrão, um arquivo será gerado no diretório local, em que o nohup foi executado, com o nome de nohup.out — contendo as saídas do comando que ele executou.
Para atualizar o sistema, abra um novo terminal e autentique-se como root. Agora rode o procedimento de atualização:


nohup apt update; apt -y full-upgrade


nohup: ignorando entrada e anexando saída a 'nohup.out'
Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto Calculando atualização... Pronto ...

Pode fechar o terminal.
Quando quiser verificar o andamento da sua atualização, basta dar uma olhada no arquivo nohup.out:


sudo cat nohup.out

linux terminal nohup apt

Como listar processos no Linux em ordem de uso do processador ou da memória

Listar os processos em execução no sistema é fácil.
Neste post, vou mostrar como ordená-los, de maneira que você fique sabendo quem está consumindo mais memória ou quem está usando mais a capacidade de processamento do seu hardware.
O procedimento é simples e pode revelar os vilões do seu sistema. 😉
O comando ps, sozinho, exibe os processos em execução, tal como o comando top.
O top pode ser usado para obter os mesmos resultados, também. Mas vamos ter que abordar seu uso em outro post.
Veja um exemplo de uso do ps:


ps

  PID TTY          TIME CMD
 2037 pts/1    00:00:00 ps
18101 pts/1    00:00:01 bash

O comando ps pode mostrar mais do que apenas isso, com o acréscimo de alguns parâmetros.
Você pode usar o utilitário combinado ao less, para poder ver uma lista maior, com mais conforto:


ps axu | less

Note que os valores de consumo da CPU e da MEMÓRIA se encontram listados na 3a e 4a colunas, respectivamente.
Com o comando, abaixo, vamos ordenar ascendentemente os valores pela coluna 3 (CPU):


ps axu | sort -nk 3

Achou a lista grande? Use o comando tail!


ps axu | sort -nk 3 | tail

www-data 27070  0.0  0.1 405488  9892 ?        S    00:06   0:00 /usr/sbin/apache2 -k start
www-data 32462  0.0  0.1 405488  9892 ?        S    13:35   0:00 /usr/sbin/apache2 -k start
www-data   621  0.0  0.1 362384  7900 ?        S    set25   0:00 php-fpm: pool www
www-data   622  0.0  0.1 362384  7900 ?        S    set25   0:00 php-fpm: pool www
justinc+  1911  0.1  4.7 2044808 375484 tty2   SNl+ set25   5:33 /usr/lib/tracker/tracker-extract
justinc+  1816  0.2  0.1 2215372 15384 ?       S<l  set25   6:33 /usr/bin/pulseaudio --start --log-target=syslog
Root       304  0.5  0.0      0     0 ?        S    set25  18:37 [irq/28-iwlwifi]
justinc+  1790  1.3  4.9 2370480 388544 tty2   Sl+  set25  41:37 /usr/bin/gnome-shell
justinc+  1697  1.5  2.4 514556 194524 tty2    Sl+  set25  49:27 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
justinc+ 10865 30.4 29.4 5285500 2315972 tty2  Rl+  set25 972:35 /usr/lib/firefox-esr/firefox-esr

O tail pode ser usado para exibir apenas as últimas 10 linhas da saída de um comando.
Para obter os valores referentes a coluna 4 (memória), use o comando da seguinte forma:


ps axu | sort -nk 4 | tail

root       569  0.0  0.4 362384 32712 ?        Ss   set25   0:11 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
root       851  0.0  0.4 466684 37800 ?        Ssl  set25   0:24 /usr/lib/packagekit/packagekitd
justinc+  1509  0.0  0.5 619264 42560 ?        Ssl  set25   0:25 /usr/lib/gnome-terminal/gnome-terminal-server
mysql      749  0.0  0.8 686288 66008 ?        Ssl  set25   3:06 /usr/sbin/mysqld
justinc+ 18219  0.0  1.1 946796 92580 ?        Sl   set26   0:04 /usr/bin/gnome-software --gapplication-service
Debian-+   659  0.0  1.3 1789592 108340 tty1   Sl+  set25   1:10 /usr/bin/gnome-shell
justinc+  1697  1.5  2.4 515752 194632 tty2    Sl+  set25  49:29 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
justinc+  1911  0.1  4.7 2044808 375484 tty2   SNl+ set25   5:33 /usr/lib/tracker/tracker-extract
justinc+  1790  1.3  4.9 2370740 389348 tty2   Sl+  set25  41:40 /usr/bin/gnome-shell
justinc+ 10865 30.4 28.8 5282432 2268520 tty2  Sl+  set25 973:25 /usr/lib/firefox-esr/firefox-esr

Fácil, não é?

Formate automaticamente a saída dos seus comandos Linux em tabelas

As tabelas são das formas mais simples de se organizar informações.
Muitos comandos ou sequências de comandos, dados para obter informações sobre o comportamento do hardware ou do software, podem oferecer uma saída de dados um pouco confusa, à primeira vista.
Com o uso do comando grep, contudo, é possível filtrar a parte que interessa das informações, como já ensinei antes.
Mas, quando se precisa obter informações ordenadas, em vez de “filtradas”, o comando column pode ser mais útil.
Veja um exemplo de seu uso, associado ao comando mount.


mount | column -t

sysfs        on  /sys                             type  sysfs            (rw,nosuid,nodev,noexec,relatime)
proc         on  /proc                            type  proc             (rw,nosuid,nodev,noexec,relatime)
udev         on  /dev                             type  devtmpfs         (rw,nosuid,relatime,size=3925308k,nr_inodes=981327,mode=755)
devpts       on  /dev/pts                         type  devpts           (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs        on  /run                             type  tmpfs            (rw,nosuid,noexec,relatime,size=787320k,mode=755)
/dev/sdb1    on  /                                type  btrfs            (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
/dev/sda1    on  /home                            type  btrfs            (rw,relatime,space_cache,subvolid=5,subvol=/)
binfmt_misc  on  /proc/sys/fs/binfmt_misc         type  binfmt_misc      (rw,relatime)
tmpfs        on  /run/user/119                    type  tmpfs            (rw,nosuid,nodev,relatime,size=787316k,mode=700,uid=119,gid=124)
tmpfs        on  /run/user/1000                   type  tmpfs            (rw,nosuid,nodev,relatime,size=787316k,mode=700,uid=1000,gid=1000)
gvfsd-fuse   on  /run/user/1000/gvfs              type  fuse.gvfsd-fuse  (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
fusectl      on  /sys/fs/fuse/connections         type  fusectl          (rw,relatime)


Experimente também com o ls:


ls -lah | column -t

total       52K
drwxr-xr-x  1    justincase  justincase  350   set  19  10:31  .
drwxr-xr-x  1    justincase  justincase  1,8K  set  25  16:22  ..
drwxr-xr-x  1    justincase  justincase  4,1K  set  19  16:17  Complete-Python-Bootcamp-master
-rw-r--r--  1    justincase  justincase  360   set  19  10:31  dict_bd_enderecos.py
-rw-r--r--  1    justincase  justincase  115   jun  9   16:17  for-colors.sh
-rwxr-xr-x  1    justincase  justincase  8,8K  jun  13  09:10  hello
-rw-r--r--  1    justincase  justincase  29    set  10  13:03  hello.py
-rw-r--r--  1    justincase  justincase  138   jun  16  17:26  helloworld.f95
-rw-r--r--  1    justincase  justincase  340   jun  20  10:51  meups1.sh
-rw-r--r--  1    justincase  justincase  195   jun  9   17:34  mon-logf.sh
-rw-r--r--  1    justincase  justincase  625   jun  13  15:15  pinghosts.sh
drwxr-xr-x  1    justincase  justincase  168   set  6   17:48  PYTHON
-rw-r--r--  1    justincase  justincase  49    jun  9   16:21  sctchange.sh
-rw-r--r--  1    justincase  justincase  128   jun  9   16:40  until-contador.sh
-rw-r--r--  1    justincase  justincase  130   jun  9   16:26  while-contador.sh

O ls tem saídas “tradicionalmente arrumadas”, de forma que o column apenas melhora o aspecto inserindo tabulações nos espaços.

O utilitário column formata o resultado em múltiplas colunas, dando-lhes um aspecto de tabela organizada, com o objetivo de facilitar a leitura.

Seu uso pode ser incorporado permanentemente, com o comando alias.
Veja um exemplo, baseado na página do manual do column:


alias ls="(printf 'Permissões Links Dono Grupo Bytes Mês Dia '; \
printf 'Hora/Ano Arquivo\n_________________________\n'; \
ls -l | sed 1d) | column -t"

Depois disto, experimente rodar o ls:


ls

Permissões                 Links  Dono        Grupo       Bytes  Mês  Dia  Hora/Ano  Arquivo
_________________________
drwxr-xr-x                 1      justincase  justincase  4158   set  19   16:17     Complete-Python-Bootcamp-master
-rw-r--r--                 1      justincase  justincase  360    set  19   10:31     dict_bd_enderecos.py
-rw-r--r--                 1      justincase  justincase  115    jun  9    16:17     for-colors.sh
-rwxr-xr-x                 1      justincase  justincase  9008   jun  13   09:10     hello
-rw-r--r--                 1      justincase  justincase  29     set  10   13:03     hello.py
-rw-r--r--                 1      justincase  justincase  138    jun  16   17:26     helloworld.f95
-rw-r--r--                 1      justincase  justincase  340    jun  20   10:51     meups1.sh
-rw-r--r--                 1      justincase  justincase  195    jun  9    17:34     mon-logf.sh
-rw-r--r--                 1      justincase  justincase  625    jun  13   15:15     pinghosts.sh
drwxr-xr-x                 1      justincase  justincase  168    set  6    17:48     PYTHON
-rw-r--r--                 1      justincase  justincase  49     jun  9    16:21     sctchange.sh
-rw-r--r--                 1      justincase  justincase  128    jun  9    16:40     until-contador.sh
-rw-r--r--                 1      justincase  justincase  130    jun  9    16:26     while-contador.sh

Se quiser tornar este alias permanente, adicione a linha de código ao final do arquivo .bashrc.

O arquivo password tem seus dados separados por ‘:’, porém são muito justos.
Veja como separar isto tudo:


cat /etc/passwd | column -t -s :

Note que foi adicionado um elemento, à linha de comando acima: ‘-s :’
Sua função é indicar que a separação de colunas deve ocorrer sobre o caractere ‘:’.