Skip to content

Instantly share code, notes, and snippets.

@reginadiana
Last active June 26, 2023 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reginadiana/9572ceaffb7ee573503140b99cb98681 to your computer and use it in GitHub Desktop.
Save reginadiana/9572ceaffb7ee573503140b99cb98681 to your computer and use it in GitHub Desktop.
Anotações sobre Linux e Bash

Bash

Esse programa abaixo vai pegar todos os processos em execução e gravar no arquivo processos.txt

#!/bin/bash
# Nosso primeiro programa em Shell Script

mkdir ~/relatorio
ps aux > ~/relatorio/processos.txt
echo "Primeiro programa executado"

#!/bin/bash deve ser colocado no inicio do arquivo e indica que o nosso arquivo vai ser executado pelo programa bash que está localizado em /bin

mkdir cria um diretório chamado relatorio a partir da HOME

ps aux lista todos os processos de forma detalhada

> indica a saída/resultado do comando, que no caso irá para o arquivo processos.txt

echo irá printar uma mensagem no terminal

Para visualizar o conteúdo do arquivo, podemos executar:

vim processos.txt

O que podemos fazer agora é colocar esse script em um arquivo do tipo .sh, voce pode fazer isso com:

touch my_first_script.sh

Para executar esse arquivo de scripts, basta que executemos da seguinte forma:

./my_first_script.sh

Porém, o resultado será:

zsh: permission denied: ./my_first_script.sh

Isso porque o seu usuário não tem a permissão necessária para executar esse arquivo. Para saber quais permissões ele possui, basta executar:

ls -l process.sh # -rw-rw-r-- 1 rebase rebase 96 Feb  6 17:45 process.sh

Vamos entender o que significa essa resposta:

-rw-rw-r--

Temos 3 tipos de permissão:

r, do ingles, read, leitura

w, do ingles, write, escrita

x, significa execução

Essas permissões podem ser agrupadas, de modo com que os usuários possam fazer várias coisas ou apenas uma:

Permissão Significado
--- Nenhuma permissão de acesso, quer dizer que o usuário não pode fazer nada
--x Permissão de execução
-w- Permissão de escrita
-wx Permissão de escrita e execução
r-- Permissão de leitura
r-x Permissão de leitura e execução
rw- Permissão de leitura e escrita
rwx Permissão de leitura, escrita e execução

Temos também níveis de acesso, que correspondem:

  1. Permissões especiais;
  2. Permissões do dono/usuário quem criou o recurso;
  3. Permissões do grupo (conjunto de usuários que pertencem ao mesmo grupo do dono);
  4. Permissões de outros usuários, que não se encaixam nos casos acima.

O 1º caracter (-) indica qual é o tipo do objeto (vale lembrar, que o objeto em questão é o arquivo que criamos), que no nosso caso se trata de um arquivo comum.

Os 2º, 3º e 4º caracteres seguintes (rw-) representam as permissões do dono do objeto, que no nosso caso se trata de leitura e escrita.

Os 5º, 6º e 7º caracteres seguintes (rw-) significam a mesma coisa do item acima, mas valem para os usuários do mesmo grupo.

Os 8º, 9º e 10º caracteres seguintes (r--) siginicam os outros usuários, possuem apenas permissão de leitura.

Como foi voce quem criou o arquivo, se enquadra como dono dele, apenas com permissão de leitura e escrita. Portanto, não pode executá-lo. Para mudar isso, execute:

chmod 777 my_first_script.sh

Verifique novamente as permissões, e o resultado será:

-rwxrwxrwx 1 rebase rebase 96 Feb  6 17:45 my_first_script.sh

Perceba que agora os tres primeiros caracteres após o primeiro correspondem a rwx (leitura, escrita e execução). Agora sim podemos executar o arquivo. Se a mensagem que definimos lá no começo for mostrada no terminal, quer dizer que deu tudo certo.

Executando uma operação básica

#!/bin/bash

echo "Contando linhas..."
sleep 5

LINHAS=`cat ./processos.txt | wc -l`
echo "Existem $LINHAS no arquivo" 

Esse programa é uma continuação do que já fizemos, onde ele vai basicamente puxar a quantidade de linhas do arquivo txt e mostrar na tela. O comando cat vai pegar o arquivo e o comando wc -l vai retornar a quantidade de linhas dele. Já o uso do $ serve para referenciar a variável que criamos. De diferente temos o comando sleep, que irá esperar um tempo em segundos antes de continuar a executar os comandos seguintes.


Removendo um diretório não vazio e privado:

sudo rm -r ./<dir_name>

Reinstalando um pacote deb:

sudo dpkg -i ./<deb_file_name>.deb

Renomeando o nome de todos os arquivos de um diretório

for f in *.tsx; do mv -- "$f" "${f%.tsx}Icon.tsx"; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment