Comandos mais usados no ShellScript

.

Comandos mais usados em Shell Script no Linux

.

Qual é o seu usuário?

.

Se você não tem certeza qual é o seu usuário, use o comando "whoami" sem aspas, para saber.

.

Como o prompt de usuário normal pode ser diferente para cada um, podemos em algum momento usar "prompt$" para indicar o prompt da linha de comando.

.

ESCOLHER O DIRETÓRIO ONDE COLOCAR O SCRIPT

Para que o script possa ser executado de qualquer parte do sistema, mova-o para um diretório que esteja no seu PATH. Para ver quais são estes diretórios, abra agora o terminal pelo menu do sistema e digite o comando:

echo $PATH

.

Se não tiver permissão de mover para um diretório do PATH, deixe-o dentro de seu diretório pessoal ($HOME). Digite no terminal: $HOME

.

CRIAR O ARQUIVO E COLOCAR NELE OS COMANDOS

Abra pelo menu do sistema o editor de texto gedit, pluma, leafpad, mousepad ou outro editor de textos de sua preferência para colocar todos os comandos dentro do arquivo.

.

COLOQUE A CHAMADA DO SHELL NA PRIMEIRA LINHA

A primeira linha do script deve ser:

#!/bin/bash

Para que ao ser executado, o sistema saiba que é o bash quem irá interpretar estes comandos.

.

TORNE O SCRIPT UM ARQUIVO EXECUTÁVEL

Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável:

chmod +x nome-do-teu-shellscript.sh

.

Para permitir que todos os usuários possam executar o script:

chmod a+x nome-do-teu-shellscript.sh

.

EXECUTE O SCRIPT

./nome-do-teu-shellscript.sh (Aqui "./" representa o diretório atual)

/home/seu-usuário/bin/nome-do-teu-shellscript.sh (Aqui informa onde está o script para que o bash execute em outra pasta)

.

BASH EXECUTANDO COMANDOS

Shell script é uma linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, dependendo do interpretador de comandos utilizado.

Um exemplo de interpretador de comandos é o bash, usado na grande maioria das distribuições GNU/Linux.

A maior parte dos usuários classificam shell script como uma linguagem de fácil aprendizagem. O primeiro passo é, saber o que se deseja fazer, então ver qual o código que executa este comando em shell e aí criar, basta escrever o código em algum editor de texto e salvar. Veja só por exemplo, que de tempos em tempos você quer saber informações do sistema, instalar programas, remover programas, converter/alterar arquivos, fazer backups, adicionar informações, remover informações, etc.

.

AGORA ABRE O TERMINAL E DIGITA COMANDOS, POR EXEMPLO, DIGITE ESTES COMANDOS ABAIXO UM DE CADA VEZ:

echo

ls

echo ''

echo ""

echo "Olá!"

printf 'Bem vindo ao bash!' (Aperte a tecla enter e digite: ls)

echo '#!/bin/bash'

echo "#!/bin/bash"

echo ; echo "Olá!" ; echo

echo -e 'Bom\nDia\nMundo!'

echo "Hello world!"

echo "Hello "world"!"

echo "Hello \"world\"!"

printf "Hello world" (Aperte a tecla enter e digite: cd ~)

pwd

ls -t

sleep 7

echo ; echo 'Olá!' ; sleep 3 ; ls -t

free -h -t

free -th

sleep 4

date

cal

du -h

uptime

df -h

clear

free -tmlh

df -a -h

df -k -l

df -T -m

echo ; whoami ; echo

ls ; echo ; pwd ; echo

echo ; ls -at ; echo

du *

ls -lah

du -hcs

du -ach

du -Sh

du -Sk

clear

echo ; echo 'df: Relata o espaço de disco usado pelo sistema (Usado e Livre)' ; echo

ls -hat

echo ; echo "du: Relata o espaço utilizado no disco de tal arquivo ou diretório" ; echo

whereis bash

VALOR="Linux"

echo $VALOR

echo $VALOR $VALOR

VALOR='ls -t'

$VALOR

echo $VALOR

VALOR='free -h -t'

$VALOR

echo $VALOR

echo VALOR

read VALOR (aperte a tecla enter, digite: "ls" sem aspas e aperte enter.)

$VALOR

read VALOR (aperte a tecla enter, digite: "uptime" sem aspas e aperte enter.)

$VALOR

echo ; $VALOR ; echo ; $VALOR ; echo

echo ; $VALOR ; sleep 4 ; echo ; $VALOR ; echo

unset VALOR

echo ; $VALOR

$VALOR

clear

echo -e '\nOlá!\nVamos\nSaber\nOs\nComandos\ndo\nShellscript Linux!'

clear ; echo -e '\n \nOlá!\n \nVamos\n \nSaber\n \nOs\n \nComandos\n \ndo\n \nShellscript Linux!\n'

HOJE=$(lsblk)

echo "Informação sobre dispositivos de bloco: $HOJE"

unset HOJE

echo $HOJE

echo $((2*3))

echo $((2*4-2/2+3))

VALOR=44

echo $((VALOR*1))

echo $((VALOR*2))

echo $((VALOR*3))

VALOR=$((VALOR+1))

echo $VALOR

VALOR=$((VALOR+11))

echo $VALOR

VALOR=$((VALOR+1))

echo $VALOR

VALOR=$((VALOR+11))

echo $VALOR

unset VALOR

echo $VALOR

VALOR=$(uname -a)

echo $VALOR

HOJE=$(arch)

echo $HOJE

echo "Informação sobre o kernel: $VALOR" ; echo ; echo "Informação sobre a arquitetura do sistema: $HOJE"

echo 'Informação sobre o kernel: $VALOR' ; echo ; echo 'Informação sobre a arquitetura do sistema: $HOJE'

unset VALOR

unset HOJE

echo "Informação sobre o kernel: $VALOR" ; echo ; echo "Informação sobre a arquitetura do sistema: $HOJE"

echo 'Informação sobre o kernel: $VALOR' ; echo ; echo 'Informação sobre a arquitetura do sistema: $HOJE'

printf "%-5s %-10s %-4s\n" No Nome Pontos

printf "%-5s %-10s %-4.2f\n" 1 Marta 8

printf "%-5s %-10s %-4.2f\n" 2 Joel 9

printf "%-5s %-10s %-4.2f\n" 3 Carlos 7

clear

exit

.

Muito bom que você digitou um comando de cada vez!!!

O comandos mais longos pode copiar e colar no terminal se quiser, mas no início seria melhor digitar...

Saiba que a partir deste momento você já está entendendo coisas extremamente úteis para escrever shellscript usando o Bash!

Uma coisa interessante sobre os comandos acima, é que para estudar eles, você não precisa estar conectado a internet.

Os comandos acima oferecem informações interessantes e úteis. Podemos colocar todos eles em um só script e executar. Dependendo do caso, é mais fácil que digitar um a um de cada vez toda vez que precisar.

.

SE PUDER, ANTES DE CONTINUAR EXECUTE OS COMANDOS ACIMA QUE TE CHAMARAM MAIS A ATENÇÃO DE NOVO POIS, EXECUTAR ELES É MUITO DIDÁTICO. NADA MELHOR QUE APRENDER PRATICANDO.

.

ASPAS SIMPLES ' E ASPAS DUPLAS ":

Aspas duplas permitem interpretar caracteres especiais.

Aspas simples desabilitam esta interpretação.

.

CARACTERES DE ESCAPE:

echo "Hello \"world\"!"

.

TODO SCRIPT ESCRITO PARA RODAR NO BASH COMEÇA COM:

#!/bin/bash

Após "#!/bin/bash" de um espaço entre linhas e então pode começar a digitar comandos.

.

Exemplo:

#!/bin/bash

clear

echo ; date ; echo ; sleep 4

echo ; cal ; echo ; sleep 4

echo ; uptime ; echo ; sleep 4

echo ; df -h ; echo ; sleep 4

echo ; free -html ; echo ; sleep 4

echo ; whoami ; echo ; sleep 4

echo ; pwd ; echo ; sleep 4

echo ; ls -at ; echo ; sleep 4

echo ; whereis bash ; echo ; sleep 4

echo ; echo 'Este é o fim do script 01-script.sh' ; echo ; sleep 4

exit

# Fim do script

.

ESTE SCRIPT ÚTIL E INOFENSIVO ACIMA SERÁ SALVO NA PASTA HOME, A PASTA DA CASINHA, USANDO UM EDITOR DE TEXTO COM O NOME DE:

01-script.sh

.

Posso melhorar/tornar mais amigável este script acima explicando sobre cada comando:

#!/bin/bash

clear

echo ; echo 'Hoje é data:' ; echo ; sleep 2

echo ; date ; echo ; sleep 4

echo ; echo 'Hoje pelo calendário é:' ; echo ; sleep 2

echo ; cal ; echo ; sleep 4

echo ; echo 'Esta máquina está funcionando a:' ; echo ; sleep 2

echo ; uptime ; echo ; sleep 4

echo ; echo 'Sobre o tamanho desta pasta:' ; echo ; sleep 2

echo ; df -h ; echo ; sleep 6

echo ; echo 'Sobre a memória RAM:' ; echo ; sleep 2

echo ; free -html ; echo ; sleep 6

echo ; echo 'Você está logado como:' ; echo ; sleep 2

echo ; whoami ; echo ; sleep 4

echo ; echo 'Você está em:' ; echo ; sleep 2

echo ; pwd ; echo ; sleep 4

echo ; echo 'Neste diretório/pasta tem:' ; echo ; sleep 2

echo ; ls -at ; echo ; sleep 6

echo ; echo 'O Bash está em:' ; echo ; sleep 2

echo ; whereis bash ; echo ; sleep 4

echo ; echo 'Este é o fim do script 01-script.sh' ; echo ; sleep 4

exit

# Fim do script

.

No Linux o script deve ter permissão de execução, isto pode ser feito abrindo o terminal pelo menu do sistema e executando o comando:

chmod +x 01-script.sh

.

Depois de salvo você tem que executar o arquivo, dessa forma:

./01-script.sh

.

Viu alguma utilidade neste pequeno script?

Então siga adiante.

.

IMPORTANTE:

Para estudar shell script tem que ser como usuário normal. Se você está acessando o sistema como usuário administrador (root), saia e entre como um usuário normal. É muito perigoso estudar shell usando o superusuário, você pode danificar o sistema com um comando errado.

Ok, continuemos.

.

Para exibir um manual do bash ou mesmo do comando 'chmod', digite na linha de comando:

man bash

man chmod

.

É possível executar o arquivo mesmo sem modificar a permissão de execução, por exemplo, se for um arquivo escrito para ser executado pelo bash, usar:

sh ./"Nome do arquivo, sem aspas"

.

SHELL

É importante saber o que é um Shell.

Na linha de comandos de um shell, podemos utilizar diversos comandos um após o outro, ou mesmo combiná-los numa mesma linha.

Se colocarmos diversas linhas de comandos em um arquivo texto simples, teremos em mãos um Shell Script, ou um script em shell, já que Script é uma descrição geral de qualquer programa escrito em linguagem interpretada, ou seja, não compilada.

Outros exemplos de linguagens para scripts são o PHP, Perl, Python, JavaScript e muitos outros. Podemos então ter um script em php, um script perl e assim em diante.

Uma vez criado, um ShellScript pode ser reutilizado quantas vezes for necessário.

Seu uso, portanto, é indicado na automação de tarefas que serão realizadas mais de uma vez.

Todo sistema Unix e similares são repletos de scripts em shell para a realização das mais diversas atividades administrativas e de manutenção do sistema.

Os arquivos de lote (batch - arquivos *.bat) do Windows são também exemplos de ShellScripts, já que são escritos em linguagem interpretada e executados por um Shell do Windows, em geral o command.com ou hoje em dia o cmd.exe.

Os Shells do Unix, porém, são inumeras vezes mais poderosos que o interpretador de comandos do Windows, podendo executar tarefas muito mais complexas e elaboradas.

OS SCRIPTS SHELL PODEM SER AGENDADOS PARA EXECUÇÃO ATRAVÉS DA TABELA CRONTAB, ENTRE OUTRAS COISAS.

É uma ferramenta indispensável aos administradores de sistemas Unix.

O Shell mais comum e provavelmente o que possui mais scripts escritos para ele é também um dos mais antigos e simples, o sh.

Este shell está presente em todo o sistema tipo Unix, incluído o Linux, FreeBSD, AIX, HP-UX, OpenBSD, Solaris, NetBSD, Irix, etc. Por ser o shell nativo mais comum é natural que se prefira escrever scripts para ele, tornando o script mais facilmente portável para outro sistema.

Os Shells não estão diretamente associados a um ou outro tipo de Unix, embora várias empresas comerciais tenham suas próprias versões de Shell. No software livre o Shell utilizado em um sistema em geral é exatamente o mesmo utilizado em outro. Por exemplo, o bash encontrado no Linux é o mesmo shell bash encontrado no FreeBSD e pode também facilmente ser instalado no Solaris, Windows através do Cygwin [1] ou outros sistemas Unix comerciais para passar a ser utilizado como interface direta de comandos ou como interpretador de scripts. O mesmo acontece com o tcsh e vários outros shells desenvolvidos no modelo de software livre.

.

INTERAGIR COM O USUÁRIO

.

Para o script ficar mais completo, vamos colocar uma interação mínima com o usuário, pedindo uma confirmação antes de executar os comandos.

.

#!/bin/bash

clear

echo "Vou buscar os dados do sistema. Posso continuar? [S/n] "

read RESPOSTA

test "$RESPOSTA" = "n" && exit

echo ; echo "Data e Horário:" ; echo

date

echo

echo "Uso do disco:" ; echo

df -ht

echo

echo "Usuários conectados:" ; echo

w

echo ; echo "Seu nome de login é:"

whoami

echo

exit

# Fim do script

.

O comando "read" leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando "test" verificou se o conteúdo dessa variável era "n". Se afirmativo, o comando "exit" foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes:

O conteúdo da variável é acessado colocando-se um cifrão "$" na frente

O comando test é útil para fazer vários tipos de verificações em textos e arquivos

O operador lógico "&&", só executa o segundo comando caso o primeiro tenha sido OK. O operador inverso é o "||"

.

MELHORAR O CÓDIGO DO SCRIPT

Com o tempo, o script vai crescer, mais comandos vão ser adicionados e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro. Para poupar horas de estresse, e facilitar as manutenções futuras, é preciso deixar o código visualmente mais agradável e espaçado, e colocar comentários esclarecedores.

.

#!/bin/bash

# nome-do-script - script que mostra informações sobre o sistema

# Autor: Fulano da Silva

# Pede uma confirmação do usuário antes de executar

clear

echo "Vou buscar os dados do sistema. Posso continuar? [S/n]"

read RESPOSTA

# Se ele digitou 'n', vamos interromper o script

test "$RESPOSTA" = "n" && exit

# O date mostra a data e a hora correntes

sleep 3 ; echo "Data e Horário:" ; echo

date

sleep 3

echo

# O df mostra as partições e quanto cada uma ocupa no disco
echo "Uso do disco:"

sleep 3

echo

df

echo

sleep 6

# O w mostra os usuários que estão conectados nesta máquina

echo "Usuários conectados:"

sleep 3

echo

w

sleep 3

echo

# Fim do script

.

Basta iniciar a linha com um "#" e escrever o texto do comentário em seguida. Estas linhas são ignoradas pelo shell durante a execução. O cabeçalho com informações sobre o script e seu autor também é importante para ter-se uma visão geral do que o script faz, sem precisar decifrar seu código. Também é possível colocar comentários no meio da linha # como este

.

CARACTERÍSTICAS

.

OS SCRIPTS SHELL PODEM CONTER ESTRUTURAS DE PROGRAMAÇÃO TAIS COMO:

.

ESTRUTURAS DE DECISÃO (if)

Recurso utilizado para dar sequencia em fluxos de execução baseado decisões. Cuja sintaxe é:

- Condição Verificada é o teste que definirá se controle deve ser passado para dentro do bloco then, observe que esse teste é feito sobre a saída de um comando.
- Ação são comandos a serem executados em caso verdadeiro da condição verificada.

.

OPERADORES PARA NÚMEROS

-eq Verifica se é igual,
-ne Verifica se é diferente,
-lt Verifica se é menor,
-gt Verifica se é maior,
-le Verifica se é menor ou igual,
-ge Verifica se é maior ou igual.

.

OPERADORES PARA TEXTO

!= Verifica se é diferente,
= Verifica se é igual.

.

OPERADORES LÓGICOS

! Lógica NOT,
-o Lógica OU, (OR) ou ||,
-a Lógica E, (AND) ou &&.

.

OPERADOR PARA arquivos/

-d Verifica se é diretório,
-f Verifica se é arquivo,
-e Verifica se existe.

.

Ex:

# !/bin/baxh
# Uso de Estrutura de Decisão
clear

echo 'opções'
echo '======'
echo ' -> Data do Sistema'
echo ' -> Uso do Sistema'

read opcao

if [ "$opcao" -eq 1 ]
then
echo 'Data do sistema: ' && date

elif [ "$opcao" -eq 2 ]
then

echo 'Uso do disco: ' && df -Th
fi

# Fim do script

.

ESTRUTURAS DE REPETIÇÃO (FOR)(WHILE)

.

ESTRUTURA DE REPETIÇÃO FOR

Permite que ações de iteração sejam executadas sobre determinados comandos ou variáveis até que a condição seja satisfeita.

# !/bin/bash

clear

echo "DIAS DA SEMANA"
for dia in seg ter qua qui sex sab dom
do
echo "$dia"
done

# Fim do script

.

ESTRUTURA DE REPETIÇÃO WHILE

Em situações onde sabemos até onde o loop irá realizar uma contagem o ideal é usar o for entretanto em cenarios onde a iteração deve cessar somente após se satisfazer uma condição o uso do laço while é mais indicado. Ex:

# /bin/bash

clear
var=1
while [ $var -le 7 ]
do
echo "Valor de var: $var"
var=$((var+1))
done

# Fim do script

.

FUNÇÕES E ARGUMENTOS

Ex:

# !/bin/bash
# REALIZAR BACKUP DO DIR

echo -e " \033[1;33m Digite o caminho de origem.: \033[0m "
read DIR_ORIGEM

clear

echo -e " \033[1;34m Digite o caminho de destino.: \033[0m "
read DIR_DESTINO

clear

verifica_argumentos(){

if [ $# -lt 1 ];
then
echo "Faltou informar um dos argumentos (parametros) necessarios!"
exit 1
fi
}

copia_arquivos(){

verifica_argumentos

clear

echo "Realizando backup..."

#Verificando se o dir de destino existe

if ! [ -d $DIR_DESTINO ]
then
mkdir $DIR_DESTINO
echo "Diretorio de Destino Criado"
fi

#COPIANDO ARQUIVOS

for arq in `ls $DIR_ORIGEM`
do
cp /$DIR_ORIGEM/$arq $DIR_DESTINO/$arq.bak
done

}

copia_arquivos

# Fim do script

DEFINIÇÕES DE VARIÁVEIS E ESCOPO DESTAS

Variáveis são definidas pela nomenclatura NOME_VARIAVEL="Valor da Variável". O valor pode ser tanto numérico quanto texto.

Nome="Joel"

Se quisermos acessá-la, basta fazer referência a ela com o caractere $ (cifrão) antes do nome: o comando echo $Nome, por exemplo, retornará a palavra "Joel".

Se quiser sabe informações sobre os sistemas de arquivo nos quais cada ARQUIVO reside ou, por padrão, sobre todos os sistemas de arquivos posso abrir um terminal e digitar:

VarInfo="df -h"

Depois digito no terminal "$VarInfo" sem aspas.

.

VARIÁVEIS DE AMBIENTE

As variáveis de ambiente independem da definição do usuario. Elas são criadas automaticamente, no momento em que se faz o login no sistema.

Ex:

PATH: define diretórios de procura por programas executados no shell;
USER: informa o nome do usuário do shell;
HOME: informa o caminho do diretório home do usuário;
PWD: diretório atual;

.

As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante a execução do script serão armazenados. Para definir uma variável, basta usar o sinal de igual "=" e para ver seu valor, usa-se o "echo":

.

Execute estes comandos abaixo no terminal:

.

VARIAVEL="um dois tres"

echo $VARIAVEL

echo $VARIAVEL $VARIAVEL

.

Para remover a variável acima:

unset VARIAVEL

.

Teste:

echo $VARIAVEL

.

É possível armazenar a saída de um comando dentro de uma variável. Ao invés de aspas, o comando deve ser colocado entre "$(...)", execute no terminal os comandos abaixo:

HOJE=$(date)

echo "Hoje é: $HOJE"

unset HOJE

echo $HOJE

HOJE=$(ls)

echo "O conteúdo desta pasta tem: $HOJE"

unset HOJE

echo $HOJE

HOJE=$(free -hmt)

echo "Informando sobre a memória desta máquina: $HOJE"

unset HOJE

echo $HOJE

.

Exemplos de uso do shell script:

Apagar arquivos velhos - Apagar periodicamente arquivos mais velhos que 30 dias do diretório /tmp:

#!/bin/bash

cd /tmp
find . -type f -mtime +30 -delete

# Fim do script

Este seria o conteúdo de um shell script que sempre que fosse executado apagaria arquivos com data de modificação maior que 30 dias a partir do diretório /tmp do sistema de arquivos.

Notem que ele é nada mais do que uma associação de 2 comandos (cd e find) em um arquivo para facilitar a repetição da tarefa. Este poderia ser, por exemplo, o conteúdo do arquivo /bin/limpatmp.sh e poderíamos chamar este script pela linha de comandos sempre que desejássemos repetir esta ação:

$ limpatmp.sh

Onde o símbolo "$" representa o prompt de comandos. Do ponto de vista do usuário este seria mais um comando disponível para uso.

Os scripts em shell são também muito empregados junto à inicialização do sistema (para auto-iniciar tarefas) ou como mini-aplicativos, que facilitam tarefas dos usuários, tais como montagem de dispositivos, menus de ajuda, etc.

Sua primeira linha obrigatoriamente começa com um "#!" (que não se deve confundir com um comentário qualquer, pois realmente é uma exceção; este par se chama, em inglês, de shebang), informando diretamente ao núcleo (kernel) qual interpretador ele deverá usar, juntamente com seu caminho, de acordo com a necessidade de cada caso. Exemplo:

#!/bin/bash

Em seguida, são adicionados os comandos desejados, um por linha, ou separados por ponto e vírgula. Exemplo:

mount -t reiserfs /dev/hda1 /mnt/hda1

ls /mnt/hda1

cp -r /mnt/hda1/* /home/user/backup
umount /dev/hda1

Por fim, dá-se a permissão de execução a este arquivo de texto simples ("chmod +x arquivo").

.

DATA ANTERIOR

.

#!/bin/bash

# Função em Bash para retornar a data anterior, levando em conta o mês e ano.

fn_data_anterior()
{
DIA=$D
MES=$M
ANO=$A

# Dado DIA, MES e ANO numéricos, obtém a data do dia anterior

DIA=`expr $DIA - 1`
if [ $DIA -eq 0 ]; then
MES=`expr $MES - 1`
if [ $MES -eq 0 ]; then
MES=12
ANO=`expr $ANO - 1`
fi
DIA=`cal $MES $ANO`
DIA=`echo $DIA | awk '{ print $NF }'`
fi
}

ano=`date +%Y`;
mes=`date +%m`;
let dia=10\#`date +%d`;

if (( $dia". Para guardar a saída do comando anterior no arquivo "saida", basta fazer:

cat /etc/passwd | grep root | cut -c1-10 > saida

cat saida

.

O COMANDO TEST

O canivete suíço dos comandos do shell é o "test", que consegue fazer vários tipos de testes em números, textos e arquivos. Ele possui várias opções para indicar que tipo de teste será feito, algumas delas:

-lt Núm. é menor que (LessThan)

-d É um diretório

-gt Núm. é maior que (GreaterThan)

-f É um arquivo normal

-le Núm. é menor igual (LessEqual)

-r O arquivo tem permissão de leitura

-ge Núm. é maior igual (GreaterEqual)

-s O tamanho do arquivo é maior que zero

-eq Núm. é igual (EQual)

-w O arquivo tem permissão de escrita

-ne Núm. é diferente (NotEqual)

-nt O arquivo é mais recente (NewerThan)

= String é igual

-ot O arquivo é mais antigo (OlderThan)

!= String é diferente

-ef O arquivo é o mesmo (EqualFile)

-n String é não nula

-a E lógico (AND)

-z String é nula

-o OU lógico (OR)

.

SCRIPT QUE TESTA ARQUIVOS

Tente fazer um script "testa-arquivos", que pede ao usuário para digitar um arquivo e testa se este arquivo existe. Se sim, diz se é um arquivo ou um diretório.

.

CONCEITOS MAIS AVANÇADOS

.

If, for e while

.

Assim como qualquer outra linguagem de programação, o shell também tem estruturas para se fazer condicionais e loop. As mais usadas são if, for e while.

.

Então daqui por diante, sabemos o básico, o necessário para se fazer um script de funcionalidade mínima. E este mínimo pode fazer coisas incríveis.

.

Ex:

if COMANDO
then
comandos
else
comandos
fi

# Fim do script

Ex:

for VAR in LISTA
do
comandos
done

# Fim do script

Ex:

while COMANDO
do
comandos
done

# Fim do script

.

Diferente de outras linguagens, o if testa um comando e não uma condição. Porém como já conhecemos qual o comando do shell que testa condições, é só usá-lo em conjunto com o if. Por exemplo, para saber se uma variável é maior ou menor do que 10 e mostrar uma mensagem na tela informando:

.

Ex:

if test "$VARIAVEL" -gt 10
then
echo "é maior que 10"
else
echo "é menor que 10"
fi

# Fim do script

.

Há um atalho para o test , que é o comando [. Ambos são exatamente o mesmo comando, porém usar o [ deixa o if mais parecido com o formato tradicional de outras linguagens:

.

Ex:

if [ "$VARIAVEL" -gt 10 ]
then
echo "é maior que 10"
else
echo "é menor que 10"
fi

# Fim do script

.

Se usar o [, também é preciso fechá-lo com o ], e sempre devem ter espaços ao redor. É recomendado evitar esta sintaxe para diminuir suas chances de erro.

.

Já o while é um laço que é executado enquanto um comando retorna OK. Novamente o test é bom de ser usado. Por exemplo, para segurar o processamento do script enquanto um arquivo de lock não é removido:

.

Ex:

while test -f /tmp/lock
do
echo "Script travado..."
sleep 1
done

# Fim do script

.

Ex:

E por fim, o for percorre uma lista de palavras, pegando uma por vez:

for numero in um dois três quatro cinco
do
echo "Contando: $numero"
done

# Fim do script

.

Uma ferramenta muito útil para usar com o for é o seq, que gera uma seqüência numérica.

.

Para fazer o loop andar 10 passos, pode-se fazer:

for passo in $(seq 10)

.

O mesmo pode ser feito com o while, usando um contador:

i=0
while test $i -le 10
do
i=$((i+1))
echo "Contando: $i"
done

# Fim do script

.

Até Breve

.

.

🙂

.

Resumo semanal 2017 – semana 41 e alguns extras — Mageia Blog (Português)

Caldeirão As propostas de recursos da Mageia 7 estão sendo discutidas, mais, já que algumas delas são muito grandes e trarão grandes mudanças na distribuição e instalador, o escopo do trabalho e a análise dos recursos e cronogramas necessários é um grande trabalho. Os dois principais estão se movendo mais para manatools e integrando o…

via Resumo semanal 2017 – semana 41 e alguns extras — Mageia Blog (Português)

Magéia – Anotações – Comandos – Pós-Instalação

2017

.

Anotação – Aprendizado – Pesquisa – Magéia – Pós – Instalação

.

Uso este tutorial por mina conta e risco.

.

O Magéia é uma incrível distribuição linux. Usa interface Gnome, Mate, Cinammon…

.

O curioso do Magéia entre muitas de suas peculiaridades, é que esta Distro, parace que é renovada sempre uma vez por ano e, o tempo de suporte de cada distro lançada era para ser de um ano também.

.

Para atualizar para a próxima distro, acho que, live-dvds não servem.

.

Acho que tem que atualizar instalando o Magéia pelo DvD instalação clássica, talvez possua uns 4 GB e, após a instalação o sistema está pronto para ser usado.

.

Até um tempo atrás podia afirmar que os live DvDs tinham 1.7 GB, podiam dar erro em certas máquinas e, após instalados, estavam sem Codec para vídeo e áudio.

.

O usuário recebia pela atualização automática, mas, antes devia escolher os repositórios do Magéia que desejava assim podendo ter; acesso a inúmeros programas que vem em pacotes e o sistema instala.

.

O lance era, quais repositórios escolher?

.

Quem escolhia repositórios errados obtinha atualizações erradas e o sistema dava erro.

.

Magéia comandos 1

.

Bug primeiro:

O NetworkManager pode não iniciar automaticamente com o boot. Para habilitá-lo execute o comando como root/administrador:

# systemctl enable NetworkManager.service

.

Começando…

.

Magéia – urpmi – Comandos básicos no Mageia Linux

.

Apesar de podermos fazer, praticamente, tudo graficamente pelo CCM (Cento de Controle Mageia), mas demora mais que pelo terminal, passarei alguns básicos usando o urpmi, para aqueles que gostam da rapidez do terminal/Konsole.

.

O urpmi está para o Mageia, assim como o apt-get está para o Debian/Ubuntu.

Sendo assim, aqui estão alguns comandos básicos, mas…

.

Primeiro acrescente os repositórios usando a tela de apresentação inicial do desktop: bem vindo ao Magéia.

.

Repositórios corretos:

.

Core Release

Core Updates

Non-free Release

Non-free Updates

on a 64 bit installation you should also have

Core 32bit Release

Core 32bit Updates

Non-free 32bit Release

Non-free 32bit Updates

.

O comando do Magéia é: urpm, urpmi sempre urpm e mais alguma coisa.

.

Primeiro comando:

# urpmi.update -a && urpmi --auto-update && urpmi.update update

.

Magéia comandos básicos

.

1. Atualizar repositórios (equivale ao apt-get update):

# urpmi.update -a

.

2. Instalar um programa (equivale ao apt-get install):

# urpmi nome-do-programa

.

3. Remover um programa (equivale ao apt-get remove):

# urpmi nome-do-programa

.

4. Atualizar pacotes/programas (equivale ao apt-get upgrade):

# urpmi --auto-update

.

O uso do terminal/Konsole tem a vantagem de executar estas tarefas mais rapidamente que o CCM.

* Lembre-se que deverá estar logado como root para usar estes comandos!

.

# urpmi.update -a && urpmi --auto-update && urpmi.update update

.

Linux: Comandos básicos do urpmi no Mageia Linux

.

comando --help

.

comando help do terminal

urpmi --help

urpme --help

.

atualizar o sistema

urpmi.update update

.

atualizar tudo

urpmi.update -a

.

Instalo programas:

.

urpmi nome do programa

.

Vou instalar alguns programas:

# urpmi pychess preload docky fbreader youtube-dl uget deluge transmission

.

serão 65MB de download.

.

Remover programa

urpme nome do programa

.

procurar pacotes

urpmq -i nome do pacote

.

# urpmi.update -a && urpmi --auto-update && urpmi.update update

.
Interface de linhas de comando

.

The command line interface of urpmi is subdivided into the following basic commands:

.

Commando Descrição

.

urpmi Install or update a package

urpme Remove a package

urpmq Search for packages or information about packages

urpmf Search for packages which contain a given file

urpmi.update Update a repository/medium i. e. update the list of available packages on the local system

urpmi.addmedia Add a new repository/medium to the local system

urpmi.removemedia Remove a repository/medium from the local system

.

Navegação pelo sistema de Arquivos

It is of course possible to use the console as a file manager (like Dolphin, Nautilus or Thunar). A console opens in the folder /home/.

.

pwd (Print working directory) -> to know where you are

cd (Change directory) -> to go elsewhere. Example: cd /home//Documents/linux. This example is called an absolute path, it starts at /. If you are in /home/, you can more simply write cd Documents/linux. It is called a relative path, it starts where you are. (take care to the case !)

cd .. -> to go in the parent directory

ls -lh -> to list what is in the directory. The rights are given in the first column, if they start with a “d”, that means it is a directory. Columns 3 and 4 are the owner and the group owner names, then the size, the last saving date and the file name.

Example:
CommandLine5.png

.

Simple commands to know my computer

Here are some commands to investigate your computer, they are harmless, use them with user rights.

.
What is my Mageia version ? ->

# cat /etc/release

cat means print and /etc/release is the file-name housing this information.

.
And the Linux one ->

# uname -a

.

Como é usada a memória do meu computador ->

# free

.

What is consuming the computer resources ->

# top

You can see here what are the command (command column) consuming the largest CPU (%CPU column) and memory (%MEM column) resources.

.

This command is always running and updating, use:

Ctrl+C

to stop it.

.
How many bad blocks in my partition ->

# e2fsck -cyv /dev/sdxy

.

Checking for bad blocks (read-only test): done
/dev/sda5: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sda5: ***** FILE SYSTEM WAS MODIFIED *****

99138 inodes used (14.85%, out of 667808)
66 non-contiguous files (0.1%)
48 non-contiguous directories (0.0%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth histogram: 91901/26
1028346 blocks used (38.55%, out of 2667776)
115 bad blocks
1 large file

83802 regular files
8028 directories
1 character device file
0 block device files
0 fifos
1465 links
7298 symbolic links (7202 fast symbolic links)
0 sockets
————
100594 files
[root@localhost ~]#

Last installed packages -> rpm -qa –last. Next page with the Space key, exit with Ctrl+Z

.

Comandos simples para modificar meu computador:

Aviso!

These commands need root rights, thus they may break things if not duly executed as said.

Here are some commands you may be very happy to find if some day your computer doesn’t work properly.

Software management
Delete the sources ->

# urpmi.removemedia -a

Add sources ->

# urpmi.addmedia --distrib --mirrorlist http://mirrors.mageia.org/api/mageia.5.x86_64.list’

you must replace mageia4 by the wanted release and x86_64 by i586 if you use a 32 bits version. Note that Nonfree and Tainted sources are installed and activated.
Update ->

# urpmi --auto-update --auto

(execute twice if used after new sources installation)

Mounting and unmounting

These commands are very useful for example if you try to fix a computer using a Live CD/DVD. You have to mount the folders by hand before being able to have access into it.
Mounting sdb1 into /media -> mount -t ext4 /dev/sdb1 /media. ext4 is the sdb1 format. You may have ext3, vfat (DOS) or ntfs-3g (Windows XP and after).

Mounting a floppy -> mount -t vfat /dev/fd0

Mounting a CDROM -> mount -t iso9660 -r /dev/cdrom

Unmounting -> umount /dev/sdb1. Note there is no n before the m in the command name: umount
Suppose you want to see your USB keys automatically mounted in /media instead of /run/media//, open kwrite and copy paste:

ENV{ID_FS_USAGE}==”filesystem|other|crypto”, ENV{UDISKS_FILESYSTEM_SHARED}=”1″

Save the file in /etc/udev/rules.d/99-udisks2.rules
Others
To change a driver -> See the fifth link in this section: Links

To halt properly the system -> shutdown -h now without reboot, shutdown -r now with reboot.

.

Os repositórios corretos do Magéia

.
Do you have the online software repositories set up correctly?

You can find out if you have the online repositories set up correctly by looking in Mageia Control Centre Drakconf-icon.png -> Software Management -> Configure media sources for install and update, or using this command:

# urpmq --list-media active

That command lists only enabled repositories so you will see more media sources listed in ‘Configure media sources for install and update’ but not activated by default.
This is normal.

.

You should have these activated:

Core Release

Core Updates

Non-free Release

Non-free Updates

on a 64 bit installation you should also have

Core 32bit Release

Core 32bit Updates

Non-free 32bit Release

Non-free 32bit Updates

.

If you wish to use software (such as audio/video codecs) that may be subject to patent claims, activate;

Tainted Release

Tainted Updates

and also on a 64 bit installation:

Tainted 32bit Release

Tainted 32bit Updates

.

Setting up the online sources

If you don’t have the above repositories then you can add them manually by following these steps:
Open the Mageia Control Centre Drakconf-icon.png -> Software Management -> ‘Configure media sources for install and update’.

Now click the Add button on the right hand side.

When asked select Full set of sources in the pop-up window that appears.

Click ‘yes’ when asked if it is OK to contact the Mageia web site to retrieve the mirror list.

Once the process is complete, you can run rpmdrake as described above, and you will have access to a wider range of applications.
Adding a specific Media Mirror

Using the above method will add the repos using the MIRRORLIST, it doesn’t add a single mirror but uses a dynamic way to switch between mirrors depending on:

.
which mirrors are geographically closer to you and which mirrors are faster as the default downloader, aria2, is configured to check for a minimum speed limit

Also using the MIRRORLIST, it downloads, if possible, the same file from three different servers at the same time.

If you’re having trouble using with the MIRRORLIST (e.g. it defaults to a slow or faulty mirror) you can still add a specific media mirror, usually you manually pick up a mirror you know from past experience to be reliable and reasonably up-to-date.

.

To do so follow these steps:

.
Open the Mageia Control Centre Drakconf-icon.png -> Software Management -> Configure media sources for install and update

Now open File -> Add a specific media mirror

When asked select Full set of sources in the pop-up window that appears.

Click ‘yes’ when asked if it is OK to contact the Mageia website to retrieve the mirror list

When the mirror list appears, choose a mirror close to your geographical location (or a mirror you know is reliable).

that’s it, you’ve just added a specific media mirror.

Before making a final choice, it’s advisable to check that the mirror that you are planning to use is up-to-date, using this page: http://mirrors.mageia.org/status
Advanced use: the console software management applications

.

As a complement to the graphical software management applications discussed above, there is a range of console software management applications which share the same software repositories (so you can use either the console applications, the graphical applications, or switch between the two). A full explanation of these applications is outside the scope of this page. More information is available at this page.

Briefly, they consist of:

urpmi

.

urpmi is the software installation tool

.

It must be used with root privileges.

Invoke it simply with urpmi packagename to install a package and all its dependencies.

If you enter an incomplete package name it will perform a search and make suggestions. Another useful command you can use is urpmi –auto-update, which will update the list of available packages from all repositories, and install any available updates.

.

urpme

urpme is the software removal tool. It must be used with root privileges. Invoke it simply with urpme packagename to remove a package and any packages that depend on it. If you enter an incomplete package name it will perform a search and make suggestions.

More about removing packages and their no longer needed dependencies, including a warning about how urpme –auto-orphans can ruin your installation if you don’t take the explained precautions, can be found in Removing packages
urpmq and urpmf

.

urpmq and urpmf are the search tools

They can be used with regular user privileges. Generally speaking, use urpmf to find what package contains a particular file, and urpmq for all other search operations. Called with no parameters, urpmq will search package names. Refer to the man pages for further information.

.

urpmscan and urpmseek: Searching for packages Debian-alike

urpmscan: Create a file called urpmscan with the following content and move it to /usr/bin

#! /bin/bash
urpmf -i –uniq –description “$1” | grep ‘^[[:alnum:]].*:$’ | sed s/\:// | sort

Then,

chmod 755 /usr/bin/urpmscan

Example:

urpmscan streaming

urpmseek:

echo alias urpmseek\=\”urpmf -i –uniq –summary\” >> /etc/bashrc

Example:

bash

And then:

urpmseek streaming

.

urpmi.addmedia and urpmi.removemedia

.

These are the tools for adding and removing software repositories. Refer to the manpage for the necessary parameters. This site will help you generate urpmi.addmedia commands to add commonly used repositories: mirrors list
Advanced use: Backports and candidate updates

There are several official software repositories for Mageia. For a full list and description of all the available repositories see Software management.

The backports repositories contain new versions of packages: updates that are provided simply to keep the package up to date or add new features, rather than to fix bugs or security issues.

The testing repositories contain candidate update packages. When a bug is identified in a package in Mageia, the package maintainer builds a package which should resolve the problem, and uploads it to the appropriate /testing repository (depending on which section the package is in). At this point, users who have experienced the issue can install the candidate update to help test that it truly resolves the problem and does not cause any other problems. They can report their findings to the relevant bug at https://bugs.mageia.org.

If you followed the steps in #Making more applications available above, or added Internet repositories during the installation process, the release and updates repositories for each section will be configured on your system and enabled.

The testing and backports repositories for each section will be configured on your system but disabled (they are disabled by default to ensure you do not install packages from these repositories by accident, since they could potentially not work as well as those from the release and updates repositories). To use these repositories, simply run the Software Media Manager as discussed in #Making more applications available and check the boxes to enable them. We recommend that you do not leave either repository permanently enabled, but enable them if you wish to install a specific package from them, install the package, and then disable them again.

If you choose to enable /backports and/or /testing repositories, you should also update the lists of available software regularly, as the packages in these repositories are updated regularly. You can do this by using the ‘Update media’ option on the ‘File’ menu.
Advanced use: other ways to install software

Occasionally, you may come across an application you wish to run which is not available from any of the official Mageia repositories, or you may have a strong need for a newer version of an application than is available from the official repositories. In these cases, you may wish to use another method of installing software.

.

Warning!

Users finding themselves in this situation are strongly advised not to attempt to install software packages intended for other distributions (such as Fedora or OpenSUSE), or to install software packages intended for a different Mageia release from the one they are using (including cauldron). Installing such packages carries a very high risk of rendering your system unstable or unusable.

.

Third party repositories

You may come across third party package repositories for Mageia, of which there are several. These may carry newer versions of applications than are available in the official repositories, or applications that are not available in the official repositories at all.

In general we advise you to use the official repositories whenever possible, but if you truly need an application or version that is not available from the official repositories, using a third party repository is a safer option than using a package for a different distribution, or installing from source code.

Mageia cannot provide any support for packages provided by third parties: if you encounter problems while using such packages, please request support from the third party provider. We strongly recommend that you first check whether an application is available in the official repositories and if it is, use that package, even if it is not the absolute latest version of the application. Having the latest (perhaps broken) version is not as important as having a package that works. People spent time to check that applications in the official repositories work, and if you find problems, they can be reported to Bugzilla and corrected for everyone. If you need the latest version, it may (or may not for good reasons) be available as a backport, but do not count on it: begin with what’s available and enjoy.
Rebuilding a source RPM from a later Mageia release

If the package or version you require is not available from an official or third party repository for your release of Mageia, but is available in a later release of Mageia (including cauldron), you may try to recompile the source RPM from the later release on your release. You will be able to find the source RPM on any official Mageia mirror, in the /SRPMS subdirectory of the release where the package is available. See the instructions in Packaging for beginners
Installing from source code

If the application or version you require is not available from any official or third party repository, you may be forced to install it by downloading the raw source code, compiling it, and installing it to your system. This is the least preferred method of installing software and should only be used if you have no other option.

.

Até Breve

.

Use este tutorial por sua conta e risco.