Comandos Linux e shell script revisão

Comandos Linux Revisao

---
O que é um sistema operacional? Sempre que você liga o computador, você vê uma tela na qual pode realizar atividades diferentes, como escrever, navegar na Internet ou assistir a um vídeo ele está lá.

O que faz o hardware do computador funcionar assim?

Como o processador do seu computador sabe que você está solicitando a execução de um arquivo mp3?

Bem, é o SISTEMA OPERACIONAL ou o KERNEL que faz esse trabalho. Um kernel é um programa no cerne, na base ou no coração de qualquer sistema operacional que cuida de coisas fundamentais, como permitir que o hardware se comunique com o software. Portanto, para trabalhar no seu computador, você precisa de um sistema operacional (SO). Na verdade, você está usando um enquanto lê isso no seu computador. Agora, você pode ter usado sistemas operacionais populares como Windows, Apple OS X, mas aqui aprenderemos o que é o Linux e quais benefícios ele oferece sobre outras opções de sistemas operacionais. Os benefícios do uso do Linux? O Linux agora desfruta de popularidade em seu auge, e é famoso entre programadores e usuários regulares de computadores em todo o mundo. Seus principais benefícios são:

Oferece um sistema operacional gratuito. Você não precisa desembolsar centenas de dólares para obter o sistema operacional como o Windows!

Sendo de código aberto, qualquer pessoa com conhecimento de programação pode modificá-lo. Os sistemas operacionais Linux agora oferecem milhões de programas/aplicativos para escolher, a maioria deles grátis! Depois de instalar o Linux, você não precisa mais de um antivírus! O Linux é um sistema altamente seguro. Mais ainda, há uma comunidade global de desenvolvimento constantemente procurando maneiras de melhorar sua segurança. A cada atualização, o sistema operacional se torna mais seguro e robusto. O Linux é o sistema operacional preferido para ambientes de servidor devido à sua estabilidade e confiabilidade (megaempresas como Amazon, Facebook e Google usam Linux para seus servidores). Um servidor baseado em Linux pode funcionar sem parar sem reinicializar por anos a fio.

---
A principal vantagem do Linux era que os programadores podiam usar o Linux Kernel para projetar seus próprios sistemas operacionais personalizados. Com o tempo, uma nova gama de sistemas operacionais amigáveis inundou o mundo dos computadores. Agora, o Linux é um dos mais populares e amplamente utilizados Kernel, e é a espinha dorsal de sistemas operacionais populares como Debian, Knoppix, Ubuntu, Solus, Deepin, Mx-Linux e Fedora. No entanto, a lista não termina aqui, pois EXISTEM MILHARES DE SISTEMAS OPERACIONAIS BASEADOS EM LINUX que oferecem uma variedade de funções aos usuários. O Linux Kernel é normalmente usado na combinação do projeto GNU do Dr. Richard Stallman.

TODAS AS DISTRIBUIÇÕES MORDERNAS DO LINUX SÃO NA VERDADE DISTRIBUIÇÕES DO LINUX/GNU.

---
Por que aprender interface de linha de comando? Embora o mundo esteja migrando para sistemas baseados em GUI, a CLI tem seus usos específicos e é amplamente usada em scripts e administração de servidores. Vejamos alguns usos convincentes. Comparativamente, os comandos oferecem mais opções e são flexíveis. Tubulação e stdin/stdout são imensamente poderosos não estão disponíveis na GUI. Algumas configurações na GUI têm até 5 telas de profundidade, enquanto em uma CLI é apenas um único comando. Mover, renomear milhares de arquivos na GUI consumirá muito tempo (usar Control/Shift para selecionar vários arquivos), enquanto estiver na CLI, usar expressões regulares para executar a mesma tarefa com um único comando. A CLI carrega rapidamente e não consome.

---
O grande atrativo do terminal é que, com exceção de alguns poucos aplicativos específicos, os comandos são sempre os mesmos. Isso faz com que ele seja um porto seguro, com o qual você pode contar, sem importar se você está no Ubuntu ou no Slackware. O terminal é também a forma mais natural de "conversar" com o sistema, sempre que você precisa de qualquer coisa fora do comum.

Comandos básicos do Linux/Unix - o gerenciamento de arquivos se torna fácil se você souber os comandos certos. Às vezes, os comandos também são chamados de "programas", pois sempre que você executa um comando, é o código do programa correspondente, escrito para o comando, que está sendo executado. Por exemplo, imagine que você precisa mover todos os arquivos com extensão .jpg de uma pasta com muitos arquivos para outra. Em vez de precisar mover um por um, ou fazer algum malabarismo com a ordem de exibição dos arquivos (para organizar a exibição com base na extensão dos arquivos e poder assim selecionar todos os .jpg com o mouse), você poderia simplesmente abrir o terminal e digitar:

mv *.jpg /outra-pasta

Além dos comandos básicos, dois outros recursos que tornam o terminal tão poderoso são a possibilidade de combinar diferentes comandos para executar tarefas mais complexas (ou filtrar os resultados para localizar informações específicas) e a possibilidade de escrever pequenos programas em shell script.

---
Comandos mais usados para um usuário linux tem a ver com arquivos e sua manipulação. Tudo começa com coisas simples muito importantes. Quais são elas? Se mover pelos diretórios, mover arquivos de um diretório para outro, copiar, recortar, colar, renomear, baixar, converter e sobrescrever. Para isto em grande escala ou em um único arquivo, o terminal do Linux é bastante útil.

1- pwd Diz onde está na árvore de diretórios.
2- cd Permite se mover pelos diretórios, cd .., cd -, cd ~/caminho/para/diretório. cd /usr/local/bin, cd 'dir com espaço'.
3- ls Lista o que existe no diretório, ls -t, ls -lah, ls -R
4- mv Move de um diretório a outro ou renomeia arquivos. Opções: -i, -u, -v
5- cp Copia arquivo, cp -r Copia diretório, cp arquivo_antigo novo_nome_arquivo Renomeia um arquivo substituindo nome antigo por um novo nome. Opções: -i, -n, -u, -R, -v
6- rm -f Remove arquivos, rm -r Remove diretório.
7- rmdir Remove diretório vazio. Opções: -p, -pv (Remove todos os pais e subdiretórios junto com o detalhado).
8- mkdir -p Cria diretórios e subdiretórios. mkdir –p nome_dir/{sub1,sub2,sub3}
9- date Data atual
10- cat Imprime conteúdo de arquivo na tela. cat ~/Documentos/texto_teste.txt. Opções: -b, -n, -s, -E
11- df -h Mostra tamanho, espaço usado e espaço disponível
12- exit Sai do teminal
13- find Encontra arquivos que existem mas não lembra onde os colocou. find . -name *nomedoarquivo* , find . -type f -name *nomedoarquivo*
12- finger
13- free -h
14- grep Este comando é usado para procurar uma sequência/palavra específica em um arquivo de texto. É semelhante a "Ctrl + F", mas executado via CLI. Opções: -i, -n, -v, -c
15- egrep (grep -E)
16- head
17- tail
20- history
21- kill
22- less
23- man
24- clear Limpa a tela do terminal
25- sort Este comando classifica os resultados de uma pesquisa alfabética ou numericamente. Arquivos, conteúdo e diretórios podem ser classificados usando este comando. Opções: -r, -f, -n.
26- tar Compacta arquivos em formato .tar. Exemplo: tar -cvf nome_do_arquivo_tar diretório_a_ser_compactado
27- touch Cria arquivo, modifica horário de acesso a arquivo. Comando: touch texto_teste.txt Cria arquivo chamado: texto_teste.txt

---
Existem muitos outros comandos, saber sobre eles depende quais o usuário necessita usar diariamente.

---
Comandos mais usados em Shell Script no Linux? São muitos e podem ser combinados de diversas maneiras. Um usuário que escreve scripts em sua casa necessita saber quais comandos para evoluir em seus estudos rotineiros?
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.

---
Os shell scripts mais comuns são invólucros simples em torno dos binários de terceiros ou do sistema. Um wrapper (invólucro, embrulho) nada mais é do que um script de shell, uma função de shell ou um alias que inclui um comando ou utilitário do sistema.

---
COLOQUE A CHAMADA DO SHELL NA PRIMEIRA LINHA. A primeira linha do script deve ser:

#!/usr/bin/env 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):

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

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

chmod +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 (cada linha é um comando):

echo
ls
echo 'ls é Listar arquivos'
echo ''
echo ""
echo "Olá!"
printf 'Bem vindo ao bash!' (Aperte a tecla enter e digite: ls)
echo '#!/bin/bash'
echo "#!/usr/bin/env 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 -sch
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
touch Meu_Arquivo.txt
ls -t
ls -t | head
pwd
rm -f Meu_Arquivo.txt
ls -t
echo 'Cadê Meu_Arquivo.txt?'
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

---
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 " (as duas são úteis em determinadas circunstâncias). 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 OU #!/usr/bin/env bash

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

---
Exemplo:

#!usr/bin/env bash

# Este é um comentário!
# Em bash shell scripts não recomendam usar
# ponto e vírgula para separar comandos.
# Mas acontece dos primeiros scripts serem assim.
# Sem variáveis, sem declarações ou comparações; apenas comandos.

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 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:

1) bash meu_script.sh
2) sh 'nome_do_arquivo_sem_aspas'
3) ./'nome_do_arquivo_sem_aspas'
---

SHELL - É importante saber o que é Shell? O shell do Linux é o Bash. A shebang do shell script é #!/usr/bin/env bash. Os comandos do Linux são executados no Bash. Na linha de comandos de um shell, podemos utilizar diversos comandos um após o outro, ou mesmo combiná-los numa mesma linha embora isto não seja o mais recomendado. 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/Linux 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.

---
#!/usr/bin/env bash

#################

# isto é um comentário
# comentários são ignorados pelo script
# servem para ajudar e informar o programador

#################

# limpa a tela
clear

# imprime pergunta na tela
echo "Vou buscar os dados do sistema. Posso continuar? [S/n] "

# armazena resposta
read RESPOSTA

# testa a resposta e executa
test "$RESPOSTA" = "n" && exit

# imprime informação na tela
echo ; echo "Data e Horário:" ; echo

# comando mostra data
date

# espaço entre linhas
echo

# imprime informação na tela
echo "Uso do disco:"

# espaço entre linhas
echo

# comando informa uso de espaço em disco
df -ht

# espaço entre linhas
echo

# imprime informação na tela
echo "Usuários conectados:"

# espaço entre linhas
echo

# comando w
w

# espaço entre linhas
echo

# imprime informação na tela
echo "Seu nome de login é:"

# comando whoami
whoami

# espaço entre linhas
echo

# comando para sair
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:

1) O conteúdo da variável é acessado colocando-se um cifrão "$" na frente
2) O comando test é útil para fazer vários tipos de verificações em textos e arquivos
3) 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

---

Para fazer uma pergunta direta (que é o formato mais simples), usamos o comando "read ", que lê uma resposta e a armazena em uma variável. Quase sempre ele é usado em conjunto com o "echo", que permite escrever texto na tela, fazendo a pergunta, como em:

#!/usr/bin/env bash

echo "Digite a URL do arquivo a baixar"
read arquivo
wget -c $arquivo

# fim do script

---
Com estes três comandos, criamos um gerenciador de downloads primitivo, que pede a URL do arquivo (que você poderia colar no terminal usando o botão central do mouse) e faz o download usando o wget, que é um gerenciador em modo texto, muito usado em scripts. A URL digitada é armazenada na variável "arquivo", que pode ser usada ao longo do script. Ao usá-la, é necessário incluir um "$", que faz com que o shell entenda que se trata da variável "arquivo" e não de um trecho de texto qualquer. Quando o script fosse executado, o "wget -c $arquivo" seria transformado em algo como: "wget -c http://gdhpress.com.br/arquivo.zip", iniciando o download. O "-c" é uma opção para o wget, que faz com que ele continue o download caso interrompido. Se você pressionasse "Ctrl+C" durante o download para encerrar o script e o executasse novamente, fornecendo a mesma URL, ele continuaria o download de onde parou.

---
USAR O COMANDO/PROGRAMA DIALOG NOS BASH SHELL SCRIPTS:

O dialog é muito fácil de usar. Se você tem o teclado à mão, aqui está um exemplo de uma linha de uma caixa de mensagem que você pode tentar.
Cole este exemplo no terminal:

dialog --title 'Message' --msgbox 'Olá, Mundo!' 5 20

Depois tecle Enter, digite: clear e tecle Enter. Este exemplo cria uma caixa de mensagem com o título "Mensagem", contendo a saudação "Olá, mundo!". A caixa tem 5 linhas de altura e 20 caracteres de largura, com a mensagem bem centralizada na caixa. Um botão "OK" aparece na parte inferior; pressionar dispensa o menu. Tipos de caixas de diálogo - a maioria das chamadas para caixas de diálogo tem um formato semelhante: um título opcional, o tipo de caixa de diálogo, o texto a ser exibido e a altura e largura (em caracteres) da caixa de diálogo. Seguem parâmetros adicionais específicos para cada tipo de menu. Vamos dar uma breve olhada em cada um dos tipos disponíveis. O menu "yesno" é muito semelhante ao nosso primeiro exemplo:

dialog --title "Message" --yesno "Você está se\ divertindo?" 6 25

Escolha sim ou não. Depois tecle Enter, digite: clear e tecle Enter. Se você tentar este exemplo, verá que agora existem dois botões na parte inferior, rotulados como "Sim" e "Não". Você pode selecionar entre os botões usando as teclas do cursor (ou ) e fazer sua seleção pressionando . O status de saída retornado ao shell será 0 se "Sim" for escolhido e 1 se uma seleção "Não" for feita. Você pode tentar experimentar os parâmetros de altura e largura. Se a largura for menor que o comprimento da string, ela será quebrada (nos limites da palavra). Se você tornar a caixa de diálogo muito pequena, os caracteres serão perdidos. Anteriormente, vimos a caixa de mensagem. A "caixa de informações" é semelhante, exceto pelo fato de não esperar o usuário selecionar um botão "OK". Isso é útil para exibir uma mensagem enquanto uma operação está em andamento. Aqui está um exemplo:

dialog --infobox "Favor esperar" 10 30 ; sleep 4

A "caixa de entrada" permite que um usuário insira uma string. As teclas de edição habituais podem ser usadas e o campo de texto rola, se necessário. Depois que o usuário digita os dados, eles são gravados no erro padrão (ou mais comumente redirecionados para um arquivo como neste exemplo):

dialog --inputbox "Digite seu nick:" 8 40 2>answer

dialog --inputbox "Digite seu nome:" 10 40 2>nome.txt (Joga a resposta para um arquivo chamado nome.txt)

---
Dialog exemplo de mensagem:

dialog --title Information[!] --msgbox "Esta é uma menssagem informativa." 10 50

---
Dialog tem certeza que...

dialog --title "Confirmation" --yesno "Deletar mesmo este arquivo?" 10 40

---
Pega um nome de arquivo como parâmetro:

dialog --textbox /etc/profile 22 70

---
Imagine que você está fazendo um script conversor de vídeos, que é capaz de gerar arquivos em quatro diferentes formatos. O script começa perguntando qual formato usar e, de acordo com a resposta, executa os comandos apropriados para fazer a conversão. Para simplificar, vamos fazer com que o script simplesmente converta todos os arquivos dentro do diretório atual, em vez de perguntar quais arquivos converter ou de exibir uma caixa de seleção. A parte da pergunta poderia ser feita com o "echo", como no exemplo anterior. Como agora são várias linhas de texto, usei aspas simples ( ' ) em vez de aspas duplas. As aspas simples permitem que você inclua quebras de linha e caracteres especiais dentro do texto, fazendo com que o shell simplesmente escreva tudo literalmente:

#!/usr/bin/env bash

echo ' Escolha o formato de saída:
1) MPEG4, 320x240 (vídeos no formato 4:3)
2) MPEG4, 320x176 (vídeos em formato wide)
3) Real Player, 320x240 (vídeos no formato 4:3)
4) Real Player, 320x176 (vídeos em formato wide)
(Responda 1, 2, 3 ou 4, ou qualquer outra tecla para sair)'

read resposta

---
No final deste trecho, teríamos a variável "resposta", que armazenaria um número de 1 a 4. Precisamos agora fazer com que o script decida o que fazer de acordo com a resposta.

O jeito mais simples de fazer isso seria simplesmente colocar um bloco com 4 comandos "if " (se), um para cada possibilidade. Cada "if" é sempre acompanhado por um "then " (então) e um "fi " (fim do se), como em:

if [ "$resposta" = "1" ]; then
[comandos ...]
fi

if [ "$resposta" = "2" ]; then
[comandos ...]
fi

if [ "$resposta" = "3" ]; then
[comandos ...]
fi

if [ "$resposta" = "4" ]; then
[comandos ...]
fi

---
Uma forma mais elegante (e mais à prova de falhas), seria usar o "elif " (que poderia ser traduzido para "senão se") e o "else " (senão), como em:

if [ "$resposta" = "1" ]; then
[comandos ...]

elif [ "$resposta" = "2" ]; then
[comandos ...]

elif [ "$resposta" = "3" ]; then
[comandos ...]

elif [ "$resposta" = "4" ]; then
[comandos ...]
else

echo "Você digitou uma opção inválida. O script termina aqui."
fi # Fechamento do if

---
Como pode ver, ao usar o elif você não precisa mais incluir um "fi" para cada possibilidade. Outra vantagem é que você pode agora incluir um "else" no final, que faz com que o script responda com uma mensagem de erro ao receber alguma resposta que não estava esperando. Dentro de cada uma das condições, você incluiria um bloco de comandos destinado a gerar os arquivos convertidos com os parâmetros correspondentes, como em:

if [ "$resposta" = "1" ]; then
for i in *; do
mencoder -oac mp3lame -lameopts cbr:br=128 -ovc lavc -lavcopts \
vcodec=mpeg4:vbitrate=512 -ofps 16 -vf scale=320:176 -o "c-$i"
"$i"
done
elif [ "$resposta" = "2" ]; then
[o resto do script...]

---
Esse comando gigante que se esparrama pela terceira e a quarta linha é um comando de conversão do mencoder (um pequeno utilitário de conversão de arquivos de mídia em modo texto, que é bastante flexível), que gera um arquivo de vídeo otimizado para ser assistido em smartphones. Esse é o tipo de comando que é longo demais para ser escrito manualmente, mas que pode perfeitamente ser usado através de um script. Veja que a variável "i" é usada no final da quarta linha, para indicar o nome do arquivo. O "c-$i" "$i" faz com que o script adicione o prefixo "c-" no nome dos arquivos convertidos, permitindo que eles sejam incluídos na pasta sem apagar os arquivos originais. O comando do mencoder é colocado dentro de outra condicional, agora usando o "for " (enquanto), que permite que o script execute um conjunto de comandos repetidamente. No exemplo, ele é usado para fazer com que o comando de conversão do mencoder seja executado uma vez para cada arquivo dentro da pasta. Ao ser executado, a variável "i" (poderia ser qualquer outro nome) recebe o nome do primeiro arquivo, o que faz com que ele seja convertido. Ao chegar no "done", o interpretador volta à linha inicial e a variável "i" recebe agora o nome do segundo arquivo. O processo é então repetido para cada um dos arquivos da pasta, até o último (a lista dos arquivos a converter é gerada pelo interpretador no início do script, por isso não existe o risco do conversor ficar em loop). O "for i in *; do" poderia ser traduzido como "para cada arquivo dentro da pasta atual, execute".

---
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.

---
Exemplo:

# !/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. Exemplo:

# /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

---
Uma prática um pouco mais avançada é o uso de funções. Elas permitem que você crie blocos de código destinados a executarem tarefas específicas que podem ser usados ao longo do script. Em outras palavras, as funções são pequenos scripts dentro do script. A grande vantagem de criar funções (em vez de simplesmente repetir os comandos quando precisar) é que, ao atualizar o script, você precisa alterar apenas um bloco de comandos, em vez de precisar procurar e alterar os comandos manuais em vários pontos do script. Por permitirem reaproveitar o código, as funções fazem com que o script seja mais organizado e fique com menos linhas, o que facilita muito a manutenção em scripts complexos.

---
msgerro()
{
echo "Algo deu errado durante a conexão. O erro foi:"

echo "$msg"
}

---
Veja que a função começa com uma declaração ("msgerro()"), onde você especifica um nome e adiciona o "()", que faz com que o sistema entenda que se trata de uma função e não de um outro bloco de comandos qualquer. Os comandos são, em seguida, colocados dentro de um par de chaves ( { .... } ), que indicam o início e o final. A partir daí, você pode executar os comandos dentro do script chamando o nome da função (msgerro), como se fosse um comando qualquer.

---
Ex:

#!/usr/bin/env bash

###############

# REALIZAR BACKUP DO DIR

###############

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

clear

# -------------------------- # Este é um comentário que serve pra organizar

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

clear

verifica_argumentos(){ # O nome da função é: verifica_argumentos

if [ $# -lt 1 ];
then

echo "Faltou informar um dos argumentos (parametros) necessarios!"

exit 1

fi

}

# -------------------------- #

copia_arquivos(){ # O nome da função é: 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 # Chama a função pelo nome dela

# 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<10 ));
then
j=0$dia;
else
j=$dia;
fi
dia=$j;
j="";

D=$dia
M=$mes
A=$ano

fn_data_anterior

echo $DIA $MES

# fim do script

---
DETALHES SOBRE OS COMANDOS - Diferente de outras linguagens de programação, o shell não usa os parênteses para separar o comando de seus argumentos, usa sim o espaço em branco. O formato de um comando é sempre:

COMANDO + OPÇÕES + PARÂMETROS

O "read" é um comando do próprio shell, já o "date"" é um executável do sistema. Dentro de um script, não faz diferença usar um ou outro, pois o shell sabe como executar ambos. Assim, toda a gama de comandos disponíveis no GNU/Linux pode ser usada em scripts. Há vários comandos que foram feitos para serem usados com o shell, eles são ferramentas.

---
VEJAMOS ALGUNS DELES:

O comando "cat" mostra o conteúdo de um arquivo. O comando "cat -n sistema" mostra o
nosso script, com as linhas numeradas.

O "-n" é a opção para o comando, que o instrui a
numerar linhas, e "sistema" é o último argumento, o nome do arquivo.

cat (imprime texto)

cat -n, cat -s (comando com opções)

---
cut (Extrai campo)

cut -d -f (comando com opções)

cut -c (comando com opções)

---
date Mostra data as opções são: -d, +'...'

---
find Encontra arquivos, as opções são: -name, -iname, -type f, -exec

---
grep Encontra texto, as opções são: -i, -v, -r, -qs, -w -x

---
head Mostra Início, as opções são: -n, -c

---
printf Mostra texto as opções são: nenhuma

---
rev Inverte texto, as opções são: nenhuma

---
sed Edita texto, as opções são: -n, s/isso/aquilo/, d

---
seq Conta Números, as opções são: -s, -f

---
sort Ordena texto, as opções são: -n, -f, -r, -k -t, -o

---
tail Mostra Final, as opções são: -n, -c, -f

---
tr Transforma texto, as opções são: -d, -s, A-Z a-z

---
uniq Remove duplicatas, opções: -i, -d, -u

---
wc Conta Letras, opções: -c, -w, -l, -L

---
Use "man nome-do-comando" ou "nome-do-comando --help" para obter mais informações sobre cada um deles.

---
O melhor, é que em shell é possível combinar comandos, aplicando-os em seqüência, para formar um comando completo. Usando o pipe "|" é possível canalizar a saída de um comando diretamente para a entrada de outro, fazendo uma cadeia de comandos.

---
Exemplo:

prompt$ cat /etc/passwd | grep root | cut -c1-10
root:x:0:0
prompt$

---
O cat mostra o arquivo todo, o grep pega essa saída e extrai apenas as linhas que contêm a palavra "root" e o cut por sua vez, somente nessas linhas que o grep achou, extrai os 10 primeiros caracteres. Isso funciona como uma estação de tratamento de água, onde ela entra suja, vai passando por vários filtros que vão tirando as impurezas e sai limpa no final. E por fim, também é possível redirecionar a saída de um comando para um arquivo ao invés da tela, usando o operador ">". 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.

---
Base para escrever shell script com if, them, else e fi:

if COMANDO
then
comandos
else
comandos
fi

# fim do script

---
RODO ESTE SIMPLES SCRIPT QUE ESCREVI:

#!/usr/bin/env bash

# nome: if_then_else_fi_scr_contg.sh

contagem=1

if [ $contagem -eq 1 ]
then
echo
echo '*** Listando ***'
echo
ls -t | head
echo
echo '*** Onde estamos ***'
echo
pwd
echo
else
echo '*** Contagem não é 1 ***'
fi

---
Ex:

for VAR in LISTA
do
comandos
done

# fim do script

---
#!/usr/bin/env bash

# nome: exemplo_loop_for_test.sh

for f in .; do
echo '*** Listando ***'
ls -t | head
echo '*** Data atual ***'
date
done

# fim do script

---
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

:)

---

Linux como executar find exec?

Shell do Linux Bash, como executar find -exec?

Não esqueça o ; (ponto e vírgula)

Escape ele com contrabarra

\;

Para evitar que o shell interprete ele.

Ou:

* + (asterisco mais)

Ou:

* {} (asterisco chaves)

POR EXEMPLO, FAÇA BACKUP DEPOIS EXECUTE NO TERMINAL:

1) find . -exec grep firefox {} \;

OU:

2) find . -exec grep firefox {} +

OU:

3) find . -name “*.mp3” -exec mp3gain -a -k {} \;

OU:

4) find . -name “*.mp3” -exec id3convert -s {} \;

O find executará grep e substituirá {} com os nomes de arquivo encontrados.

A diferença entre ; e + é que com “;” um único comando grep para cada arquivo é executado, enquanto que com “+” o maior número possível de arquivos é fornecido como parâmetro para o grep de uma só vez.

Linux aprender comando find para usar em shell scripts

Linux o que é o comando find?

Um dos mais importantes e usados comandos da linha de comando em sistemas operacionais Linux é o find.

Para que serve o comando find?

O find (localização) pode ser usado em várias condições. Posso encontrar arquivos por permissões, usuários, grupos, tipo de arquivo, data, tamanho e outros critérios.

Aprender o comando find?

Para aprender, o modo mais seguro é criar uma pasta na pasta pessoal chamada TESTE. Ela servirá para realizar os estudos. Criar na pasta TESTE arquivos:

texto.txt
Texto.doc
texto
texto4.docx
texto.html
postado.html
musica.mp3
mucic
video.mkv
Video.mp4
video.avi
Video
script.sh
script2.sh
script
img.jpg
imge.png
imagem.jpeg
img
arq.pdf
arquivo.epub
arq
bkp.zip
back.tar
bkp.old.tgz
bkp
teste.txt
test.txt
test
script.c
script2.c
script

Atenção!

1) Não execute nenhum comando como root.

2) Não use sudo em nenhum comando.

3) Tenha backup de todos os seus arquivos. Quem tem 1 backup não tem nenhum.

Para serem localizados pelo comando find usando vários critérios.

Iniciar os estudos.

Encontrar arquivos na pasta onde está é com ponto -name. Exemplo:

find . -name texto.txt

Encontrar arquivos na pasta pessoal:

find ~/ -name Texto.txt

Localizar arquivos usando nome e ignorando maiúsculas e minúsculas:

find . -iname texto.txt

find ~/TESTE/ -iname video.mkv

Encontrar diretórios usando -name:

find ~/ -type d -name TESTE

Encontrar arquivos usando ponto -type f -name:

find . -type f -name bkp*

Encontrar todos os arquivos txt no diretório/pasta/folder TESTE:

find . -type f -name “*.txt”

Encontrar arquivos com permissão 777:

find . -type f -perm 0777 -print

Encontrar arquivos sem permissão 777:

find / -type f ! -perm 777

Localizar todos os arquivos de bit SGID cujas permissões estão definidas para 644:

find / -perm 2644

Encontrar todos os arquivos de conjunto de bits fixos cuja permissão seja 551:

find / -perm 1551

Encontrar todos os arquivos de conjunto SGID:

find / -perm /g=s

Encontrar todos os arquivos executáveis:

find / -perm /a=x

Localizar todos os arquivos de permissão 777 e usar o comando chmod para definir as permissões para 644.

find / -type f -perm 0777 -print -exec chmod 644 {} \;

Encontrar todos os diretórios de permissão 777 e usar o comando chmod para definir as permissões para 755.

find / -type d -perm 777 -print -exec chmod 755 {} \;

Para localizar e remover em TESTE vários arquivos, como .mp3 ou .txt, use.

find . -type f -name “*.txt” -exec rm -f {} \;

OR

find . -type f -name “*.mp3” -exec rm -f {} \;

Encontrar todos os diretórios vazios:

find /tmp -type d -empty

Encontrar todos os arquivos que pertencem ao usuário eu.

find ~/ -user eu

Para encontrar todos os arquivos que pertencem ao grupo Developer no diretório /home.

find /home -group developer

Encontrar todos os .txt do usuário eu na pasta home:

find /home -user eu -iname “*.txt”

Encontrar todos os arquivos modificados 60 dias atras.

find / -mtime 60

Encontrar os modificados 25 dias atrás.

find / -atime 25

Para encontrar todos os arquivos que foram alterados/movido na última 1 hora.

find / -cmin -60

Arquivos trabalhados na última 1 hora.

find / -amin -60

Encontrar arquivos de 50MB

find / -size 50M

Arquivos entre 50 e 100MB

find / -size +50M -size -100M

Encontrar e deletar arquivos de 100MB (cuidado!).

find / -type f -size +100M -exec rm -f {} \;

Encontrar e deletar mp3 com mais de 10MB! mp3 bom pra eu tem de 3 a 5MB. O resto é perda de espaço no HD. Ora, foi pra isto que o mp3 foi criado poxa! Pequeno.

find / -type f -name *.mp3 -size +10M -exec rm {} \;

Linux usar o comando basename de maneira produtiva

O que é basename?

Quando você fornece uma string que contém um nome de arquivo, o caminho completo é removido, o comando basename remove apenas a parte do diretório e retorna apenas a parte do nome de arquivo dessa string.
Também pode remover a extensão do arquivo e retornar apenas o nome do arquivo sem uma extensão.

Exemplos de basename:

1- basename quando não houver extensão de arquivo. Nome de base (basename) remove o caminho e exibe apenas o nome do arquivo. Por exemplo, o nome base de /etc/passwd é “passwd”, como mostrado abaixo.

~:$ basename /etc/passwd
passwd

Mas pode ser absolutamente qualquer coisa! Basename topa tudo!

~:$ basename /canto/passaro
passaro

~:$ basename /canto/passaro/escuro
escuro

~:$ basename /pedra/papel/tesoura
tesoura

Basename topa tudo, mas quando trabalha uma extensão de arquivo tem um algo mais. Quando o nome do arquivo contém uma extensão, o basename remove o caminho e RETORNA O NOME DO ARQUIVO COM A EXTENSÃO. Veja bem isto é importante, vou repetir. O basename RETORNA O NOME DO ARQUIVO COM A EXTENSÃO.

OBS:
Este é um dos motivos para o comando basename ser extremamente útil em shell scripts.

~:$ basename /usr/local/apache2/conf/httpd.conf
httpd.conf

O basename pode também obter apenas o nome de um arquivo sem extensão. Se você deseja obter apenas o nome do arquivo sem a extensão, deve passar a extensão como segundo argumento para o comando basename, como mostrado abaixo. O exemplo a seguir retornará apenas httpd, pois o segundo argumento para o comando basename é .conf

~:$ basename /usr/local/apache2/conf/MeuDiaFeliz.conf .conf
MeuDiaFeliz

~:$ basename qualquer/coisa/babba.bruck .bruck
babba

~:$ basename -s .txt /home/user/data/filename.txt
filename

~:$ basename -s .burro_brabo /saturno/estrela/truta/mula_manca.burro_brabo
mula_manca

Se você fornecer um sufixo que não esteja no final do componente, a saída permanecerá como se não houvesse sufixo.

~:$ basename /dudada/nene/pipopi/gellid.txt pwd
gellid.txt

Com a opção -a, você pode usar vários caminhos ao mesmo tempo.

~:$ basename -a /predio/mato/avenida/caspa.doc /selo/caca/peixe/belko.txt
caspa.doc
belko.txt

Você pode usar a opção de sufixo -s com -a, mas com algumas limitações. Você pode fornecer apenas um sufixo para todos os caminhos de arquivo.

~:$ basename -as .sh /homer/usor/detta/filename1.sh /hoome/usero/dalta/filename2.sh
filename1
filename2

O basename se relaciona bem com os comados dirname e readlink mas só na hora do sufoco a gente dá valor ao basename. Sabia? Nem eu.

Até agora parece que só perdi tempo escrevendo sobre o basename, mas não o subestime. Ele é mais importante do que pensa.

USANDO BASENAME NO BASH SCRIPT

Eu mostrei alguns exemplos do comando basename. Vamos ver alguns exemplos de nome de base nos scripts bash. É aqui que ele mostra seu valor!

Suponha que você tenha uma VARIÁVEL DE CAMINHO DO ARQUIVO e DESEJE ARMAZENAR o NOME DO ARQUIVO do caminho em uma VARIÁVEL.

Poderia ser neste script simples abaixo:

pathname=”~/bin/favoritos/meu_arquivo2.txt”

result=$(basename “$pathname”)

echo $result

Execução:

~:$ pathname=”~/bin/favoritos/meu_arquivo2.txt”
~:$ result=$(basename “$pathname”)
~:$ echo $result
meu_arquivo2.txt

AGORA USA O BASENAME COM O PROPÓSITO DE SUBSTITUIR EXTENSÃO DE ARQUIVOS DE VERDADE.

PRIMEIRO CRIAR UM DIRETÓRIO TESTE. E EXECUTAR O SCRIPT ABAIXO NELE.

Executo no terminal:

cd ; mkdir -pv TESTES/Test2 ; cd TESTES/ ; touch file.txt file.doc file.html ; ls -t

OBSERVE QUE MARQUEI SE É UM ARQUIVO OU NÃO NO SCRIPT BASH PARA QUE ELE NÃO MUDE UM DIRETÓRIO CORRESPONDENTE.

SCRIPT BASENAME COM O PROPÓSITO DE SUBSTITUIR EXTENSÃO DE ARQUIVOS

#!/usr/bin/env bash

# test_basename.sh

for file in *$1; do
if [ -f $file ]; then
mv $file `basename $file .$1`.$2
fi
done

# fim do script

Uso o script acima assim:

1) test_basename.sh txt TxT

2) test_basename.sh doc DOc

3) test_basename.sh html MatildE

Veja só os resultados legais:

TESTES:$ test_basename.sh txt TxT
TESTES:$ ls -t
file.doc file.TxT texto1.TxT Texto3.TxT TEXTO4.TxT
file.html sample.TxT texto2.TxT texto4.TxT Texto3
TESTES:$ test_basename.sh doc DOc
TESTES:$ ls -t
file.DOc file.TxT texto1.TxT Texto3.TxT TEXTO4.TxT
file.html sample.TxT texto2.TxT texto4.TxT Texto3
TESTES:$ test_basename.sh html MatildE
TESTES:$ ls -t
file.DOc file.TxT texto1.TxT Texto3.TxT TEXTO4.TxT
file.MatildE sample.TxT texto2.TxT texto4.TxT Texto3
TESTES:$

ONELINER?

for file in *$1; do; if [ -f $file ]; then; mv $file `basename $file .$1`.$2; fi; done

Linux firefox pela linha de comando

1) Como executar o Firefox a partir da linha de comando?

2) Como executo o navegador Firefox a partir da linha de comando do Linux (prompt do shell)?

Você pode descobrir o caminho completo para o firefox com o seguinte comando de tipo:

type -a firefox

Para abrir o navegador, digite:

firefox

OU

/usr/bin/firefox

Firefox abre uma URL:

/usr/bin/firefox –new-window https://duckduckgo.com/

Abrir firefox em uma nova aba:

firefox –new-tab https://start.duckduckgo.com/

Realizar busca com o Firefox:

/usr/bin/firefox –search “linux top 10 comandos”

Abrir as preferências do Firefox:

/usr/bin/firefox –preferences

Configurar Firefox como browser principal:

/usr/bin/firefox –setDefaultBrowser

Linux o comando basename exemplos

O comando basename exemplos? Comando basename no Linux?

Comando basename – Em sistemas operacionais do tipo Unix/Linux, o comando basename retira informações de diretório e sufixos dos nomes de arquivos.

Nome de base (basename) imprime o nome do arquivo NAME com os principais componentes de diretório removidos. Opcionalmente, também pode remover qualquer sufixo à direita.

Sintaxe: basename [SUFFIX] / basename OPTION … NAME …

Usando o comando basename:

O comando basename pode ser usado facilmente, basta escrever basename, seguido do nome do arquivo ou do nome completo do caminho. onde NAME refere-se ao nome do arquivo ou nome completo do caminho e OPTION refere-se às opções compatíveis com o comando basename e, no caso, se você deseja remover o sufixo de um arquivo, pode dar o nome do arquivo seguido pelo nome do SUFIX que deseja se livrar de.

Exemplos:

1) basename /usr/bin/sort (Produz a string “sort”).
2) basename include/stdio.h .h (Produz a string “stdio”).
3) basename -s .h include/stdio.h (Produz a string “stdio”).
4) basename -a any/str1 any/str2 (Produz a string “str1” seguido da string “str2”).

Opções do comando basename?

Opção -a, –multiple: esta opção permite suportar vários argumentos e tratar cada um como um NOME, ou seja, você pode fornecer vários nomes de arquivos ou nomes de caminhos completos com o uso da opção -a:

basename -a /usr/local/bin/al2 /usr/local/bin/al2.html

Opção -s, –suffix SUFFIX: Esta opção remove um sufixo à direita SUFFIX, como uma extensão de arquivo, remove um SUFIXO; implica em -a:

basename -s .html al2.html

-z opção: separa a saída com NULL em vez de uma nova linha, termina as linhas de saída com NULO, e não nova linha:

basename -az /usr/local/bin/al2 al2.html

– opção de ajuda (–help opção): exibe as informações da ajuda e sai:

basename –help z

–version option: exibe as informações da versão e sai:

basename –version

Exemplo:

~:$ basename –version
basename (GNU coreutils) 8.31
Copyright (C) 2019 Free Software Foundation, Inc.
Licença GPLv3+: GNU GPL versão 3 ou posterior <_ gnu.org=”gnu.org” licenses=”licenses” gpl.html=”gpl.html”>
Este é um software livre: você é livre para alterá-lo e redistribuí-lo.
NÃO HÁ QUALQUER GARANTIA, na máxima extensão permitida em lei.

Para que serve o basename?

Aplicação do comando basename? Por si só o basename não faz nada… Existem muitos utilitários disponíveis, que SÓ SÃO ÚTEIS QUANDO SE TRATA DE SCRIPTS DE SHELL e não tem nenhum aplicativo prático quando usado por si só, e O BASENAME ESTÁ NESSA CATEGORIA.

EXEMPLO de um SCRIPT DE SHELL que CONVERTE ARQUIVOS de imagem gif em arquivos de imagem png COM A AJUDA DO COMANDO BASENAME:

#!/usr/bin/env bash

# shell script para converter o formato de arquivo de imagem gif
# em formato de arquivo de imagem png

# exemplo for importante

for file in *.gif; do
# sair se não tiver arquivos
if [! -f $file];then
exit
fi

# — #

b=’basename $file .gif’
echo NOW $b.gif is $b.png
giftopnm $b.gif | pnmtopng >$b.png
done

# fim do script

OBS:
No shell script acima, o comando BASENAME é usado para EXTRAIR os NOMES de arquivos com a extensão .gif sem a extensão, para que possam ser CONVERTIDOS em ARQUIVOS .png.

Conclusão:
o nome da base (basename) retira informações e sufixos do diretório e dos nomes dos arquivos, ou seja, imprime o nome do arquivo NAME com os principais componentes de diretório removidos.

Até breve!

🙂

Criar arquivos e pastas com data atual no Linux


CRIAR DIRETÓRIO COM DATA ATUAL:

mkdir -pv test_Dir_`date +%d-%b-%Y`/
mkdir -pv Dir_estudos_`date +%d-%b-%Y`/


CRIAR ARQUIVO .TXT COM DATA ATUAL:

touch meuArquivo_`date +%d-%b-%Y`.txt
touch Arq-data-atual_`date +%d-%b-%Y`.txt


CRIAR ARQUIVO .SH COM DATA ATUAL:

touch meuScript-1_`date +%d-%b-%Y`.sh
touch script2-ata-atual_`date +%d-%b-%Y`.sh


RENOMEAR DIRETÓRIO COM DATA ATUAL:

mv MeuDir/ MeuDir_`date +%d-%b-%Y`/

mv bin/ bin_`date +%d-%b-%Y`/


Até Breve!

🙂

Linux adicionar data ao nome de um arquivo pelo terminal

Tem um arquivo txt. Tem sempre no caminho um arquivo txt. Sh tem um monte de arquivo .sh. Havia um arquivo .sh no caminho e existe 4 (quatro anos) de arquivo .sh.

O objetivo é adicionar data (dia, mês, ano) ao nome de um arquivo declaro uma variável no arquivo .bash_aliases que está na pasta pessoal. Para achar ele digito: cd && ls -a. Usando editor de texto abro o .bash_aliases ou .bashrc e lá no final dele declaro uma variável chamada DDT. Ela fica colorida. Esta variável armazenará um comando. Tudo junto fica assim:

DDT=`date +%d-%m-%Y`.txt

Salvo o arquivo alterado. Tenho que avisar que o arquivo foi alterado com o comando:

source .bash_aliases

Modo de usar é com o comando touch?

Comando:

touch nome_do_arquivo_$DDT

Resultado:

nome_do_arquivo_02-03-2020.txt

Funcionou. Agora, como fazer isto com centenas de arquivos .sh?

Até Breve!

🙂

---

Uns posts interessantes do Blog

semanickz.wordpress.com


1.

Tecnologia que explora fraquezas da mente
https://secure.link/MZ7DrvKN


2.

Dogecoin uma moeda engraçada
https://secure.link/c6UoGAlY


3.

O comando apt no Linux pelo terminal usa Bash?
https://secure.link/h4PZm2OV


4.

Raspberry pós instalação 2019
https://secure.link/x05JdaRG


5.

Scam online-btcminer é scam?
https://secure.link/0E8TxnHk


6.

Linux lista de aliases
https://secure.link/PGFm1sav


7.

Linux Mint Anotações 2019
https://secure.link/DlJFMwnO


8.

O futuro do Deus do Olimpo
https://secure.link/caZbQtlS


9.

Linux encontre arquivos grudentos
https://secure.link/49skyaw0


10.

Linux encontre arquivos grudentos
https://secure.link/49skyaw0


11.

Linux comando free
https://secure.link/3NdLX1xu


12.

Linux tr, grep e sed
https://secure.link/KJ0VRQzE


13.

Linux grep básico exemplos
https://secure.link/86AaKrOX


14.

Não vou fazer isto por você!
https://secure.link/ZVeqWzBU


15.
Linux grep, egrep exemplos
https://secure.link/JqenkzHX


16.
Linux REGEX básico bash comandos exemplos
https://secure.link/FEeMAzDI


17.
Linux whatch exemplos
https://secure.link/MYWg1tVj


18.
Linux comandos REGEX exemplos
https://secure.link/uGPxszoE


19.
semanickz.wordpress.com
Linux configure o MAME
https://secure.link/ecw0jki9


20.
semanickz.wordpress.com
shell script REGEX e File Globbing
https://secure.link/wqrMLRDE


21.
semanickz.wordpress.com
Sucesso Trabalho Sucesso
https://secure.link/fF5SqGMe


22.
semanickz.wordpress.com
Me zipa, me unzipa!
https://secure.link/APUQfL38


23.
semanickz.wordpress.com
Aluga-se Veículos Linux
https://secure.link/2bzl85Ft


24.
semanickz.wordpress.com
https://secure.link/hkiDqGvS


25.
semanickz.wordpress.com
Cursos gratúitos Udemy Recomendados
https://secure.link/aWuCJFKT


26.
semanickz.wordpress.com
Linux mpv media player comandos exemplos
https://secure.link/oveTynmq


27.
Anotação VIM atualizada (2019)
https://secure.link/6qoy4CQd


28.
Elementary OS instalar Telegram
https://secure.link/mIs23qxw


29.
Linux Shell script Inciante e Intermediário
https://secure.link/f0KysOoE


30.
Linux como formatar um pendrive usb para armazenar suas coisas
https://secure.link/uLKvrydA


31.
Linux pesquisar via linha de comando
https://secure.link/DTtaHl5i


32.
archlinux – Instalação e Pós Instalação 2018
https://secure.link/VbOgCHzt


33.
Alan Turing o homem que sabia demais
https://secure.link/VK3XvsRe


34.
Como posso listar arquivos com seu caminho absoluto no linux?
https://secure.link/2dsZ3txe


35.
Linux traduzir textos pelo terminal
https://secure.link/1OUrXBq0


36.
Linux Manjaro – anotação cmd e dicas
https://secure.link/6K1HeRpC


37.
Turno de 7 a 11
https://secure.link/djLTNOHv


38.
Eu não disse nada
https://secure.link/l4Ype2ax


39.
Linux o que é permissão de execução?
https://secure.link/AVoin89D



Linux grep básico exemplos

semanickz

Linux uso básico do grep


O grep serve para procurar conteúdo em uma string de texto. Para aprender isto é criar um arquivo com strings de texto. Vamos fazer isto agora criando o arquivo texto-do-grep.txt com os comandos abaixo:


1. cd

2. cd ~/Documentos/

3. pwd

4. ls -ltC

5. mkdir EstudoLinux/ ; ls -ltC

6. cd EstudoLinux/

7. pwd

8. date

9. whoami

10. whatis grep


11. echo -e '\nLinux uso básico do grep \nLinux\nLinux e o mundo GNU. \nO GNU é parte do Linux\nAna \nANA \nAnA \nAno \nANO \nAnO \nAni \nbeeg \nboog \n# Comentário \nLuag \nluag \nSemanickz \nsemanickz \nSemanickzaine \nsemanickzaine \nbola \nSEMANICKZAINE \nSEMANICKZ \nbolo \nbole \nzazs \nzezs \nzizs \nzozs \nacunda \naconda \n# start Linux.\nleia \nleio \nleitor \nblog \nbleg \nblig \nboot \nBoot \n# comment\nTexto \ntexto \nTeeexto \nFim \nfom \nfunal do texto.\n# fim #\n' > texto-do-grep.txt


12. ls -AC

13. cat texto-do-grep.txt

14. clear


Agora já podemos começar!

Neste estudo, sempre antes de procurar uma string abro e ajeito na tela tres terminais. Todos eles abertos onde está o arquivo texto-do-grep.txt em um deles, uso o comando:

cat texto-do-grep.txt
---

Vejo o conteúdo e crio uma busca de string com o grep no outro terminal.

---

No segundo terminal, digito o comando:

man grep | less

E quando tiver alguma dúvida, uso as setas para cima e para baixo e dou uma olhada no manual de uso do grep. No final do extudo, para siar do comando executado, uso duas teclas. Aperto as teclas Ctrl+c e para fechar o terminal digito o comando exit.

---

No terceiro terminal, executo os comandos de busca usando o grep.

---

Linux Bash comando grep alguns poucos Exemplos para executar no terminal e ler com bastante atenção as saídas destes comandos para entender o que o comando fez, filtrou, incluiu, omitiu, etc:

---

grep semanickz texto-do-grep.txt
grep semanick* texto-do-grep*
grep start texto-do-grep.txt
grep "funal do texto" texto-do-grep.txt
grep -i semanickzaine texto-do-grep.txt
grep -i ana texto-do-grep.txt
grep -c semanickzaine texto-do-grep.txt
grep -ic semanickzaine texto-do-grep.txt
grep -v Ana texto-do-grep.txt
grep -iv Ana texto-do-grep.txt
grep -v Semanickzaine texto-do-grep.txt
grep -iv semanickzaine texto-do-grep.txt
grep Ana *
grep semanickzaine *

---

Procurando recursivamente por Ana em todos os diretórios existentes neste diretório em questão:

grep -r Ana *
grep -lr Ana *

---

Em que arquivo deste diretório está Ana?

grep -l Ana *

---

Usando a ferramenta grep junto com comando cat graças ao pipe. Execute os comandos abaixo:

clear
cat texto-do-grep.txt | grep acunda
clear
cat texto-do-grep.txt | grep -iv Ana

---

OBS:
Para usar comandos Linux o melhor é sempre obter o que precisa digitando o menos possível, mas em certos casos pode ser necessário digitar mais um pouco. Por isto, o Linux oferece ao usuário a criação de aliases. Aqui tem posts sobre como criar aliases. Aqui tem até listas de aliases que podem ser usados ou não por você. É só buscar aqui no blog.

---

Continuando...

---

O sinal -A significa after (depois). -A4 mostra 4 linhas depois da palavra indicada no comando. O sinal -B faz o oposto. Exemplo:

clear

grep -A4 beeg texto-do-grep.txt

grep -B4 beeg texto-do-grep.txt

---

Resultado:

EstudoLinux$ grep -A4
beeg texto-do-grep.txt
beeg
boog
# Comentário
Luag
luag

---

O comando acima é usado para analisar logs. Agora você pode saber o que vem antes e depois de uma string usando o grep.

---

OBS:
O fgrep não usa expressões regulares. O grep e o egrep usam. O melhor para expressões regulares neste momento, até ontem, é o egrep.

---

Tem muito mais a saber, mas isto aqui já dá para fazer bastante coisa e além disto, é um bom começo.


Até Breve!

🙂


Linux grep, egrep exemplos

semanickz

Linux comandos grep e egrep com exemplos

Linux-grep-egrep-exemplos

Qual é a diferença entre o Grep, o Egrep e o Fgrep no Linux?

Grep, Egrep e Fgrep são renomadas ferramentas de busca em sistemas Linux que podem ser usados ​​para procurar qualquer coisa, seja um arquivo, ou uma linha ou várias linhas no arquivo grep. Ele é muito vasto em funcionalidade, o que pode ser atribuído ao grande número de opções que ele suporta, como: pesquisar usando padrão de strings, ou reg-ex ou reg-ex com base em perl, etc.

Devido às suas diversas funcionalidades, ele possui muitas variantes, incluindo grep, egrep (GREP estendido), fgrep (GREP fixo), pgrep (GREP de processo), rgrep (GREP recursivo) etc. Mas essas variantes têm pequenas diferenças no grep original que as tornou popular e podem ser usado por vários programadores Linux para diferentes tarefas específicas.

A principal coisa que resta a ser investigada é quais são as diferenças entre as três variantes principais grep, egrep e fgrep do grep, que fazem com que os usuários do Linux escolham uma ou outra versão como por requisito.


Alguns Metacaracteres Especiais do grep:

+

Equivalente a uma ou mais ocorrências do caractere anterior.

?

Isso denota pelo menos 1 repetição do caractere anterior. Como a? Corresponderia a ou aa.

(

Início da expressão de alternância.

)

Fim da expressão de alternância.

|

Correspondência da expressão separada por |. Como: (a|b)cde corresponderia a abcde ou bbcde.

{

Este metacaractere indica o início do especificador de intervalo. Como: um {2} corresponde aa no arquivo a 2 vezes.

}

Esse metacaractere indica o especificador de fim de intervalo.

O mais usado deles neste momento para mim talvez seja o egrep. Ele é bom para usar com expressões regulares. Neste momento, só ele me interessa. Mas o egrep vem do grep então o que é grep?

grep ou Global Regular Expression Print é o principal programa de busca em sistemas Linux (Unix-like) que pode procurar qualquer tipo de string em qualquer arquivo ou lista de arquivos ou até mesmo a saída de qualquer comando.

Ele usa expressões regulares básicas, além das strings normais, como um padrão de pesquisa. Em Basic Regular Expressions (BRE), meta-caracteres como:

'{','}','(',')','|','+','?'

Perde o significado e são tratados como caracteres normais de string e precisam ser escapados se forem tratados como caracteres especiais.

grep usa o algoritmo Boyer-Moore para pesquisar rapidamente qualquer string ou expressão regular.

Exemplos:

grep -C 0 '(f|g)ile' check_file
grep -C 0 '\(f\|g\)ile' check_file

Quando o comando é executado sem escapar, ele procura pela string completa no arquivo. Mas quando os caracteres especiais foram escapados, em vez de tratá-los como parte da string, grep os tratou como metacaracteres e buscou por palavras arquivo ou urquivo no arquivo.

Comando Egrep. egrep ou grep -e é outra versão do grep ou do grep estendido. Esta versão do grep é eficiente e rápida quando se trata de procurar um padrão de expressão regular, uma vez que trata meta-caracteres como é e não os substitui como strings como no grep, e, portanto, você está livre do fardo de escapar deles no grep. Ele usa o ERE ou o conjunto de expressões regulares estendidas.

No caso do egrep, mesmo que você não escape dos meta-caracteres, ele os trataria como caracteres especiais e os substituiria por seu significado especial, em vez de tratá-los como parte da string.


Exemplos:

egrep -C 0 '(f|g)ile' check_file
egrep -C 0 '\(f\|g\)ile' check_file

Como aqui, egrep procurou por:


“file”


string quando os meta-caracteres não foram escapados como isso significaria pelo significado desses caracteres. Mas, quando esses caracteres foram escapados, egrep os tratou como parte da string e pesquisou por string completa no arquivo.:

“(f|g)ile”


Exemplo para encontrar apenas arquivos .mp3:

O grep pode ser muito útil para filtrar a partir do stdout.

find . –name “*.mp3” | grep –i nome-do-artista | grep –vi “nome-parcial-da-faixa-que-procuro”


Para saber melhor visite.

Linux REGEX básico bash comandos exemplos

semanickz

Comandos Bash aprenda REGEX Básico


Bash Scripting: Aprenda a usar o REGEX (Básico)


Expressões regulares ou REGEX são basicamente cadeias de caracteres que definem um padrão de pesquisa, elas podem ser usadas para executar operações de 'Pesquisa' ou 'Pesquisa e Substituição', bem como podem ser usadas para validar uma condição como política de senha etc.
É uma ferramenta muito poderosa que está à nossa disposição e a melhor coisa sobre o uso do REGEX é que ele pode ser usados ​​em quase todas as linguagens de computador. Então, se você é do Bash Scripting ou cria um programa em Python, pode usar.
Ou também pode escrever uma consulta de busca em uma única linha.
Existe uma grande possibilidade de talvez num futuro próximo os melhores lugares (seja lá o que isto signifique), estarem destinados as pessoas que tem pelo menos alguma noção de código e me parece neste momento, que o REGEX é importante sob a ótica desta suposição. Não esquecendo que em certos países neste momento, crianças já começam a vida estudantil tendo algo diretamente ligado a código em suas disciplinas.


Podemos usá-los no Bash usando o 'egrep', mas se você quiser usá-los em outros idiomas, como python ou C, você pode usar a parte regex. Começo mostrando um exemplo de regex. REGEX BASH Exemplo:
---
/t[aeiou]l/
---
Mas o que isso significa? Isso significa que o regex mencionado procurará uma palavra que comece com "t", tenha uma das letras "a e o o" no meio e a letra "l" como a última palavra. Pode ser "tel" "tal" ou "til" / Match pode ser uma palavra separada ou parte de outra palavra como "tilt", "brutal" ou "telefone". A sintaxe para usar regex com grep é:
---
egrep “termo-de-busca-REGEX” local-onde-está-o-arquivo

Não se preocupe se estiver parecendo esquisito agora, este foi apenas um exemplo para mostrar o que pode ser alcançado com o REGEX e acredite, este foi o mais simples dos exemplos. Podemos conseguir muito mais a partir dele. Vamos agora começar com o básico.

Noções básicas de Regex:
Agora vamos começar a aprender sobre alguns caracteres especiais que são conhecidos como metacaractéres. Eles nos ajudam a criar um termo de pesquisa mais complexo. A seguir, veja a lista de metacaractéres básicos.

---
. O Ponto
[] Colchetes.
[^] Colchetes e o chapéu do vovô.
* O asterisco.
+ O sinal de mais.
? O ponto de interrogação.
{n,} As chaves que irão encontrar ´n´ números ou itens precedentes.
{,m} Vai encontrar igual ou menos que m números de ítens.
\ A barra invertida que é um caractere de escape usado para incluir um metacaractere que você está procurando em um código, texto, string.

---
"Exemplos:"

Abro pelo menu do sistema, um editor de texto gráfico parecido por exemplo com o editor de texto leafpad e escrevo palavras, frases uma em baixo da outra sem espaços entre elas. Por exemplo as palavras:

bana
bena
bina
bona
buna
Linux
GNU/Linux
mundo linux
Mundo Linux
Estudos Linux
estudos_linux
dog
TaK
Linux
Shane é um pouco para jogar bola
diga
Stdaemon
Subapul
Semprol
Std
Std1
Std8
StdB
Stdstulaktilbaibtemp
digo
dgrub
dgrab
dgrib
Non
Nen
Nin
Nnn
nanan
taeil
tall
lake
lak
laaakkk
Study
Study1
Artorv
arterv
artirv
estudantes
estuudarrte
Study2
Study3
baeb
baib
baoba
estudo
St1234d
Stntfd
Tempk
Termik
Estudo
Laka
lala
tilt
tel
laek
tool
estudo2

---

E salvo o arquivo com o nome de:
Arquivo-estudo-Regex.txt

Aí abro o terminal pelo menú do sistema no diretório onde está este arquivo e executo comandos Linux Bash REGEX. Assim é que a gente aprende.


grep “d.g” Arquivo-estudo-Regex.txt
---
Este regex significa que estamos procurando por uma palavra que comece com d, termine com g e possa ter qualquer caractere no meio do arquivo. Da mesma forma, podemos usar o caractere de ponto qualquer número de vezes para o nosso padrão de pesquisa, como T......H
---
grep “N[oen]n” Arquivo-estudo-Regex.txt
---
Aqui, estamos procurando uma palavra que começa com N, termina com n e só pode ter ou o ou e ou n no meio. Podemos mencionar de um único para qualquer número de caracteres dentro das chaves quadradas (colchetes).
---
grep “St[^1-9]d” Arquivo-estudo-Regex.txt
---
Isso significa que podemos ter todas as palavras que começam com "St", terminam com a letra "d" e não podem conter números de 1 a 9.
---
grep “lak*” Arquivo-estudo-Regex.txt
---
isso significa que podemos combinar com 'lake' ou 'la' ou 'lakkkkk'.
---
grep “lak+” Arquivo-estudo-Regex.txt
---
Aqui, k deve ocorrer pelo menos uma vez em nossa busca, então nossos resultados podem ser 'lake' ou 'lakkkkk' mas não 'la'.
---
grep “ba?b” Arquivo-estudo-Regex.txt
---
A string bb ou bab como com '?' multiplicador podemos ter uma ou zero ocorrência do caractere.
---
OBS:
É muito importante ao usar multiplicadores ficar atento ao exemplo abaixo. Suponha que tenhamos um regex:

---
grep “S.*l” Arquivo-estudo-Regex.txt
---
Neste caso obtemos resultados pequenos, bobos e também temos talvez 'Shane é um pouco para jogar bola'. Mas por que nós pegamos 'Shane é um pouco para jogar bola', nós só estávamos procurando as palavras de nossa busca, então por que nós pegamos esta frase completa na nossa saída?
---
grep “S.*?l” Arquivo-estudo-Regex.txt
---
Isto irá corrigir o comportamento do nosso regex:
---
grep “S.*\.” Arquivo-estudo-Regex.txt
---
E irá procurar e combinar todas as palavras que terminam com um caractere de ponto.
---
"Para saber melhor visite a fonte no final deste post."
---
fonte
---
Aprendendo REGEX Linux Bash
---
Crio um arquivo de texto simples em um editor de texto tipo o leafpad. O nome do arquivo é:
---
mysampledata.txt
---
Colo neste arquivo o mysampledata.txt as linhas abaixo.
---
Fred apples 20
Susy oranges 5
Mark watermellons 12
Robert pears 4
Terry oranges 9
Lisa peaches 7
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14

---
Abro o terminal onde está o arquivo de texto.
---
Digamos que desejamos identificar todas as linhas que continham a string mellon.
---
egrep 'mellon' mysampledata.txt
---
O comportamento básico do egrep é que ele imprimirá toda a linha para cada linha que contiver uma sequência de caracteres que corresponda ao padrão fornecido. É importante notar que não estamos procurando uma palavra, mas uma sequência de caracteres. Observe também que incluímos o padrão entre aspas. Isso nem sempre é necessário, mas é mais seguro adquirir o hábito de usá-los sempre. Eles são necessários se o padrão contiver caracteres que tenham um significado especial na linha de comando. Às vezes, queremos saber não apenas quais linhas correspondem, mas também o número da linha delas.
---
egrep -n 'mellon' mysampledata.txt
---
Ou talvez não tenhamos interesse em ver as linhas correspondentes, mas queremos saber quantas linhas corresponderam.
---
egrep -c 'mellon' mysampledata.txt
---
REVISANDO: Aprendendo Expressões Regulares. A melhor maneira de aprender expressões regulares é experimentar os exemplos e modificá-los um pouco para testar sua compreensão. É comum cometer erros em seus padrões enquanto você está aprendendo. Quando isso acontece, normalmente cada linha será correspondida ou nenhuma linha será correspondida ou algum conjunto obscuro. Não se preocupe se isso acontecer você não fez nenhum dano e pode facilmente voltar e tentar outra vez. Lembre-se de que você pode pressionar a seta para cima no seu teclado para obter os comandos recentes e modificá-los para não precisar redigitar o comando inteiro a cada vez.
---
Se você não está obtendo o resultado que deseja, aqui estão algumas estratégias básicas. Primeiro, verifique se há erros de digitação. Se você é como eu, então você está propenso a fazê-las. Leia o conteúdo aqui. Talvez o que você pensou que um operador em particular tenha feito seja ligeiramente diferente do que ele realmente faz e lê novamente, você notará um ponto que pode ter perdido na primeira vez.
---
Divida seu padrão em componentes individuais e teste cada um deles individualmente. Isso ajudará você a ter uma ideia de quais partes do padrão estão corretas e de quais partes você precisa ajustar.
---
Examine sua saída. Seu padrão atual pode não ter funcionado como você quer, mas ainda podemos aprender com ele. Observar o que realmente fizemos e usá-lo para ajudar a entender o que realmente aconteceu nos ajudará a descobrir o que devemos tentar mudar para nos aproximarmos do que realmente queremos.
---
As expressões regulares para usar no estudo do REGEX:
---
. (ponto) um único caractere.
? (interrogação) O caractere precedente corresponde a 0 ou 1 somente.
* (asterisco) o caractere anterior corresponde a 0 ou mais vezes.
+ (mais) o caractere anterior corresponde a 1 ou mais vezes.
{n} (n entre chaves) o caractere precedente corresponde exatamente a n vezes.
{n,m} (n vírgula m entre chaves) o caractere precedente corresponde a pelo menos n vezes e não mais que m vezes.
[agd] (agd entre colchetes) "the character is one of those included within the square brackets."
[^agd] - o caractere é um daqueles incluídos entre os colchetes.
[c-f] (c traço f entre colchetes) o traço dentro dos colchetes funciona como um intervalo. Neste caso, significa as letras c, d, e ou f.
() - nos permite agrupar vários caracteres para se comportar como um.
| (pipe) a operação OR lógica.
^ (circunflexo) tem que estar no início da linha.
$ (cifrão) corresponde ao início da linha.

---
Vamos começar.
---
egrep '[aeiou]{2,}' mysampledata.txt
egrep '2.+' mysampledata.txt
egrep '2$' mysampledata.txt
egrep 'or|is|go' mysampledata.txt
egrep '^[A-K]' mysampledata.txt
---
Para saber melhor visite a fonte:
Fonte
---
Até Breve! 🙂
---

Linux whatch exemplos

Linux comando whatch com exemplos


---
Comando watch do Linux - o utilitário watch permite executar um comando repetidamente. A seguir está a sintaxe deste comando:
---
watch [options] command
---
watch executa o comando repetidamente, exibindo sua saída e erros (a primeira tela cheia).
---
Isso permite que você observe a saída do programa mudar ao longo do tempo.
---
Por padrão, o programa é executado a cada 2 segundos. Por padrão, o relógio será executado até ser interrompido. Para interromper aperto duas teclas, as teclas Ctrl+c. A seguir estão alguns exemplos estilizados que devem dar uma boa idéia de como o comando watch funciona.
---
Como funciona o comando watch? O uso básico do watch é muito fácil - tudo o que você precisa fazer é executar a ferramenta com um nome de comando como entrada. Por exemplo:
watch date
---
Como funciona o comando watch? A primeira linha da saída informa que a saída do comando 'date' está sendo atualizada a cada 2 segundos (esse é o intervalo de tempo padrão), seguida pela data / hora atual do sistema. A segunda linha é a saída real do comando 'date' que é atualizada após alguns segundos.
---
Como fazer o relógio destacar a diferença entre as atualizações? Como já explicado na seção anterior, a saída do comando que está sendo rastreado é atualizada regularmente (após 2 segundos, por padrão). Caso você queira, você também pode fazer 'assistir' destacar a parte da saída que está mudando entre as atualizações. Isso você pode fazer usando a opção de linha de comando -d. Por exemplo:
watch -d date
---
Como já explicado, a saída do comando que está sendo rastreado é atualizada regularmente (após 2 segundos, por padrão). Caso você queira, você também pode fazer 'assistir' destacar a parte da saída que está mudando entre as atualizações. Isso você pode fazer usando a opção de linha de comando -d. Por exemplo:
watch -n 5 date
---
Este comando garantirá que a saída seja atualizada a cada 5 segundos. Por favor, note que intervalos inferiores a 0,1 segundos não são permitidos. Nota: Para garantir que o intervalo entre intervalos seja respeitado com muita precisão, use a opção de linha de comando -p.
---
Faça o watch tentar executar o comando a cada intervalo de segundos. Experimente com ntptime e observe como os segundos fracionários ficam quase) o mesmo, ao contrário do modo normal, onde eles aumentam continuamente.
---
Como desligar o cabeçalho na saída? Se desejar, você também pode pedir 'watch' para desativar o cabeçalho, mostrando o intervalo, o comando e a hora atual na parte superior da tela, bem como a seguinte linha em branco. Isso pode ser feito usando a opção de linha de comando -t. Por exemplo:
watch -t date
---
Como fazer o relógio sair quando a saída muda? Se você quiser que o comando 'watch' seja encerrado após a detecção de uma alteração na saída, use a opção de linha de comando -g. Por exemplo:
watch -g free
---
Assim, sempre que o consumo de memória no sistema for alterado, o comando watch será encerrado.
---
Para saber mais visite:
fonte
---
Até breve! 🙂
---

Me zipa, me unzipa!



Linux comandos para compactar diretórios e arquivos

---

OBS:

Sem enrola VPN Gratis

---

O Zip é uma ferramenta de compactação que está disponível na maioria dos sistemas operacionais até ontem.

---

Vamos ver como instalar, usar e dicas sobre o comando zip.

---

Instalação:

Instalar zip e unzip pela central de programas da sua Distro Linux.

---

Tutorial começa

Abra o terminal onde está/estão o(s) arquivo/diretório(s) a ser(em) compactado/descompactado(s) em zip.

---

Zipando arquivos individualmente:

zip -r nome-para-o-arquivo.zip arquivo-a-ser-zipado1 arquivo-a-ser-zipado2 diretório-a-ser-zipado

---

OBS:

Será criado um arquivo zip chamado de nome-para-o-arquivo.zip.

O -r do zip -r é usado para o caso de existirem sub-diretórios dentro do diretório a ser compactado e nesta anotação aqui, estou usando -r em tudo pois, se for apenas um arquivo acredito faz o serviço do mesmo jeito.

---

Para descompactar:

unzip nome-para-o-arquivo.zip

---

OBS:

Se está em outro lugar do sistema acho que dá para descompactar por exemplo:

unzip ~/Downloads/nome-para-o-arquivo.zip

---

Zipando um diretório:

zip -r nome-para-o-diretório-a-ser-zipado.zip ~/caminho/para/o/diretório/

---

Veja só isto abaixo

---

Exemplo terminal aberto onde está o arquivo a ser zipado e então zipando diretório ~/bin/ da home do usuário:

zip -r bin-zipado-2018.zip ~/bin/

---

OBS: Será criado um pacote chamado de bin-zipado-2018.zip.

---

Para descompactar o pacote bin-zipado-2018.zip:

unzip bin-zipado-2018.zip

---

Pode saber informações sobre os pacotes criados com o comando:

ls -lC nome-do-arquivo.zip

ls -lhC caminho/para/o/pacote/zip/nome-do-arquivo.zip

---

Zipar um diretório para um local diferente no sistema?

---

Veja só este exemplo aqui.

Criar um arquivo zip de um PDF que está ~/Documentos/ e se chama fulano.pdf para o diretório ~/Imagens e estou em ~/Vídeos/

---

Exemplo abaixo.

---

1) Criar arquivo fulano.pdf em Documentos com o comando:

touch ~/Documentos/fulano.pdf

2) Ir para o diretório Vídeo:

cd ~/Vídeos/

3) Do diretório Vídeo criar pacote fulano.zip em Imagens sendo que o arquivo está em Documentos:

zip -r ~/Imagens/fulano.zip ~/Documentos/fulano.pdf

---

Conferindo arquivos e pacotes pelo terminal:

1) ls -tlC ~/Imagens/ | head

2) ls -tlC ~/Documentos/ | head

3) ls -tlC ~/Vídeos/ | head

4) pwd

---

OBS:

Abra o seu gerenciador de arquivos e confere se está tudo certo. Para mim funcionou direitinho. Este conhecimento é útil para fazer coisas muitíssimo importantes.

---

Leia o conteúdo de um arquivo compactado sem extrair o arquivo

---

Como posso ler o conteúdo de um determinado arquivo em um arquivo sem extrair o arquivo .zip em que ele está contido?

---

Listar o conteúdo de um arquivo ZIP para saber o que tem dentro dele:

unzip -l nome-do-arquivo.zip

---

Use a opção -c para gravar o conteúdo dos arquivos nomeados na stdout (tela) sem precisar descompactar todo o arquivo. Canalize a saída para menos, caso contrário, todo o arquivo irá para a tela antes que você possa lê-lo.

---

unzip -c nome-do-arquivo.zip | less

unzip -c nome-do-arquivo.zip | head

unzip -c nome-do-arquivo.zip | tail

---

Para saber melhor:

Visite

---

Até Breve!

---

Dicas, críticas e comentários positivos são muito bem-vindos!

🙂

---

fonte

---

Post do semanickz (apenas um "average joe")

---

Quem precisar entrar em contato comigo, por favor, siga o procedimento abaixo por sua própria conta e risco (Kkkkk):

Contate-me!

Tranquilo(a)!


Anotação VIM atualizada (2019)


Anotação VIM atualizada

---

  • Eu acho que se por acaso você aprender todas estas coisas deste post, você se tornará um Ninja do VIM! Eu tô na faixa branca tá sabendo?

    ---

    EDITOR de TEXTO VIM - COMANDOS E EXEMPLOS

    ---

  • Depois de iniciar o vim, pressione F1 ou use :h no modo ex para inserir a ajuda on-line.
  • Você pode ir para uma seção ou tópico específico colocando o cursor sobre ele e, em seguida, pressionando Ctrl+] (Ctrl e, em seguida, o colchete de fechamento).
  • Depois de terminar, pressione Ctrl+t para retornar à tela anterior.

- Alternativamente, você pode procurar um assunto ou comando específico com :h .

Por exemplo:

:h x

---

  • Os dois modos principais do Vim são: Modo de Comandos (Esc) e Modo de Inserção (i).

---

  • O primeiro modo, é voltado para comandos e inicia por padrão junto com o vim. As teclas estão configuradas para servirem de atalhos a operações muito especiais, como movimentação do cursor, salvar e abrir arquivos, copiar e colar texto, fazer buscas por palavras-chave, etc.

---

  • Se deseja digitar um texto, precisa acessar o Modo de Inserção e, para isso, usa-se a tecla de atalho i. Basta pressioná-la quando estiver no modo de comandos e, em seguida, iniciar ou modificar um arquivo de texto. Para retornar ao modo de comandos, use a tecla ESC.

---

  • Caps Lock: Tudo o que você digita no vi possui um significado diferente quando as letras estão maiúsculas. Tenha cuidado em acioná-la sem querer. Você não recebe um aviso que está com o Caps ativado – simplesmente, as coisas irão funcionar de forma estranha.

---

  • Ctrl+G: Se você esquecer-se do que está editando, ao pressionar estas teclas mostra o nome do arquivo que você está editando e a linha atual que você se encontra no final da tela, além de outras informações.

---

CRIAR E SALVAR ARQUIVO NO VIM

Se quiséssemos, por exemplo, criar um arquivo de texto chamado aprender-usar-vim.txt, cujo conteúdo seria a frase "Teste do tutorial", seguiríamos os seguintes passos:

1) no terminal, executaríamos o comando vim aprender-usar-vim.txt.

2) dentro do Vim, pressionaríamos a tecla i para passar do Modo de Comandos para o Modo de Inserção.

3)digitaríamos a frase "Teste do tutorial".

voltaríamos ao modo de comandos com a tecla ESC.

digitaríamos :wq, pressionando Enter logo em seguida. Esse comando (:wq) é utilizado para salvar (write) o arquivo e sair (quit) do Vim.

Tente repetir esses passos em seu computador.

---

OBS:

Importante se acostumar a entrar e sair da inserção de texto. ('i') inserção ('Esc') modo de comando.

  • Para se movimentar no texto aperte a tecla ('Esc'): h j k l

i = insere texto
insert = insere texto
esc = sai de inserção de texto
:w = salva o texto
:q = sai do vim
:wq = sai do vim salvando o texto
:x! = alternativo sair salvando o texto
dd = exclui uma linha por completo
yy = copia uma linha por completo
p = cola a linha
v = copia parte do texto modo visual
u = Desfaz
Ctrl+R = refaz

---

Para quebrar linhas longas no vim acho que funciona usar:

:%norm! gww

---

vim comando para restruturar/forçar texto para 80 colunas. Comando:

:set textwidth=80

---

Mover para o início do arquivo. Pode ser feito com:

Ctrl+Home

gg

gqG.

---

No vim pode abrir dois arquivos de texto ao mesmo tempo.

:split /caminho/para/o/novo/texto

---

  • Se quer abrir dois arquivos (teste1, teste2) horizontalmente abra o terminal onde estão os arquivos e execute:

vim -o teste1 teste2

Para abrir em janelas verticais:

vim -O teste1 teste2

---

  • Você pode mudar o cursor de uma janela para outra com a rotina habitual de movimentos vi / m (h: direita, l: esquerda, j: inferior, k: superior)

Ctrl+w k – superior
Ctrl+w j – inferior
Ctrl+w l – esquerda
Ctrl+w h – direita

---

Talvez possa dividir textos horizontalmente com as teclas:

Ctrl+W S

Verticalmente:

Ctrl+W v

Para fechar uma delas:

Ctrl+W Q

Para mudar intuitivamente:

Ctrl+W J K H L

Ctrl+W seta para cima seta para baixo

---

  • Para alterar textos no vim: Ctrl+W seta para cima, Ctrl+W seta para baixo.
  • Pode copiar uma parte de um texto para o outro.
  • Para sair de um dos textos usar Ctrl+w seta para cima ou para baixo depende do texto a ser fechado.

- Para sair do texto:
:q

- Para sair sem salvar:
:q!

- Pode executar comandos do Bash sem sair do vim. Exemplo:
:!ls -lC

- Comando que insere resultado de comando executado dentro do texto:
:.!uname -r = insere resultado dentro do texto atual.

- Para salvar e sair:
:wq

- Ou:
:zz

- Pode habilitar o número de cada linha:
:set number

- Para desabilitar o número de cada linha:
:set nonunber

- Habilitar sysntax higlight:
:syntax

- Para desabilitar syntax higlight:
:syntax off

---

  • No vim certos procedimentos que levariam muito tempo para fazer em outros editores de texto, são executados pelo vim muito rapidamente. O vim foi criado mais ou menos na década de 60, mas creio que até hoje está em desenvolvimento. Quem consegue entrar na onda do vim, descobre depois de um tempo, poderes inimagináveis e não larga mais. Talvez um dia a gente chega lá. O mundo tá muito cheio de coisa e não dá para abraçar tudo, não é mesmo?

---

MOVENDO PELO ARQUIVO

Há diversos meios de mover-se pelo arquivo. Para estes exemplos, use arquivos grandes que você não poderá danificar. (Tente copiar /var/log/messages to/tmp e abra-o no vi).

Ctrl+F: página próxima, uma página por vez.

Ctrl+B: página anterior, uma página por vez.

Ctrl+D: página próxima, meia-página por vez.

Ctrl+U: página anterior, meia página por vez.

G: vá para a última linha do arquivo.

1G: vá para a primeira linha do arquivo. (Você poderá usar qualquer número – o número usado será a linha correspondente no arquivo).

---

BUSCANDO POR TEXTO

Para buscar a próxima ocorrência de texto no arquivo, use tanto a barra (/) ou o ponto de interrogação (?).
Exemplos:

/linux: procura (sentido horário) pela palavra linux.

?computadores: Procura (sentido anti-horário) pela palavra computadores.

/Rubber.*Soul: procura (sentido horário) por uma linha que possua a palavra Rubber e, após isso, em algum lugar, a palavra Soul.

?[bB]eatles: procura (sentido anti-horário) por beatles ou Beatles.

O editor vi foi originalmente baseado no editor ex, que não lhe deixa trabalhar no modo de tela cheia. No entanto, lhe permite rodar comandos que o permitam encontrar e mudar texto em uma ou mais linhas por vez. Segue abaixo alguns exemplos de comandos ex para a busca e mudanças no texto:

:g/Natal: procura pela palavra Natal e mostra cada ocorrência daquela linha no arquivo.

:s/Natal/Natalino: substitui Natalino pela palavra Natal na linha atual.

:g/Natal/s//Natalino: substitui a primeira ocorrência da palavra Natal em cada linha do arquivo com a palavra Natalino.

:g/Natal/s//Natalino/g: substitui cada ocorrência da palavra Natal com a palavra Natalino no arquivo inteiro.

:g/Natal/s//Natalino/gp: substitui cada ocorrência da palavra Natal pela palavra Natalino no arquivo inteiro, e depois mostra cada linha para que você veja as mudanças.

---

USANDO NÚMEROS COM COMANDOS

Você pode preceder muitos comandos vi com números, para ter o comando repetido tantas vezes. Alguns exemplos:

3dw: deleta as próximas três palavras.

12j: Move 12 linhas para baixo.

  • Observação: quando você chama o vi em muitos sistemas Linux, você está na verdade chamando o editor de texto vim, que roda no modo de compatibilidade do vi. Os mais aficionados em programação preferem usar o vim, porque mostra diferentes níveis de código em cores distintas, além de possuir outros recursos interessantes, como a capacidade de abrir um documento com o cursor no mesmo lugar que estava na última vez que você saiu.

---

  • Alterar letras, palavras ou linhas inteiras para MAIÚSCULAS ou minúsculas:

Para alterar uma série de letras para maiúsculas, posicione o cursor na primeira letra, digite gUX no modo execução e, finalmente, pressione a seta para a direita no teclado.

Para alterar o número X de palavras, coloque o cursor no início da palavra e digite gUXw no modo execução.

Para alterar uma linha inteira para maiúscula, coloque o cursor em qualquer lugar na linha e digite gUU no modo execução.

---

  • Exclua caracteres, palavras ou o início de uma linha no modo INSERIR.

Embora você possa excluir caracteres ou várias palavras de uma vez no modo ex (ou seja, dw para excluir uma palavra), você também pode fazê-lo no modo Inserir:

Ctrl + h: exclui o caractere anterior para o local onde o cursor está localizado no momento.

Ctrl + w: apaga a palavra anterior para o local onde o cursor está localizado no momento.

Para que isso funcione corretamente, o cursor deve ser colocado em um espaço vazio após a palavra que você precisa excluir.

Ctrl + u: apaga a linha atual começando pelo caractere imediatamente à esquerda do lugar onde o cursor está.

---

  • Contar correspondências resultantes de uma pesquisa por padrão e passar de uma ocorrência para outra.

Esta dica é baseada no comando substituto, com a exceção de que não removerá nada, já que o comportamento substituto é substituído pela opção n, resultando na contagem de ocorrências do padrão especificado: Certifique-se de não omitir nenhuma das as barras para frente.

:%s/pattern//gn

Exemplo:

:%s/liberto//gn

---

SALTAR PARA FRENTE DE PARA TRÁS USANDO MARKS

Se você estiver editando um arquivo maior que uma tela, você apreciará a funcionalidade fornecida pelas marcas.

Você pode pensar em uma marca no vim como um marcador - uma vez que você a coloca em algum lugar, você pode voltar rapidamente e facilmente.

Suponha que você esteja editando um arquivo de configuração de 300 palavras e, por algum motivo, precise alternar repetidamente entre as linhas 30 e 150, por exemplo.

para criar uma marca chamada 'a' na linha 30. Em seguida, vá para a linha 250 (com: 250 no modo ex) e pressione `a (crase, a) para retornar para marcar a na linha 30.

Você pode usar letras maiúsculas e minúsculas para identificar marcas no vim (agora repita o processo para criar uma marca chamada A na linha # 250). Você pode ver suas marcas com

:marks aA

---

  • Inserindo caracteres Unicode especiais. Se o layout do seu teclado não permitir a inserção fácil de caracteres Unicode especiais em um arquivo, ou se você se encontrar na frente de um servidor com configurações de idioma diferentes daquele que está acostumado, esse truque será útil. Para fazer isso, pressione Ctrl + v no modo de inserção seguido da letra u e do código numérico hexadecimal do caractere que você deseja inserir. Você pode verificar os gráficos Unicode para obter uma lista de caracteres especiais e seus códigos numéricos correspondentes

Exemplos:

Ctrl+v followed by returns
u0040 @
u00B5 μ
u20AC €

---

  • Buscar e substituir:

:%s/old/new/g

- Então, o que você quer ser solicitado antes de fazer substituições? Fácil. Basta adicionar um c no final do comando acima, da seguinte maneira:

:%s/old/new/gc

---

Comando Linux unzip

---

Compactar arquivos deixa mais fácil e rápido transferir dados entre computadores.

Arquivo compactado economiza espaço em disco e facilita o download de arquivos da internet. Economiza largura de banda pois usa menos.

  • Como ver o conteúdo de um arquivo zip? Abra o terminal onde está o arquivo exemplo.zip e execute:

unzip -l exemplo.zip

  • Para descomprimir um arquivo a regra até ontem, era mais ou menos:

unzip nome-do-arquivo.zip

  • Se está no diretório Imagens e quer extrair um,arquivo que esta em Downloads:

unzip ~/Downloads/nome-do-arquivo.zip

  • Para descomprimir múltiplos arquivos zip no mesmo diretório abra o terminal onde estão os arquivos 01 e 02 (por exemplo) e:

unzip 01-nome-do-arquivo.zip 02-nome-do-arquivo.zip

  • Para descomprimir vários arquivos que estão em um mesmo diretório com um comando só, execute com atenção:

unzip '*.zip'

  • Pode extrair um arquivo zip para um diretório diferente:

unzip nome-do-arquivo.zip -d caminho/para/o/diretório/

  • E para zipar arquivos? Os arquivos compactados são usados ​​quando você precisa economizar espaço e copiar arquivos grandes de um lugar para outro.

zip nome-do-diretório *

  • Para compactar todos os arquivos, incluindo os arquivos ocultos em uma pasta por exemplo a querida pasta home cheia de arquivos de configuração:

zip home * .*

---

Estes são apenas os exemplos mais básicos. Tem mais coisas. Mas já é um bom começo.

---

Saber arquivos por data e hora da modificação

Como localizar e classificar arquivos com base na data e hora da modificação no Linux


---
Normalmente, temos o hábito de salvar muitas informações em forma de arquivos em nosso sistema. Alguns, arquivos ocultos, alguns mantidos em uma pasta separada criada para nossa facilidade de compreensão, enquanto alguns são como são. Mas toda essa coisa preenche nossos diretórios; geralmente o desktop, fazendo com que pareça uma bagunça. Mas, o problema surge quando precisamos procurar por um arquivo específico modificado em determinada data e hora nesta enorme coleção.
---
O Linux tem comandos que, se usados separadamente ou juntos, podem ajudar a procurar um arquivo ou classificar uma coleção de arquivos de acordo com o nome, data de modificação, hora da criação ou até mesmo qualquer filtro que você possa aplicar para obter seu resultado.
---
Alguns Comandos:

ls | sort | head
find | cat


Sobre estes comandos e exemplos:


ls -t
lista arquivos no formato de listagem longo e classifica arquivos com base na data de modificação, a mais nova primeiro.
---
OBS:
Para ordenar em ordem inversa, use a opção '-r' com este comando.
---
ls -ltu
Lista arquivos com base no horário do último acesso. Faz listagem de arquivos no diretório com base no horário do último acesso, ou seja, com base na hora em que o arquivo foi acessado pela última vez, não modificado.
---
ls -ltc
Lista arquivos com base no horário da última modificação. Realiza listagem de arquivos no diretório com base na hora da última modificação das informações de status do arquivo ou no "ctime". Esse comando listaria esse arquivo primeiro, cujas informações de status, como proprietário, grupo, permissões, tamanho etc., foram alteradas recentemente.
---
OBS:
Se a opção '-a' for usada com os comandos acima, eles podem listar e ordenar até mesmo os arquivos ocultos no diretório atual, e a opção '-r' lista a saída na ordem inversa
---
Para uma classificação mais aprofundada, pode usar a classificação no comando 'output' do find, no entanto, o ls também pode ser usado, mas é mais útil, pois a saída pode não ter apenas o nome do arquivo, mas quaisquer campos desejados pelo usuário.
---
Classificando arquivos com base no mês:

Aqui, usamos o comando find para localizar todos os arquivos no diretório raiz (‘/’) e, em seguida, imprimir o resultado como:
Mês em que o arquivo foi acessado e, em seguida, nome do arquivo. Desse resultado completo, aqui listamos as 11 primeiras entradas.
find / -type f -printf "\n%Ab %p" | head -n 11
---
O comando abaixo classifica a saída usando a chave como primeiro campo, especificado por '-k1' e, em seguida, classifica em Mês conforme especificado por 'M' antes dele.
find / -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M
---
Classificar arquivos com base na data.
Aqui, novamente, usamos o comando find para localizar todos os arquivos no diretório raiz, mas agora vamos imprimir o resultado como: última data em que o arquivo foi acessado, última vez que o arquivo foi acessado e depois nome do arquivo. Disso tiramos as 11 primeiras entradas.
find / -type f -printf "\n%AD %AT %p" | head -n 11
---
O comando de classificação abaixo primeiro classifica com base no último dígito do ano, depois classifica com base no último dígito do mês na ordem inversa e finalmente classifica com base no primeiro campo. Aqui, "1,8" significa 8ª coluna do primeiro campo e "n" à frente significa "ordenação numérica", enquanto "r" indica ordenação inversa.
find / -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.8n -k1.1nr -k1
---
Classificando arquivos com base no tempo.
Aqui, novamente, usamos o comando find para listar os 11 principais arquivos no diretório raiz e imprimir o resultado no formato: o arquivo da última vez foi acessado e, em seguida, nome do arquivo.
find / -type f -printf "\n%AT %p" | head -n 11
---
O comando abaixo classifica a saída com base na primeira coluna do primeiro campo da saída, que é o primeiro dígito da hora.
find / -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n
---
Ordenação de Ouptut de ls -l com base em Data.
Esse comando classifica a saída do comando 'ls -l' com base no sexto mês de campo, e então com base no sétimo campo que é data, numericamente.
ls -l | sort -k6M -k7n
---
Da mesma forma, por ter algum conhecimento do comando sort, você pode classificar quase qualquer listagem com base em qualquer campo e até mesmo em qualquer coluna que desejar.

Todos estes comandos acima podem ser usados no bash scripting (shell script) de acordo com a necessidade.

Esses foram alguns dos truques para ajudar você a classificar arquivos com base em Data ou Hora. Você pode ter seus próprios truques construídos com base neles.

Dicas e sugestões são muito bem vindas.


Até Breve!
:)

Fonte
---

:: Extra ::


---
Linux comando sort exemplos simples...
---
Crie um texto em uma pasta da tua home. Abra o terminal onde está o texto. Execute:
---
1) sort meu-txt-frases-linhas-palavras-numeros.txt
2) sort meu-txt-frases-linhas-palavras-numeros.txt > sorteado.txt
3) cat sorteado.txt
4) sort -r sorteado.txt > reversorteado.txt
5) cat reversorteado.txt
6) ls -l /home/$USER > /home/$USER/Downloads/lsl.txt
7) cd Downloads/ ; cat lsl.txt
8) sort -nk2 lsl.txt
---
Como o próprio nome indica, o comando de ordenação Unix/Linux permite classificar informações de texto. Este artigo compartilha vários exemplos do comando de classificação do Linux.
Ordenar a saída do comando "ls"
Você pode usar o comando de classificação do Linux para classificar todos os tipos de saída de outros comandos. Por exemplo, aqui está um exemplo que classifica a saída do comando ls -al:

ls -al | sort -n -k5
---
O -n no exemplo significa "ordenar numericamente", e a opção -k5 significa desativar a coluna cinco. Como outros comandos Unix/Linux, essas opções de comando de classificação podem ser combinadas e encurtadas, assim:

ls -al | sort -nk5
---
Ordenação da saída do comando "ps" - De tempos em tempos, você desejará classificar a saída do comando ps do Linux e, novamente, o comando sort pode ser seu amigo. Você pode apenas ordenar alfabeticamente pela primeira coluna (nome de usuário):

ps auxw | sort
---
Ou você pode ordenar numericamente pela coluna dois (o campo PID):

ps auxw | sort -nk2
---
Você também pode reverter esse tipo com a opção -r:

ps auxw | sort -rnk2
---
Classificando o conteúdo do arquivo com 'cat' - Você também pode classificar o conteúdo de um arquivo com o comando de classificação do Linux. Aqui está o comando 'cat' que no terminal mostrará o que um arquivo chamado 'arquivos' parece antes de ser visto posteriormente com o comando 'sort':

cat files
sort files
---
É muito importante notar que este comando não classifica o arquivo atual, apenas exibe a saída ordenada no seu terminal. Para ter a saída classificada para outro arquivo, você executaria um comando como este:

sort files > arquivos-sorted.txt
---
FINALIZANDO:
1) sort texto.txt - Organiza o arquivo texto.txt em ordem crescente.
2) sort texto.txt -r - Organiza o conteúdo do arquivo texto.txt em ordem decrescente.
3) cat texto.txt|sort - Faz a mesma coisa que o primeiro exemplo, só que neste caso a saí­da do comando cat é redirecionado a entrada padrão do comando sort.
4) sort -f texto.txt - Ignora diferenças entre letras maiúsculas e minúsculas durante a organização.
5) sort 1 -3 texto.txt - Organiza o arquivo texto.txt usando como referência a segunda até a quarta palavra (segundo ao quarto campo) que constam naquela linha.
6) sort -t : 2 -3 passwd - Organiza o arquivo chamado passwd usando como referência a terceira até a quarta palavra (terceiro ao quarto campo).
- OBS:
Note que a opção -t especifica o caracter ":" como delimitador de campos ao invés do espaço. Neste caso, o que estiver após ":" será considerado o próximo campo.
---

Linux, grep e expressões regulares…

“Linux, grep e expressões regulares, alguma coisa…”

| >_ Grep… | >_ Expressões Regulares… |

grep significa "impressão de expressão regular global". Uma "expressão regular" é uma cadeia de texto que descreve um padrão de pesquisa específico.

Diferentes aplicativos e linguagens de programação implementam expressões regulares de maneira um pouco diferente. Skzaine estará explorando apenas um pequeno subconjunto do modo como o grep descreve seus padrões.

Uso Básico

Em sua forma mais simples, o grep pode ser usado para combinar padrões literais em um arquivo de texto. Isso significa que, se você passar uma palavra ao grep para procurar, ela imprimirá todas as linhas no arquivo que contém essa palavra.

Podemos procurar por todas as linhas que não contenham uma palavra, em um arquivo de texto com o seguinte comando:

grep -v "palavra-que-busco" Meu-Arquivo-de-Texto.txt

Da mesma forma, a âncora "$" pode ser usada após uma string para indicar que a correspondência só será válida se ocorrer no final de uma linha.

Pode-se combinar cada linha que termina com qualquer palavra escolhida usando o comando abaixo:

grep "minha-palavra-escolhida$" Meu-Arquivo-de-Texto.txt

Tem como encontrar todas as ocorrências de palavras em um texto que tenham um anúncio de substring, bd, cd, dd, ed.

grep -ow '.*\(a\|b\|c\|d\|e\)d.*' Meu-Arquivo-de-Texto.txt

egrep -ow '.*(a|b|c|d|e)d.*' Meu-Arquivo-de-Texto.txt

Acima, usa-se a opção -o para produzir todas as correspondências em sua própria linha e não na linha inteira onde o padrão foi encontrado e na opção -w que especifica que antes e depois da correspondência deve haver um limite de palavra.

Dá para combinar qualquer caractere. Por exemplo, tem o caractere de ponto (.). Ele é usado em expressões regulares para significar que qualquer caractere único pode existir no local especificado. Por exemplo, se quisermos corresponder a qualquer coisa que tenha dois caracteres e depois a string "water", poderíamos usar o seguinte padrão:

grep "..water" Meu-Arquivo-de-Texto.txt

Só para distrair, falamos aqui um pouquinho sobre: Grep e Expressões Regulares

Até Breve!

🙂

Linux comando curl (com exemplos)

-----------------

Linux: Exemplos de Comandos Curl

-----------------

Eu entendo que comando "curl" é uma ferramenta de linha de comando usada para transferir dados de/para um servidor.

-----------------

A ferramenta suporta vários protocolos como:

DICT, ARQUIVO, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET e TFTP.

-----------------

Exemplos do comando Curl...

-----------------

Exemplos:

1-Faço o download e armazeno a saída em um arquivo

Usando a ferramenta, posso baixar dados representados por uma URL e armazená-los em um arquivo.

Veja como posso usar a ferramenta para baixar os dados de um URL:

curl [url]

-----------------

Por exemplo:

curl http://www.nomono.com

-----------------

O comando acima exibirá os dados baixados como saída no meu terminal. Para armazenar a saída em um arquivo, executo o seguinte comando:

curl [url]> [nome do arquivo de saída]

curl http://www.nomono.com > nomono.html

-----------------

Tenho em mente que o Curl exibirá um medidor de progresso no terminal, independentemente de como ele está sendo executado.

-----------------

Aqui está a saída do comando acima:

curl-command-arquivoguardado

-----------------

Alternativamente, posso usar a opção -o para salvar a saída (dados baixados) em um arquivo específico.

curl -o [nome do arquivo de saída] [url-name]

-----------------

Por exemplo:

curl -o nomono.html http://www.nomono.com

Da mesma forma, também existe uma opção -O ("O" em maiúsculas) que permite salvar os dados baixados em um arquivo com o mesmo nome do arquivo remoto.

curl -O [url]

-----------------

Por exemplo:

curl -O https://nomono/docs/manpage.html

-----------------

O comando acima salvará os dados baixados em um arquivo chamado "manpage.html".

-----------------

Exemplo: saída do comando 2 Silent Curl

-----------------

Se eu não quiser que o Curl exiba detalhes do andamento e erros na saída, uso a opção -s.

-----------------

Por exemplo, considero o seguinte caso no qual o Curl lança um erro:

-----------------

curl https://nomono-command-silent

-----------------

Para silenciar erros como esses, uso a opção -s.

$ curl -s [url]

-----------------

Por exemplo:

$ curl -s https://nomono.com

-----------------

Aqui está a saída:

curl-command-silent-s

-----------------

OBS:
nenhum erro é mostrado na saída.

-----------------

Caso eu queira que o Curl exiba apenas erros e não outros detalhes (como os detalhes do progresso exibidos por padrão), use a opção -S junto com a opção -s.

-----------------

Por exemplo:

$ curl -s -S https://nomono.com (opção curl-comando-com-s-S)

-----------------

Exemplo: 3 Download de vários arquivos

Usando a ferramenta, posso baixar vários arquivos através de um único comando.

$ curl -o / O [url1] -o / o [url2]

-----------------

Por exemplo:

$ curl -O https://nomono.se/docs/manpage.html -O https://nomono/docs/manual.html

-----------------

OBS:
Quando eu usar a opção "-o", preciso fornecer um nome de arquivo no comando para armazenar a saída.

-----------------

Exemplo: 4 Lidar com redirecionamentos de URL usando o comando curl

Suponha que eu forneço um URL para o comando Curl, mas a página da Web não existe (digamos, foi movida para outro local).

Nesse caso, posso usar a opção de linha de comando -L, que fará com que o curl refaça a solicitação no novo local.

-----------------

Por exemplo, considero um caso em que, em Curl, há um erro como "página movida".

curl-command-semL

-----------------

Mas se acessar a página da Web por meio de um navegador da Web, observo um redirecionamento.

-----------------

Para garantir que o Curl também lide com esse redirecionamento, uso a opção de linha de comando -L.

$ curl -L [url]

-----------------

Por exemplo:

$ curl -L nomon.com

-----------------

Aqui está a saída:

curl-command-with-L

Exemplo: 5 Informações sobre o URL usando a opção -v / –trace

-----------------

Posso recuperar informações detalhadas sobre uma operação Curl. Esse recurso pode ser acessado usando a opção -v.

As linhas que começam com '>' e '<' exibem os dados de cabeçalho que são enviados e recebidos, respectivamente, por Curl e *, significam informações adicionais fornecidas pela ferramenta.

$ curl -v [url]

-----------------

Por exemplo:

$ curl -v https://curl.nomon/docs/manpage.html
Aqui está a saída:

curl-command-verbose

-----------------

Se não estiver satisfeito com os detalhes que obtevie usando a opção -v e quiser acessar mais informações, uso a opção –trace.

$ curl –trace [arquivo-que-quero-guardar-output] [url]

-----------------

Por exemplo:

$ curl - info de rastreamento https://nomono/docs/manpage.html

-----------------

Aqui está a saída:

curl-command-trace

-----------------

Exemplo: 6 Pesquisar palavra-significado usando o protocolo DICT com o comando curl

Usando a ferramenta, posso procurar uma palavra no terminal usando o protocolo dict. Um url do dicionário dict.org é passado para ele. Existem cerca de 77 dicionários suportados pelo servidor dict.org.

-----------------

Para listar todos os dicionários suportados no meu terminal, executo o seguinte comando:

$ curl dict: //dict.org/show: db

-----------------

Aqui está a saída:

curl-command-showalldict

-----------------

Agora, para pesquisar uma palavra em um dicionário específico, uso o seguinte comando:

$ curl dict: //dict.org/d: [palavra a ser pesquisada]: [nome do dicionário]

-----------------

Por exemplo:

$ curl dict: //dict.org/d: comando: gcide

-----------------

Nota: gcide é um nome curto para um dicionário chamado “The Collaborative International Dictionary of English”.

-----------------

Aqui está a saída:

curl-command-singledictsearch

-----------------

Se quiser pesquisar uma palavra em todos os dicionários, executo o seguinte comando:

$ curl dict: //dict.org/d: [palavra a ser pesquisada]: *

-----------------

Por exemplo:

$ curl dict: //dict.org/d: comando: *
curl-command-dictionary

-----------------

Conclusão:

Este é o básico. O Curl oferece um conjunto de recursos que posso acessar por meio das várias opções de linha de comando.

Até Breve!

🙂

.

Manjaro 17.1.10 – Remover Pacotes Órfãos

2018

-------------------

Mandar um comando para dentro de um arquivo de texto pra eu conferir depois:

sudo pacman -Sargumento >> info-produzida-pelo-comando.txt

-------------------

Para obter informação detalhada de um pacote que eu quero instalar ou remover:

sudo pacman -Si nome-do-pacote

sudo pacman -Si nome-do-pacote >> info-detalhada-do-pacote.txt

-------------------

Para saber o que será/foi modificado:

sudo pacman -Qi nome-do-pacote

sudo pacman -Qi nome-do-pacote >> saida-do-comando1a.txt

sudo pacman -Qii nome-do-pacote

sudo pacman -Qii nome-do-pacote >> saida-do-comando1.txt

-------------------

Buscar um um pacote:

sudo pacman -Ss nome-do-pacote

sudo pacman -Ss nome-do-pacote >> saida-do-comando2.txt

-------------------

Atualizar todo o Manjaro:

sudo pacman -Syyuu

-------------------

Remover pacotes desnecessários:

sudo pacman -Qdt

-------------------

Verificar pacotes instalados manualmente por mim:

sudo pacman -Qe >> saida-do-comando3.txt

-------------------

Se eu quiser ver as dependências de um programa:

sudo pactree nome-do-programa

-------------------

Para listar os pacotes orfãos, executo:

sudo pacman -Qdt

-------------------

Se houver pacotes órfãos vai aparecer uma lista, então a remoção destes pacotes é realizada com o comando abaixo:

sudo pacman -Rns $(pacman -Qqdt)

-------------------

Remover todos menos as 3 últimas versões:

sudo paccache -rvk3

-------------------

Limpar o Cache aumenta espaço livre no disco, mas é melhor usar o comando acima. Usando o comando abaixo perco a possibilidade de downgrade:

sudo pacman -Sc

-------------------

Deixando a atualização do Manjaro mais rápida:

sudo pacman-mirrors -f 5 && sudo pacman -Syy

-------------------

Otimizando a database:

sudo pacman-optimize && sync

-------------------

Instalar um pacote baixado:

sudo pacman -U /package_path/package_name.pkg.tar.xz

-------------------

Posso também usar a URL:

sudo pacman -U http://www.examplepackage/repo/examplepkg.tar.xz

-------------------

Removendo pacotes:

sudo pacman -R nome-do-pacote

-------------------

Removendo pacotes com as dependências:

sudo pacman -Rs nome-do-pacote

-------------------

Listar os pacotes instalados:

sudo pacman -Q

-------------------

Listar os pacotes instalados e mandar para um arquivo de texto:

sudo pacman -Q >> lista-de-pacotes-instalados.txt

-------------------

Listar todos os pacotes do AUR:

sudo pacman -Qem

sudo pacman -Qem >> lista-de-pacotes-instalados-do-AUR.txt

-------------------

Ver dependências de pacotes:

sudo pactree nome-do-pacote

sudo pactree nome-do-pacote >> lista-dependencias-pacote1.txt

sudo pactree -c nome-do-pacote

sudo pactree -c nome-do-pacote >> lista-dependencias-pacote2.txt

sudo pactree -s -c nome-do-pacote

sudo pactree -s -c nome-do-pacote >> lista-dependencias-pacote3.txt

-------------------

Reinstalando o yaourt:

sudo pacman -S base-devel yaourt

yaourt -Syua

yaourt -Syua --devel

yaourt -Qdt

-------------------

Até Breve

🙂

.