%title: Shell Linux %author: Almir Mendes %date: 2018-09-27
-> Uma pequena talk sobre comandos shell <-
Calma! Não é maldade 😅!
Shell é um universo cheio de possibilidades e opções, as vezes é mais fácil recorrer ao manual:
man ls
-> Faremos isso algumas vezes 😂 <-
-l : Lista detalhes sobre os arquivos -a : Lista arquivos ocultos -h : Usado com o -l, adiciona sufixos para tamanho -S : Em ordem de tamanho -r : Em ordem reversa
Na dúvida, já sabe! :-)
man ls
-rwx rwx rwx | | | |________ Outros | | |____________ Grupo | |________________ Dono |__________________ Tipo do arquivo ^
Comando que altera as permissões é chmod
chmod 600 teste.txt
^
Como calcular uma permissão?
Um pouco de matemática de bits
Considere:
r : leitura w : escrita x : execução
^ r w x ^ 1 1 1 ^ 4 2 1
rwx rwx rwx = 111 111 111 rw- rw- rw- = 110 110 110 rwx --- --- = 111 000 000 ^
então:
rwx = 111 em binário = 7 rw- = 110 em binário = 6 r-x = 101 em binário = 5 r-- = 100 em binário = 4
OK?
Muito útil para localizar arquivo
find ~/ -name Gemfile
-type : d
- diretório, f
- arquivo, ...
-ctime : data da última alteração
-empty : arquivos ou diretórios em branco
-exec : executa um comando
-size : filtra por tamanho (muito útil)
Simples, porém muito úteis:
cat : print de conteúdo de arquivos tac : print reverso zcat : print de arquivos compactados (gz)
Busca/filtra por conteúdos
grep people smart-system/app/models
-A : linhas depois -B : linhas antes -C : linhas envolta -E : extended regex -i : ignore case -n : a linha em que foi encontrado
Ótimo para ver logs e acompanhar
-f : continua olhando atualizações -n : printa X linhas antes
São paginadores, ótimos para ler conteúdo de arquivos
do tipo texto. zless
é para arquivos .gz
.
less log/production.log
-R : faz parse para ascii color
more
é similar, mas não gosto dele :-D
Ordenação
-r : ordem reversa -u : remove repetição -n : numericamente (o default é texto) -R : ordem randômica
zip
: gera arquivos zip
tar
: agregador de arquivos, não compacta
gzip
: gera arquivos gz
Geralmente o tar
é usado em conjunto com compactadores
tar -zcf file.tar.gz file1.txt file2.txt file3.txt ...
Listando processos de todos usuários:
ps aux
Enviando sinal TERM para o processo
kill 1234
Matando sem direito a defesa:
kill -9 333
Utilizado para listar e acompanhar processos. Nele é possível ter várias informações sobre o estado da máquina e processos.
M : Ordena por uso de RAM P : Ordena por consumo de CPU k : Envia sinal para processo selecionado 1 : Expande infos sobre CPUs ^
Exibe load average
1 minuto, 5 minutos e 15 minutos
uptime
Útil pra saber desde quando a máquina está ligada
w
Útil pra saber quem está logado
Ótimo para deixar romandos demorados rodando Muito útil para pair programming
-A : carrega a chave ssh -i : especifica uma chave
Pode ser utilizado pra rodar comandos remotos
ssh smart_system_production "cat /etc/passwd"
^
E outras doideras
ssh smart_system_production "cat /etc/motd | gzip" > ~/Desktop/motd.gz
0 : STDIN 1 : STDOUT 2 : STDERR ^
| : redireciona saída de um comando para outro > : stdout para arquivo (trunca) >> : stdout para arquivo (append)
stdout
ls -l > /tmp/fileout.txt # trunca se o arquivo já existir
ls -l >> /tmp/fileout.txt # com append
^
stdin
wc -l < /tmp/fileout.txt
^
E agora?
wc -l < fileout.txt > filecount.txt # 🤔
^
E sobre o 2>&1
, o que ele faz?
cmd >> outfile 2>&1
Redireciona o output de um comando para o input do outro
cat /etc/motd | wc -l
^
tail -f log/production.log | grep -vE '(access|api)'