Comandos linux

Pedrolucas
10 min readJul 14, 2021

--

Comandos linux.

Introdução: Man

O comando man ([man]ual), nos permite acessar uma pequena documentação acerca do comando especificado.

Ex: man <comando> -> man ls

Introdução 2: tá bom.. longo demais, nem li :)

Ok, use o comando para instalar o tldr (Too long, didn’t read):

# npm install -g tldr

-g (global) -> instala o tldr para todos os diretórios, não só para o projeto atual.

Esse programa permite você acessar uma manual bem mais objetivo e sucinto acerca dos comandos linux, com as recomendações mais populares da comunidade e comandos mais utilizados no dia-a-dia.

Ex: tldr <comando> -> tdlr ls

Tá, mas o que tem aqui?: $ ls

O comando ls permite [l]i[s]tar todos os diretórios e arquivos filhos do diretório pai que você está no momento, ou seja, mostra todos os seus arquivos irmãos.

Ex: ls <options> <directory> -> ls -la -> ls -la /bin

-l (long) -> mostra os detalhes

-a (all) -> mostra tudo, mesmo os que começam com “.”, que no linux indica um arquivo escondido

Exemplo de STDOUT do ls

drwxrwxrwx 1 llara llara 512 Jun 27 21:08 Desktop

drwxrwxrwx -> permissões do arquivo (xxx-yyy-zzz)

1 -> Número de atalhos para o arquivo

llara -> Dono do arquivo

llara -> Grupo do arquivo

512 -> Tamanho do arquivo

Jun 27 21:08 -> Data de criação

Desktop -> Nome do arquivo

Eu não quero estar aqui, mude o diretório: $ cd

Change directory (cd), é um comando que permite tornar um determinado diretório o seu atual diretório de trabalho.

Ex: cd home (vai para a pasta irmã home)

Ex: cd . (vai para a pasta atual)

Ex: cd .. (vai para a pasta pai)

Ex: cd / (Vai para o diretório raiz)

Ex: cd ~ (Vai para a pasta home)

Peraí.. aonde eu to ?: $ pdw

Print Working Directory (pwd), basicamente nos mostra em que parte da árvore de arquivos estamos, mostrando o diretório pai, avô, bisavô etc.

Ex: ~$ pwd

retorna: /home/<nomeDeUsuário>

Crie um mundo onde você queira viver, ou ao menos o lugar aonde esse mundo será construído, alguma coisa assim… : $ mkdir

Make Directory (mkdir), é um comando que permite criar diretórios.

Ex: mkdir <nomeDoDiretório> -> mkdir ovo

Ex: mkdir -p paiDoOvo/ovo

-p (parents) -> permite criar um estrutura de pastas com pais e filhos.

-v (verbose) -> opção normalmente utilizada para permitir que o comando exiba verbalmente o que está fazendo.

Hoje teremos revolução, destrua os diretórios que se opoem ao regime: $ rmdir

Remove Directory (rmdir), remove o diretório apontado pelo comando.

Ex: rmdir <nomeDoDiretório> -> rmdir ovo

Ex: rmdir -rf /bin (Nem tenta, se der certo vai ser a pior coisa que você pode fazer)

-r (recursive) -> remove recursivamente todos os diretórios dentro do diretório apontado.

-f (force) -> remove a força sem perguntar,

(perigoso), #rm -rf é muito perigoso pois pode destruir em milésimos de segundos todas as suas fotos de família, e para recuperar isso é um caso pois não existe lata de lixo no terminal de comando.

Vai pra lá, Vai pra lá: $ mv

Move (mv), move um arquivo.

Ex: mv <loop(arquivo/diretório>) <nomeDoDestino> -> mv ovo.js /ovos

Ex: mv ovo.js ovo.css ovo.html /ovo

(Move todos os arquivos para o último argumento, o diretório)

Aceita: — force e — verbose

-n (no-clobber) -> não sobrescreve arquivos

-i (interactive) -> pede por confirmação antes de sobrescrever arquivos, segurança.

Funcionalidade especial, mover arquivos para o mesmo diretório tem a função de renomear eles

Ex: mv ovo.js ovo.css (Renomeia ovo.js para ovo.css)

Vish, tem dois: $ cp

Copy(cp), copia arquivos para o diretório especificado.

Ex: cp <loop(arquivos)> <diretório> -> cp ovo /ovos (copia ovo para ./ovos)

Ex: cp ovo1 ovo2 ovo3 /ovos (copia ovo1,ovo2 e ovo3 para ./ovos)

Ex: cp ovo ovoCopía (faz uma cópia de ovo com o ovo de ovoCópia)

Dica: o nome da cópia pode ou não ser especificado no diretório destino.

Aceita: — verbose, — recursive e — interactive

Deixe uma impressão digital na data e hora do arquivo (bizarro né? um dos comandos mais famosos não é usado para fazer o que originalmente foi feito para fazer, mas tá bom o título tá grande demais já): $ touch

Touch (touch), é um comando utilizado para alterar a data e a hora de acesso de determinado arquivo, tipo um funcionário fantasma batendo ponto com sua impressão digital e depois voltando para a casa com dinheiro de imposto na mão fazer churrasco com óculos de sol na cara tmj vlw.

Ex: touch <nomeDoArquivo> -> touch ovo.txt

(cria o arquivo ovo.txt e define sua data para a data atual.)

Ex: touch -t yyyymmddhhmm.ss ovo.txt (muda a data do arquivo)

Obs: De longe o comando mais mal interpretado de todo o linux, mas fazer oque né, o comando de mover é usado para mudar o nome do arquivo :0, se bem que mover e mudar o nome do arquivo são quase a mesma coisa pois apenas alteram o cabeçalho do arquivo, mas aí é um papo de filesystem…

Acha isso aqui para mim sobrinho: $ find

Find (find), nos dá a possibilidade de achar arquivos de maneira rápida.

Ex: find <loop(nomeDosDiretórios)> <argumentos> -> find . -name ‘ovo.js’

Opa, esqueci de falar mas esse tal de loop() que eu venho colocando nos exemplos é só um pseudocódigo pra indicar que múltiplos argumentos podem ser passados, nesse caso, múltiplos diretórios.

Ex: find /mnt /etc -name “*.js” acha todos os arquivos que terminam em .js que existem em /mnt e /etc.

Detalhe: O find aceita múltiplos diretórios para um nome, diferente dos outros comandos que aceitam múltiplos nomes para um diretório cp e mv por exemplo.

-name (nome) <nomeDoArquivo/Expressão> (Obrigatório)

-type <tipo> (tipo) (Especifica se você quer d(diretório) ou f(arquivo))

-type f -empty (vazio) (Acha apenas arquivos vazios)

-delete (deleta) (Deleta os arquivos que achou)

-size <+/- xy> (tamanho) (Acha arquivos acima ou abaixo de um determinado tamanho)

+(maior que), — (menor que)

Você não tem programas na sua área de trabalho, você tem atalhos: $ ln

Link (ln), permite criar hard/soft links que apontam para um diretório, caso o link seja modificado, o arquivo original também será.

HARD LINK -> Aponta para os endereços na memória (inode) onde o arquivo está guardado.

obs: Arquivos linux são compostos de “head e body”.

O head guarda metadados e o caminho do arquivo.

O body é o arquivo em si jogado em algum canto do HD, o hardlink aponta para o body.

Por causa disso, é impossível ter um hardlink apontando para pastas, pois pastas não possuem body, elas existem apenas no head dos arquivos.

Também por causa disso, quando o arquivo original for deletado, o hard link permanecerá intacto, pois funciona como um ponteiro para endereços de memória onde está o arquivo em si.

Detalhe: arquivos raramente são deletados de verdade, o que acontece é uma destruição de cabeçalho, arquivos sem cabeçalho são bytes jogados aleatoriamente no HD, prontos para terem seu valor atribuído por outro arquivo.

Ou seja, hard links só podem apontar para arquivos da mesma partição, pois o fornecido é apenas o conjunto de endereços de memória e HDS concorrentes possuem endereços de memória iguais.

E por fim, hard links são indistinguíveis do arquivo original, pois o arquivo original também é um hard link.

obs: Quando se cria um arquivo, duas coisas são criadas:

O inode, ou seja, o conteúdo do arquivo.

Um hard link para o inode, que chamamos de o arquivo em si.

E por fim de verdade agora, criar um hard link nada mais é do que manualmente fazer o que o seu sistema já faz por padrão ao criar um arquivo.

ufa.. e por último

SOFT LINK -> É um arquivo contendo o diretório do arquivo apontado.

Ou seja, o soft link pode apontar para qualquer coisa, pois o caminho, diferente do inode, possui a especificação de em qual disco o arquivo está.

Ex: <disco>/home/llara ou, no windows, C:\\Users\pedro\

E por causa disso, como o soft link é um link para um link que possui o endereço do inode, caso o arquivo original (hard link) seja deletado, o que resta para o soft link é o caminho para um hard link que não existe mais, tornando o soft link inacessível.

Ou seja, o soft link não sabe onde está o arquivo, ele conhece alguém que sabe. Se esse alguém desaparecer, ele não sabe mais.

Ou também, o soft link pode apontar para um diretório, sem um hard link específico.

Ex: ln <nomeDoArquivo> <nomeDoHardLink>

Ex: ln -s <nomeDoArquivo/Diretório> <nomeDoSoftLink>

Aceita: -f

Obs: os atalhos do windows são similares aos soft links, pois quando você deleta o .exe original, o atalho morre. Soft links possuem @ no final, só por curiosidade, e são coloridos diferente.

Comprime e descomprime arquivo (não arquivos, arquivo): $ gzip

GNU Zip (gzip), comprime o arquivo, substituindo-o pela versão comprimida.

Ex: gzip <arquivo> -> gzip ovo.jpg

-c (stdout) — Standard output, envia o conteúdo comprimido para a saída padrão. Pode ser redirecionado para um arquivo ou outro comando com o símbolo >

Ex: gzip <arquivo> -c > <destino.gz>

-k (keep) — Mantém o arquivo original, fazendo o mesmo que o comando de cima.

-l (list) — Para cada arquivo comprimido, exiba informações

-<número> () — índica o nível de compressão de 1–9, padrão é 6

-r (recursive) — Não para até compactar todos os arquivos da pasta

-v (verbose) — Mostra o andamento do processo em %

-d (decompress) — Descomprime o arquivo

Só descomprime arquivos: $ gunzip

O nome é bem intuitivo

Ex: gunzip <arquivo>

Aglomera múltiplos arquivoS: $ tar

Tape archive (tar), é usado para juntar múltiplos arquivos em um só.

Ex: tar -cf <nomeDoTar> <loop(arquivos)>

-cf (create file) — Cria um arquivo tar contendo os arquivos subsequentes

-czf (create gzip file) — Cria um arquivo tar contendo os arquivos subsequentes comprimidos em gzip.

-xf (extract file) — Extrai o conteúdo de um arquivo .tar ou .tar.gz

-tfv (list files verbose) — Lista o conteúdo do arquivo tar

Isso, isso.. ALIÁS isso aqui: $ alias

Alias (apelido), serve para criar um apelido para um comando com suas determinadas especificações e argumentos.

Ex: alias comprime = ’tar czf’ -> comprime ovo.tar.gz ovo1 ovo2 ovo3 ovo4

Essas alterações são temporárias, para fazê-las eternas adicione o comando no ~/.bashrc

Algumas pessoas acham que é catch, mas não é: $ cat

Cat([C]onc[at]enate) — é um comando usado para concatenar dois ou mais arquivos juntos, caso não seja explicitado um stdout, ele jogará para o terminal, caso apenas um arquivo seja especificado, ele ainda jogará o stdout para o terminal mesmo sem outro para concatenar, ou seja:

Ex: cat <loop(arquivo)> -> cat ovo.txt

$ conteúdo do ovo

Cat é usado para ver o que tem dentro dos arquivos. Usando o operador > pode-se jogar o resultado do stdout para o arquivo especificado, com o operador >> joga-se o stdout para o final do arquivo especificado ou seja:

> — apaga o conteúdo do arquivo original e o substitui pelo novo.

>> — não apaga, apenas coloca no final

| — pega o stdout do comando anterior e joga para o stdin do próximo

-n (number) — Mostra o número das linha

Antes tinha o mais, agora tem o menos, more is less: $ less

Less(menos), filho do comando more, o less abre um arquivo grande e permite que você navegue intuitivamente por ele usando as setas do teclado.

Ex: less <nomeDoArquivo>

v (vim) — abre o editor padrão do sistema para editar o arquivo

q (quit) — sai do arquivo

f (follow) — segue as mudanças do arquivo em tempo real

Só a cauda do arquivo: $ tail

Tail(cauda), mostra o final do arquivo, geralmente usado com o -f(follow) para ver o final do arquivo em tempo real (suas mudanças).

Ex: tail -f <nomeDoArquivo>

Pega aquilo ali: $ grep

Grep([G]lobal [r]egular [e]xpression [p]rint) — Pega alguma ocorrência num arquivo, ou stdout.

Ex: grep <ocorrência> <arquivo> -> grep ovo ovo.txt

-n (number) — Mostra o número de linhas.

-i (insensitive) — Torna a procura case insensitive.

-v (invert-match) — Faz o contrário, pega todas as linhas que não condizem.

Organize: $ sort

Sort (sort), organiza em ordem alfabética as linhas de um arquivo.

Ex: sort <arquivo> -> sort ovo.txt

-n (numeric), Leva em consideração valores numéricos.

-r (reverse), Inverte a ordem

Junte linhas adjacentes e iguais: $ uniq

Uniq ([Uniq]ue), serve para apagar linhas que sejam iguais e que estejam uma atrás ou na frente a outra, provavelmente deve ser usado junto com o comando anterior, sort, pois o sort deixará as linhas iguais juntas, do contrário, o uniq não é tão útil.

Ex: uniq <arquivo> -> uniq .txt

Ex: cat ovo.txt | sort | uniq

-c (count), Agora sim, com isso o comando uniq conta quantas ocorrências existem da mesma linha.

Delta: $ diff

Diff ([Diff]erence), Pega a diferença entre dois arquivos ou diretórios, similar ao que o git faz.

Ex: diff <local1> <local2> -> diff ovo.txt ovo2.txt

Jogue no STDOUT: $ echo

Echo (reverberar), é responsável por retornar ao stdout o conteúdo fornecido, podendo ser uma string, uma variável de ambiente ou até mesmo um comando.

Ex: echo ovo -> $ ovo

Ex: echo ~ -> <diretórioDoUsuário> -> /home/llara

Ex: echo $(ls)

Mude o dono: $ chown

Chown (Change Owner) -> Responsável por mudar o dono e o grupo de um diretório ou arquivo

Ex: chown <usuário> <arquivo> -> chrown pllara ovo.txt

Ex: chown <usr>:<grp> <file/folder> -> chown pedro:alunos ovo.txt

Ex: chown <usr>:<grp> <file/folder> -> chown pedro:alunos ./ovo -R

Não muda a moderação, mas as permissões da mesma : $ chmod

Chmod ([Ch]ange [Mod]e) — Esse comando serve para mudar as permissões de leitura(read), modificação (write) e execução (no caso de bash files) do usuário(user), grupo (group) e outros(other).

Sintaxe — X-UUU-GGG-OOO

X — Indica se é uma pasta ou arquivo

U — Permissões do usuário

G — Permissões do grupo

O — Permissões de outros

*A — Todos

1ª forma de usar

UGOA <+,-,=> rwx

Ex: chmod a+rwx <arquivo> -> chmod a+rwx ovo.txt

> Esse comando adiciona as permissões de ler, editar e executar ovo.txt

Ex: chmod ug=rw <arquivo> -> chmod ug=rw ovo.txt

> Esse comando transforma as permissões do grupo e do usuário para ler e editar.

2ª Forma de usar

XYZ -> {0..7} -> número binário -> { 000 … 111 }

Ex: chmod 777(111 111 111 )(rwx rwx rwx) -

Eu não entendi o que o nome significa, mas tamo aí, mude as permissões que são definidas por padrão para novos arquivos : $ umask

Umask ([U]ser [M]ask ) — Agora que vimos como modificar as permissões do arquivo, percebemos que os mesmos já vêm com algumas configurações de acesso pré-definidas, essas configurações podem ser definidas através deste comando.

Ex: Umask -> $ número — não use o comando assim, retornará um número chato de se ler

Ex: Umask -S -> $ u=xxx, g=yyy, o=zzz (Retorna as permissões padrão atribuídas aos arquivos)

Ex: Umask u=rwx

Qual o espaço ocupado por essa pasta?: $ du

DU ([D]isk [U]sage), Serve para calcular o tamanho ocupado por arquivos e diretórios

--

--