Skip to content

Instantly share code, notes, and snippets.

@m3nd3s
Last active October 24, 2018 17:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m3nd3s/105677cddcb111a397f0f658f89d1dae to your computer and use it in GitHub Desktop.
Save m3nd3s/105677cddcb111a397f0f658f89d1dae to your computer and use it in GitHub Desktop.
Shell presentation

%title: Shell Linux %author: Almir Mendes %date: 2018-09-27

-> Shell Linux <-

-> Uma pequena talk sobre comandos shell <-


-> RTFM <-

-> Read The Fucking Manual <-

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


-> ls <-

-> list directory contents <-

-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

-> Permissions <-

-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


-> Permissions <-

Considere:

r : leitura w : escrita x : execução

^ r w x ^ 1 1 1 ^ 4 2 1


-> Permissions <-

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?


-> find <-

-> walk a file hierarchy <-

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)


-> cat, tac & zcat <-

-> concatenate and print files <-

Simples, porém muito úteis:

cat : print de conteúdo de arquivos tac : print reverso zcat : print de arquivos compactados (gz)


-> grep <-

-> file pattern searcher <-

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


-> tail <-

-> display the last part of a file <-

Ótimo para ver logs e acompanhar

-f : continua olhando atualizações -n : printa X linhas antes


-> less, zless, more <-

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


-> sort <-

-> sort or merge records <-

Ordenação

-r : ordem reversa -u : remove repetição -n : numericamente (o default é texto) -R : ordem randômica


-> compactadores <-

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

-> ps & kill <-

-> Processos e sinais <-

Listando processos de todos usuários:

ps aux

Enviando sinal TERM para o processo

kill 1234

Matando sem direito a defesa:

kill -9 333

-> top <-

-> Esse comando é top mesmo! 🤣 <-

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 e w <-

uptime Útil pra saber desde quando a máquina está ligada

w Útil pra saber quem está logado


-> screen <-

Ótimo para deixar romandos demorados rodando Muito útil para pair programming


-> ssh <-

-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

-> Pipes e redirects <-

0 : STDIN 1 : STDOUT 2 : STDERR ^

| : redireciona saída de um comando para outro > : stdout para arquivo (trunca) >> : stdout para arquivo (append)


-> Redirects <-

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

-> Pipes <-

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)'

-> Dúvidas? <-

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment