Pular para conteúdo

Comandos

Anotações baseadas na aula 1 do Missing Semester of CS - MIT

O que é o shell

bash/shell (ou como conhecemos, o bom e velho terminal) é uma linguagem de programação, ele conhece os comandos, porque os programas responsáveis por eles estão dentro dele. Então você pode loops, funções, etc dentro dele.

Comandos aleatórios mas interessantes

date ⇒ retorna a data do dia.

echo ⇒ imprime no terminal o que vem dps dele.

echo $PATH ⇒ Esse comando emite todas as pastas que guardam os comandos disponíveis para serem executados no Shell. Quando solicitamos algo, é nessas pastas que ele procura o código responsável pelo comando (se existir).

which → Sinaliza de onde está vindo o comando que estamos rodando, exemplo which aws, me mostra a pasta onde tá os arquivos da aws que eu rodo no terminal quando chamo o comando.

cat ⇒ lê arquivos e exibe o conteúdo no terminal.

tee ⇒ além de escrever em arquivos, ele exibe o resultado no terminal.

tail -n <quantidade de linhas> ⇒ Imprime as últimas n linhas de um input fornecido a ele (arquivo por exemplo)

Comandos relacionados a pastas/caminhos

xdg-open <pasta/arquivo> ⇒ Necessário instalação no wsl2 (link aqui), mas você indica o arquivo ou pasta a abrir, e ele abre o mesmo com o aplicativo adequado.

cd (change directory) <caminho relativo até onde você deseja ir> ⇒ altera a pasta que você está no momento.

cd - ⇒ Te retorna pro diretório que você estava anteriormente.

ls -l ⇒ fornece mais informações sobre os diretórios que estamos olhando (arquivos, pastas, permissões, etc).

pwd (print working directory) ⇒ exibe o caminho onde você está atualmente (qual pasta).

Copiar/mover arquivos

mv <old name of a file/folder> <new name> - Permite renomear arquivos e pastas.

copy <old name of a file/folder> <new name> - Permite renomear arquivos e pastas.

Remover arquivos/pastas

rm <caminho> → você pode remover arquivos. Esse comando não é recursivo, então não consegue apagar pastas.

rm -rf ⇒ Permite apagar pastas com coisas dentro (recursivo).

rmdir <pasta> ⇒ Permite apagar pastas vazias.

Para saber mais sobre o comando utilizado

<comando> —help ⇒ Fornece informações sobre o comando, para que serve e como utilizar ele.

man <comando> ⇒ Fornece informações sobre o comando, utilização semelhante ao —help mas com a diferença que é exibido no modo de leitura e não diretamente impresso no terminal.

Manipular input/output de outros comandos

| ⇒ O nome desse símbolo é pipe, basicamente sinaliza para o shell pegar o output da esquerda e usar como input para o que vier na direita.

Exemplo:

ls -l | tail -n1ls -l imprime tudo que tem na pasta, o pipe pega esses dados e joga para o tail, que imprime apenas a última linha.

<input> **>** <output> ⇒ Direciona o input gerado na esquerda para dentro do comando executado a direita.

Exemplo:

echo hello > hello.txt

Aqui estamos fornecendo para o comando echo a entrada “hello”, e enviando esse input direto para dentro do arquivo hello.txt (se ele não existir, vamos criar um do zero).

<input> **<** <output> ⇒ Direciona o output da direita, como um input para o o comando da esquerda.

Exemplo:

cat < hello.txt

Basicamente estamos pegando um output (o que está escrito dentro do arquivo) e dizendo para o terminal usar isso como input para o comando cat.

>> ⇒ Mesma ideia do comando citado acima, com a diferença que ao invés de causar um overwrite (apagar tudo e substituir pela informação nova) ele dá um append (junta a informação antiga com a nova).

Sudo e usuário Root

Sudo <comando que deseja realizar> → Comando para poder executar algum outro comando como usuário root (com todas as permissões). Sudo basicamente significa Superuser Do.

# ⇒ É usado no terminal para indicar que você está executando as coisas como root user.

sudo su ⇒ Troca o terminal pra modo root, você roda tudo como usuário root e pode fazer tudo. Usar com cautela.