-
-
Save reginadiana/9572ceaffb7ee573503140b99cb98681 to your computer and use it in GitHub Desktop.
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:
- Permissões especiais;
- Permissões do dono/usuário quem criou o recurso;
- Permissões do grupo (conjunto de usuários que pertencem ao mesmo grupo do dono);
- 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.
#!/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