Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O comando grep no Linux é largamente usado no dia a dia das tarefas administrativas em Linux. Ele filtra as linhas de um determinado arquivo procurando por uma expressão regular como padrão.
O grep pode ler um ou mais arquivos que são passados como argumento ou pode receber na entrada padrão o redirecionamento da saída de outro processo. Se o grep receber mais de um arquivo ou um wildcard como argumento para efetuar a sua busca, ele vai indicar o nome do arquivo seguido de dois pontos e a linha encontrada.
O grep utiliza o padrão de Expressões Regulares POSIX BRE.
Assim, os meta-characters ?+{}| ( ) não tem significado especial. No padrão BRE esses caracteres somente são interpretados com significado especial se precedidos com a contra-barra \? \+ \{ \} \| \( \).
Suas opções mais frequentes são:
-c: Mostra somente a contagem das ocorrências nos arquivos e não as linhas onde as ocorrências foram encontradas;
-h: Mostra somente as linhas encontradas, sem a indicação do nome dos arquivos;
-i: Procura as ocorrências ignorando se as letras estão em maiúsculas ou minúsculas;
-v: Mostra todas as linhas do arquivo procurado menos as ocorrências encontradas. Tem o efeito inverso;
-n: Mostra, além do texto das linhas encontradas, o número das linhas dentro dos arquivos;
Procura todas as linhas que iniciam com as vogais no /etc/passwd. A expressão regular chamada lista procura qualquer um dos caracteres dentro do colchete:
Procura por todas as linhas em que o primeiro caracter seja qualquer um e o segundo caracter seja uma vogal. O ponto final na expressão regular simboliza “um caractere qualquer”:
É possível também usar expressões com OU para fazer buscas de mais de um termo:
$ grep -E 'carla|uira' arquivo
Vale lembrar que o grep faz distinção de maiúsculas e minúsculas. Para fazer uma busca independente se o texto está em caixa alta ou baixa, pode-se usar a opção “-i“:
$ grep -i uira *
As buscas com a opção “-i” demoram mais tempo.
É possível usar as chaves para especificar ocorrências de algum caracter da busca em maiúsculo ou minúsculo:
$ grep [Uu]ira *
Para mostrar a linha de uma determinada ocorrência:
$ grep -n uira arquivo
Para mostrar uma linha antes e depois do termo, pode-se usar a opção “-C N“, onde N é o número de linhas:
$ grep -C 1 function LivroSubcapituloList.php
public static function onChangeLivro($param = null)
{
Comando egrep
O comando egrep funciona como a opção -E do grep.
Ele na verdade utiliza o padrão POSIX de Expressões Regulares ERE na busca. Isto significa que a contra-barra deve ser usada para definir que o próximo caractere é um caractere literal e não um metacaractere como no padrão POSIX BRE.
Isto significa que os caractes ? + { } | ( ) não precisam da contra-barra para funcionar como meta-caracteres.
Tome como exemplo a lista de aniversários. Com o comando grep e sem as contra-barras, o grep não e capaz de encontrar os aniversariantes de Maio:
$ grep "^[0-9]{4}-05-[0-9]{2}" datas
Já o egrep é capaz de interpretar as { } como meta-caracteres sem a contra-barra. É importante que você guarde a diferença do uso das contra-barras entre o grep (que necessita delas para indicar metacaracteres) e o egrep (cujo efeito das contra-barras é inverso, indicando um caractere comum):
$ egrep "^[0-9]{4}-05-[0-9]{2}" datas 1978-05-11 João 1980-05-14 Carla
Somente com a opção -E o grep é capaz de achar as ocorrências:
$ grep -E "^[0-9]{4}-05-[0-9]{2}" datas 1978-05-11 João 1980-05-14 Carla
É muito importante você saber o que faz a contra-barra no padrão POSIX BRE x POSIX ERE.
Comando fgrep
O comando fgrep também é parecido com o grep, mas ele não suporta expressões regulares, procurando somente uma chave de busca ou um texto comum nos arquivos.
Por este motivo, é mais rápido que o grep, mas menos versátil.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O Comando GnuPG no Linux é uma aplicação do projeto GNU que implementa o OpenPGP tal como definido pela RFC4880. GnuPG permite criptografar e assinar os seus dados e mensagens, utilizando chaves públicas e privadas.
A ideia é você disponibilizar a sua chave pública para o mundo e manter a sua chave privada em sigilo.
Qualquer um com uma cópia de sua chave pública pode encriptar informações e enviá-las para você, porque só você poderá as mensagens. Também é possível assinar arquivos, de forma que qualquer pessoa com a sua chave pública é capaz de atestar que determinado arquivo ou mensagem veio de você.
A última versão do GnuPG pode ser instalada através do pacote gnupg da sua distribuição.
Feita a instalação, é preciso gerar as chaves do usuário com a opção “–gen-key” do comando gpg:
$ gpg --gen-key
Figura 22 – gpg –gen-keys
Uma vez criada o par de chaves, deve-se exportar a chave pública para dar para outras pessoas, de modo que elas possam lhe enviar mensagens ou verificar a assinatura das mensagens que você enviou. Para exportar a chave pública, usa-se a opção “–export”:
A assinatura “fingerprint” deverá então ser verificada com o proprietário da chave pública, de forma que se garanta que aquela chave pública pertence mesmo ao seu verdadeiro dono. Isto evita que alguém possa criar uma chave pública fingindo ser outra pessoa.
Algumas vezes você pode apenas aceitar que a chave é mesmo da pessoa que a enviou para você, mesmo sem verificar a assinatura.
De qualquer forma, você pode assinar a chave pública importada com a sua chave:
Desta forma, o documento.pdf foi criptografado e salvo com o nome documento.gpg, que somente poderá ser lido pela Carla Cruz, que detém a chave privada.
Desta forma, a Carla, e somente a Carla, poderá ver o conteúdo do arquivo documento.gpg com a opção “–decrypt”:
Você poderá também assinar documentos digitalmente, de forma que as pessoas possam verificar que um arquivo é mesmo proveniente de você e não foi alterado por ninguém.
Para assinar digitalmente um arquivo, usa-se a opção “–sign”:
$ gpg --output documento.sig --sign documento.pdf
Desta forma, o arquivo será comprimido e a sua assinatura será adicionada.
Com a opção “–sign” o arquivo não está criptografado e qualquer um que tenha a sua chave pública poderá ver seu conteúdo e verificar sua assinatura.
Para verificar uma assinatura e ler o documento assinado, deve-se usar a opção “–decrypt”:
Você também poderá assinar e-mails com uma assinatura em texto, usando a opção “–clearsign”:
$ gpg --clearsign email.txt
Desta forma o texto será assinado com um hash:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Este é um email de teste. Abraços, prof. Uirá Ribeiro -----BEGIN PGP SIGNATURE----- iQGzBAEBCgAdFiEE5yXuNnirPJnVHGJWRr/MF+SDpuAFAl2wadEACgkQRr/MF+SD puAU9AwAkmQ/ffkJv0k2T1yq0VxuuG6ezxOulapr0dsFHCVWCXinYmjil/oNMamw tZw4cDAKbdjMmP+3dg8a234dsFyN43AOiwznx8QPeJeMtWQNaWo9cg5THNZiKR5w thsPMUC+3mcV0AqlGy3y5u9m4Uh6K97x+BjGc2XYkG6O3bocooSRTS3+rvDbGioR 3a84WtGY+YlgUsKlGhn4eUdfJ1+LxUNgUsSuT45CdDujB2VQXw3KK34/CGAxdctH LBsI+DNrc/w/1lTjnmNpYGCdWjtQXAt8/DpXuI1GFJCZJmXD3Eu0gC7R7XTibcjU CvMp5ovONTCGrnwkYXBSVwM/fZYKrcAManG5Vqyqepd7x6FVysxVPpbgPh/IKN51 RlfQeuF0+PjvqO5r3ShZxWvawnVh1kkEe2I0mYgW2aQWUdN7hC+zQZaHx6Gj3gIZ MD1OJvCAuhW3yhBQV0EMOjotAhQC8NOfVrEKSSqD0yZs40kM+lwsNlJlNfLDMh3T JIcAJGem =TPYZ -----END PGP SIGNATURE-----
A mesma opção “–decrypt” pode ser usada para verificar se a mensagem é autêntica e não foi alterada:
$ gpg --decrypt email.asc Este é um email de teste. Abraços, prof. Uirá Ribeiro gpg: Signature made Wed 23 Oct 2019 11:55:13 AM -03 gpg: using RSA key E725EE3678AB3C99D51C625646BFCC17E483A6E0 gpg: Good signature from "Uira Ribeiro <[email protected]>" [ultimate]
Revogar Chaves
Se você perdeu sua chave privada, ou caso alguém tenha tido acesso a sua chave privada, ou mesmo você tenha esquecido sua passphrase, você pode gerar uma revogação de chave.
A revogação de chave gera um certificado que deve ser distribuído alertando os usuários de que sua chave e assinatura atuais não são mais válidos.
$ gpg --output revoke.asc --gen-revoke minhachave
O argumento minhachave pode ser o ID da chave, ou o userID que identifica sua chave.
Este certificado de revogação é bem pequeno. Recomenda-se imprimi-lo e guardá-lo em local seguro e apagá-lo do computador.
Os arquivos do GnuPG residem no diretório HOME dos usuários, com o nome de ~/.gnupg/
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O comando getnet é útil para pegar os dados de uma determinada conta de usuário ou grupo, sem precisar listar o conteúdo dos arquivos passwd, shadow ou group e filtrar os resultados com o grep.
Você que é profissional de TI, de suporte ou desenvolvedor, já pensou em aprender Linux de verdade?
E ainda de quebra tirar uma certificação LPI Linux Essentials de quebra?
E melhor ainda, com o melhor curso Online para Linux?
“Os cursos do professor Uirá são ótimos para quem está se preparando para as certificações LPI e CompTIA Linux+ bem como para o mercado de trabalho. O professor aborta os assuntos de forma clara, concisa e objetiva. Além da teoria ganha-se muita prática podendo especialmente aplica-la através dos laboratórios GNU/Linux online disponíveis através do portal do aluno. Recomendo!”
“O conteúdo abordado pelo prof. Uirá foi o melhor pro meu preparatório para LPI 1. Eu vinha de outro S.O e as aulas lecionadas aqui me ajudaram tanto para estudo quanto para manipulação do Linux no dia a dia. Aprendi muito rápido! Só tenho a agradecer ao professor Uirá pela excelente didática e material de estudo.”
“Os assuntos são mostrados de maneira mais ampla, na medida certa dentro da prova. É um material atualizado, contendo o conteúdo que será abordado. Cria confiança de que o que está estudando é para passar e não para te enrolar. Recomendo!”
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O arquivo /etc/fstab armazena a configuração de quais dispositivos devem ser montados e qual o ponto de montagem de cada um na carga do sistema operacional, mesmo dispositivos locais e remotos.
A configuração do arquivo /etc/fstab contém os seguintes campos:
Dispositivo: Especifica o dispositivo a ser montado. Pode ser nome do dispositivo em /dev, UUID ou LABEL;
Ponto de Montagem: Especifica o diretório em que o dispositivo será montado;
Tipo de Sistema de Arquivos: Especifica o tipo de sistema de arquivos a ser montado;
Opções de Montagem: Especifica as opções de montagem dependendo do tipo de sistema de arquivos;
Frequência de Backup: O programa dump consulta o arquivo para saber a frequência de Backup. É um campo numérico, onde 1 é para sistemas ext2 e 0 para outros;
Checagem de Disco: determina se o dispositivo deve ou não ser checado na carga do sistema pelo fsck. É um campo numérico, onde 0 é para não ser checado, 1 é para ser checado primeiro (sistema raiz) e 2 para checar depois do sistema raiz.
Os campos podem ser separados por espaço simples, ou TAB.
Cada linha no /etc/fstab deve ser um ponto de montagem separado e deve obrigatoriamente conter todos esses campos para que o registro no /etc/fstab esteja correto.
Os tipos de sistema de arquivos mais comuns são: ext2, ext3, ext4, reiserfs, xfs, btrfs, vfat, iso9660, nfs, swap, etc.
As opções de montagem disponíveis são:
Opção
Descrição
auto
Habilita que o dispositivo seja montado na carga do sistema operacional.
noauto
Desabilita que o dispositivo seja montado na carga do sistema operacional.
ro
Monta o sistema de arquivos como somente leitura.
rw
Monta o sistema de arquivos para leitura e gravação.
exec
Habilita a execução de arquivos no sistema de arquivos especificado.
noexec
Desabilita a execução de arquivos.
user
Possibilita que qualquer usuário monte o dispositivo.
nouser
Somente o superusuário pode montar e desmontar o dispositivo.
sync
Habilita a transferência de dados síncrona no dispositivo.
async
Habilita a transferência de dados assíncrona no dispositivo.
dev
Dispositivo especial de caracteres.
suid
Habilita que os executáveis tenham bits do suid e sgid e executem como se fosse o superusuário.
nosuid
Desabilita que os executáveis tenham bits do suid e sgid.
defaults
Configura as opções de montagem como rw, suid, exec, auto, nouser e async.
Neste exemplo, o dispositivo que foi montado como raiz uma a notação UUID, tem o sistema de arquivos xfs, com opções padrão. Um outro disco /dev/xvdf foi montado como diretório /home do sistema, usando o ext4.
E ainda, o /etc/fstab contém informação da partição usada como swap. Neste caso o ponto de montagem será swap, bem como o tipo também será swap. Desta forma, quando o computador reiniciar, a partição de swap será habilitada automaticamente com o comando “swapon”.
Relembre que o comando mount com a opção -a remonta todos os dispositivos configurados no /etc/fstab.
É comum usar o UUID dos discos no /etc/fstab de forma a evitar que o nome do disco em /dev/ seja alterado devido alguma mudança no hardware, como por exemplo a inserção de um novo disco.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O comando fsck no Linux é na verdade um “wrapper” que serve para chamar outros comandos que são variações do fsck para vários tipos de sistemas de arquivos.
Você pode perceber isso com o comando ls no diretório /usr/sbin:
Dependendo do sistema de arquivos, o fsck invoca o fsck.algumacoisa apropriado para lidar com aquele sistema de arquivos.
O objetivo do fsck é checar e corrigir a existência de erros no sistema de arquivos. Por padrão, o fsck assume o sistema de arquivos ext2 e, após fazer uma checagem no disco, pergunta ao usuário se ele deseja fazer as correções necessárias.
Como parâmetro o fsck aceita um nome de dispositivo (ex.: /dev/hdc1, /dev/sdb2), um ponto de montagem (ex: /, /usr, /home), ou um Label (ex.: LABEL=root) ou uma identificação de disco UUID (ex.: UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd ).
Um identificador UUID é um número único que identifica um disco, como se fosse o “MAC Address dos discos”.
As opções frequentemente usadas são:
-A: Faz a checagem de todos os discos especificados no arquivo /etc/fstab;
-t: Especifica o tipo de sistema de arquivos que deverá ser checado;
Ainda podemos ter algumas opções para o sistema de arquivos ext2:
-b: Superbloco Especifica qual superbloco o fsck irá trabalhar;
-c: Faz checagem de setores defeituosos (bad blocks);
-f: Força a checagem do sistema de arquivos mesmo que este pareça íntegro;
-p: Repara automaticamente o sistema de arquivos;
-y: Executa o fsck de modo não interativo, não fazendo nenhuma pergunta ao usuário;
Um superbloco é uma área especial no disco com informações importantes dos parâmetros do sistema de arquivos e o seu estado atual. Geralmente o superbloco é copiado em diversas áreas no disco como backup.
O fsck precisa que o disco esteja desmontado para realizar a checagem e reparos:
Dependendo do tamanho e dos inúmeros reparos que a partição necessita, o processo do fsck pode demorar horas.
Para verificar a partição do sistema raiz há duas opções:
Usar um Pendrive com Linux para dar carga em outro Linux e verificar a partição;
Usar o comando “touch /forcefsck” para criar o arquivo forcefsck, que força o linux a verificar a partição raiz no boot do sistema
Comando e2fsck
O comando e2fsck é usado para checar o sistema de arquivos ext2, ext3 e ext4. Ele é a versão do fsck para os sistemas de arquivos baseados no sistema de arquivos ext.
As opções são comuns ao fsck, já que é ele que é invocado pelo fsck quando se trata de partições do tipo ext2, ext3 e ext4.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
shared: Memória compartilhada entre os processos usando o tmpfs. Os processos podem alocar memória que compartilham por exemplo com seus processos filhos;
buffers: Memória usada como área de transferência pelo kernel;
cache: Memória usada pelo cachê de páginas de memória;
available Memória disponível sem levar em conta a memória utilizada em buffers e cache
Nas versões antigas do comando free, a informação de buffer e cachê eram separadas em duas colunas, porque o Linux dividia o buffer cachê em duas categorias. O buffer era a memória usada pelo Kernel, e o Cachê era a memória usada pelos processos para cachê. Resolveu-se juntar essa informação em uma só coluna.
O comando free também mostra a quantidade de memória disponível e usada em swap.
O swap é uma área de disco que pode ser usada como espaço de troca de páginas de memória entre a RAM e o disco, possibilitando aumentar virtualmente a memória do sistema através das paginações entre memória e disco. É um recurso que pode ser usado para evitar um esgotamento da memória RAM.
Se o sistema faz bastante uso do Swap, é um forte indicativo que há necessidade de se aumentar a quantidade de memória RAM em função do uso do sistema.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O shell possui estruturas para testar condições e executar determinadas sequências de programas várias vezes (loop), até que a condição testada seja satisfeita.
O comando for no Linux permite que laços (loops) sejam feitos para que um ou mais comandos sejam executados até que uma determinada variável percorra todos os valores de uma dada lista.
Veja um exemplo simples:
$ for numero in um dois três quatro cinco do echo "Contando: $numero" done
Contando: um
Contando: dois
Contando: três
Contando: quatro
Contando: cinco
O mesmo comando pode ser escrito em uma só linha:
$ for numero in um dois três quatro cinco; do echo "Contando: $numero"; done
$ for i in $(cat lista_arquivos.txt); do cp $i $i.backup; mv $i.backup /tmp/backup; done;
Este laço atribui para a variável $i cada linha do arquivo lista_arquivos.txt.
A expressão $(comando) gera uma lista com resultado do comando. Tem o mesmo efeito que utilizar o comando entre crases: `comando`.
Em seguida ele executa os comandos para renomear e mover os arquivos até que a lista esteja completa.
Agora um exemplo um pouco mais complexo, com uso do for com if:
$ for i in `ls -1`; do if test -f $i; then echo “$i é um arquivo “; else echo “$i não é um arquivo”; fi ; done
Desktop não é um arquivo Documents não é um arquivo Downloads não é um arquivo HR_PROFESSOR.sql é um arquivo
Nesta linha, o resultado do comando ls -1 é colocado na variável $i; Depois cada linha da variável $i é testada para saber se é um arquivo; se for verdadeiro, será exibida uma frase e, se for falso, outra frase.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
O comando fmt no Linux (format) formata um texto com uma largura específica. Ele pode remover espaços ou adicionar espaços conforme a largura desejada. O padrão são 75 caracteres.
A opção frequentemente utilizada é:
-w número: Configura a largura desejada para o texto.
Exemplo:
$ fmt –w 50 LEIAME.TXT
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.