Sem resumo de edição
 
(10 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 85: Linha 85:
* O dispositivo "<span style="color:red">sd</span><span style="color:green">aa</span>": é um dispositivo do tipo armazenamento <span style="color:red">flash ou HD de ligação SATA</span> e foi o <span style="color:green">vigésimo-sétimo</span> deste tipo a ser reconhecido pelo linux;
* O dispositivo "<span style="color:red">sd</span><span style="color:green">aa</span>": é um dispositivo do tipo armazenamento <span style="color:red">flash ou HD de ligação SATA</span> e foi o <span style="color:green">vigésimo-sétimo</span> deste tipo a ser reconhecido pelo linux;
* O dispositivo "<span style="color:red">hd</span><span style="color:green">e</span>": é um dispositivo do tipo <span style="color:red">HD de ligação IDE</span> e foi o <span style="color:green">quinto</span> dispositivo deste tipo a ser reconhecido pelo linux.
* O dispositivo "<span style="color:red">hd</span><span style="color:green">e</span>": é um dispositivo do tipo <span style="color:red">HD de ligação IDE</span> e foi o <span style="color:green">quinto</span> dispositivo deste tipo a ser reconhecido pelo linux.
Uma tecnologia nova é o NVMe, que é acrônimo para "Non-Volatile Memory Express", é destinada à SSD's modernos e é comum deparar com estes novos discos. Sua nomenclatura segue a regra:
* Primeiros caracteres: nvme;
* Próximo: Um número inteiro (0,1...) indicando o disco ("<span style="color:red">nvme</span><span style="color:green">0</span>");
* Próximos dois: nN, sendo N um número maior que 0 indicando 'namespace' (área formatada em pequenos blocos lógicos) ("<span style="color:red">nvme0</span><span style="color:green">n1</span>");
* Próximos dois: pN, sendo N um número maior que 0 indicando 'partição' ("<span style="color:red">nvme0n1</span><span style="color:green">p1</span>").


== Particionamento ==
== Particionamento ==
Linha 128: Linha 134:
* escrever ou alterar (w)
* escrever ou alterar (w)
* executar ou ser listado (x)
* executar ou ser listado (x)
Com o comando '''chmod''' o usuário consegue alterar as permissões no '''registro de permissões''' com base no código numérico que segue o comando, sendo este composto de três números e cada número representa  em sua sequência o '''usuário de criação''', '''seu grupo''' e por fim os '''demais usuários do S.O.'''
{| class="wikitable"
!Digito
!Permissão
!Registro
|-
|7
|leitura, escrita e execução
|rwx
|-
|6
|leitura e escrita
|rw-
|-
|5
|leitura e execução
|r-x
|-
|4
|apenas leitura
|r--
|-
|3
|escrita e execução
| -wx
|-
|2
|apenas escrita
| -w-
|-
|1
|apenas execução
| --x
|-
|0
|nenhum
| ---
|}


Por exemplo, o usuário pedro possui um arquivo de uma aplicação chamado programa.c criada por ele e por seu grupo de trabalho, ao passo que <span style="color:red">pedro</span> e seu <span style="color:orange">grupo</span> podem ler, escrever e executar seus arquivos, porém <span style="color:green"><span style="color:green">todos os outros usuários</span></span> não o podem nem escrever e nem executar, neste caso o registro de permissão para programa.c será: <span style="color:red">rwx</span><span style="color:orange">rwx<span style="color:green">r--</span></span>
Por exemplo, o usuário pedro possui um arquivo de uma aplicação chamado programa.c criada por ele e por seu grupo de trabalho, ao passo que <span style="color:red">pedro</span> e seu <span style="color:orange">grupo</span> podem ler, escrever e executar seus arquivos, porém <span style="color:green"><span style="color:green">todos os outros usuários</span></span> não o podem nem escrever e nem executar, neste caso o registro de permissão para programa.c será: <span style="color:red">rwx</span><span style="color:orange">rwx<span style="color:green">r--</span></span>
Linha 433: Linha 479:
|-
|-
|<nowiki>||</nowiki>
|<nowiki>||</nowiki>
|É o oposto do &&, só executa se ouver falha no primeiro comando.
|É o oposto do &&, só executa se houver falha no primeiro comando.
|-
|-
|;
|;
Linha 439: Linha 485:
|}
|}


== Compressão x Empacotamento de arquivos e pastas ==
== '''Compressão vs Empacotamento''' de arquivos e pastas ==
Alguns arquivos, principalemente pacotes possuem a extensão '''.tar.gz''' ou '''.tar.bz2''', isto indica que os mesmos estão empacotados e compactados, mas o que é isso?  
Alguns arquivos, principalemente pacotes possuem a extensão '''.tar.gz''' ou '''.tar.bz2''', isto indica que os mesmos estão empacotados e compactados, mas o que é isso?  
Empacotamento é o ato de juntar vários arquivos em apenas um (com extensão '''.tar''') e compactar é tornar esse arquivo menor. O linux possui vários aplicativos que fazem a compressão, mas em sua maioria os mais famosos são o gunzip (extensão '''.gz''') e o bunzip2 (extensão '''.bz2''').  
Empacotamento é o ato de juntar vários arquivos em apenas um (com extensão '''.tar''') e compactar é tornar esse arquivo menor. O linux possui vários aplicativos que fazem a compressão, mas em sua maioria os mais famosos são o gunzip (extensão '''.gz''') e o bunzip2 (extensão '''.bz2''' ou '''.bzip2''').  


Para empacotar e comprimir um arquivo, usa-se o comando '''tar''' e suas opções.
Para empacotar e comprimir um arquivo, usa-se o comando '''tar''' e suas opções (no estilo ''tar -OPÇÕES''), dentre as ''OPÇÕES'' temos:
*f: deve ser utilizada sempre que utilizar o comando tar
*c: cria um pacote tar
*v: modo verbose (ajuda a ver o que o comando está fazendo de fato)
*z: usada para arquivos a serem comprimidos com a extensão gz
*j: usada para arquivos a serem comprimidos com a extensão bz2 ou bzip2
*x: desempacota arquivos tar (caso o arquivo fora criado com uma extensão, deve-se utilizar o comando da mesma)
 
Exemplo:
 
'''tar -czf nome_do_arquivo.tar.gz Arquivo_inserido''' - cria um arquivo '''.tar.gz'''
 
'''tar -zxf nome_do_arquivo.tar.gz''' - desempacota o arquivo no diretório atual


== Acesso remoto ==
== Acesso remoto ==
O '''ssh''' (também chamado secure-shell) dá ao usuário a possibilidade de acessar remotamente outro host (computador ou servidor que esteja conectado na rede),  permitindo fazer tudo, como se o usuário estivesse digitando os comandos diretamente na máquina.  
O '''ssh''' (também chamado secure-shell) dá ao usuário a possibilidade de acessar remotamente outro host (computador ou servidor que esteja conectado na rede),  permitindo fazer tudo, como se o usuário estivesse digitando os comandos diretamente na máquina.  


Já se o usuário quiser copiar arquivos remotamente de sua máquina física para a máquina remota via rede (ou vice-versa) existe o comando '''scp'''. Há ainda um o '''sftp''' que permite que você tenha acesso à máquina física (semelhante ao '''ssh'''), porém este comando serve pra fazer cópias, utilizando '''get''' e '''put'''.  
Já se o usuário quiser copiar arquivos remotamente de sua máquina física para a máquina remota via rede (ou vice-versa) existe o comando '''scp''', que pode utilizar uma das sintaxes a seguir:
* ''scp IP_ORIGEM:/CAMINHO_DIRETORIO_ORIGEM/ARQUIVO IP_DESTINO:/CAMINHO_DIRETORIO_DEST/'' : é usado quando o seu usuário local possui acesso à máquina remota
* ''scp USUARIO@IP_ORIGEM:/CAMINHO_DIRETORIO_ORIGEM/ARQUIVO USUARIO@IP_DESTINO:/CAMINHO_DIRETORIO_DEST/'' : é usado quando necessitar dos usuários com acesso à máquina remota de origem e de destino (caso o usuário da máquina local de algum dos servidores tiver permissão e acesso à máquina, pode ser desprezado no comando)
* ''scp IP_ORIGEM:/CAMINHO_DIRETORIO_ORIGEM/ARQUIVO /CAMINHO_DIRETORIO_LOCAL/'' : é usado para copiar algo de uma máquina remota para o computador local (novamente se necessitar de um usuário específico que tenha permissão e acesso à máquina origem, deve ser colocado com o ''USUARIO@'' antes de ''IP_ORIGEM'')
 
Há ainda um outro comando que realiza cópias entre máquinas linux, que é o '''sftp''' que permite que você tenha acesso à máquina física (semelhante ao '''ssh'''), porém este comando serve pra fazer cópias de uma forma mais direta, utilizando apenas '''get''' (para fazer o download do arquivo) e '''put''' (para enviar um arquivo para o servidor remoto).


= Aplicações Úteis =
= Aplicações Úteis =
Linha 519: Linha 582:


== Como alterar o nome do computador na rede (hostname)? ==
== Como alterar o nome do computador na rede (hostname)? ==
Basta editar o arquivo /etc/hosname
Basta editar o arquivo /etc/hostname


== Como coloco uma aplicação local disponível online? ==
== Como coloco uma aplicação local disponível online? ==
Linha 531: Linha 594:
* OBS2: caso a aplicação esteja rodando no mesmo host que será aberto pelo navegador, troque '''IP_DA_MÁQUINA''' por '''localhost'''.
* OBS2: caso a aplicação esteja rodando no mesmo host que será aberto pelo navegador, troque '''IP_DA_MÁQUINA''' por '''localhost'''.


 
== Como montar partições automaticamente no boot do sistema? ==
Siga esse artigo muito bom do Viva_O_Linux: https://www.vivaolinux.com.br/artigo/Montando-particoes-automaticamente?pagina=2


== Não possuo o Linux instalado em minha máquina, como poderei testar os comandos Linux? ==
== Não possuo o Linux instalado em minha máquina, como poderei testar os comandos Linux? ==

Edição atual tal como às 14h15min de 23 de agosto de 2021

Introdução

Principais Distribuições

O linux, diferente dos outros sistemas operacionais é composto de diferentes versões, que chamamos de distribuições, onde cada uma possui sua característica bem definida, mas customizável, pelo que chamamos de interface gráfica.

No início do desenvolvimento desse poderoso sistema operacional não havia nenhum tipo de parte visual, tudo se fazia a partir da tão temida "tela preta" que chamamos de modo-texto. Atualmente, diferente desse cenário, temos muitas opções de customização do visual da distribuição escolhida, bem como programas com interfaces amigáveis que são compatíveis com linux e a maioria destes são gratuitos.

A comunidade Linux (pessoas interessadas a aumentar a fama e melhorar sua usabilidade), preza muito pelo desenvolvimento de código aberto, o que faz com que qualquer pessoa de qualquer lugar do mundo possa contribuir com seu desenvolvimento.
Também conta com vários fóruns de ajuda, como o Viva o Linux e o LinuxQuestions, onde é possível trocar informações a respeito de soluções e curiosidades.

Basicamente, toda distribuição pode ser encontrada em uma grande "árvore genealógica" que indica a origem de cada uma, onde a partir destas origens, foram desenvolvidos os mais famosos para uso pessoal, e em servidores, tais como:

As distribuições acima foram colocadas em forma de lista, ao passo que os sub-itens são distribuições que derivaram de uma distribuição comum (dos itens de um nível acima na lista), por exemplo, Ubuntu é baseado em Debian, já o Fedora é baseado em RedHat.

Caso tenha interesse a respeito de mais detalhes de qualquer distribuição linux, saber ranking's de uso entre outras informações, acesse a DistroWatch, que recentemente lançou um formato de organização em tabela periódica das distribuições linux, classificados pela evolução de distribuições famosas, como mostra a figura a seguir:

Erro ao criar miniatura: Arquivo com dimensões maiores que 12,5 MP

Pacotes e Gerenciamento

No linux, existem programas que já vem instalados junto com algumas distribuições (como libreOffice, Python, Mozila firefox, entre outros), porém para instalar um programa qualquer é necessário que se instale os pacotes daquele programa. Mas o que vem a ser pacote? Resposta: Tudo o que o linux traz, desde programas, bibliotecas, jogos, entre outros, que o usuário necessite para seu trabalho no sistema operacional. Como o linux é apoiador do movimento open-source, foram criados gerenciadores de pacotes, que organizam, verificam dependências e facilitam a instalação de um pacote no sistema operacional.

Cada família de distribuição possui seu gerenciador de pacotes que vem já por padrão quando é instalado o sistema operacional. Por exemplo no Debian (e seus derivados) utiliza-se o gerenciador apt-get, já na família RedHat (e seus derivados) utiliza-se o yum. O linux armazena a lista de todos os pacotes instalados e suas versões. Com o passar do tempo, a comunidade atualiza os pacotes incluindo novas funcionalidades, aumentando a segurança e estabilidade, então é necessário a atualização dos mesmos. Existe o sub-comando (update) em todos os gerenciadores, que faz a comparação da lista local de pacotes, com a lista online (da comunidade da distribuição), e ao comparar, faz a substituição do pacote por um mais atual e verifica-se se há novas dependências, tornando o processo automático e seguro.

Interfaces Gráficas

Todas as distribuições linux possuem o modo de texto, que nada mais é do que o gerenciamento do sistema via "tela preta", controlado apenas pelo teclado.

Modo Texto
Modo-Texto

Com a evolução dos monitores, foram criadas novos tipos de interfaces gráficas, que melhoram a relação homem-máquina, tornando mais atrativo e fácil o uso do linux (como aconteceu na evolução dos outros sistemas operacionais), a diferença é que no linux não há apenas uma, mas vários tipos de interfaces gráficas para uma mesma distribuição, dando o poder de escolha para o usuário, fazendo uso daquela que mais lhe agrada. As interfaces que estão entre as mais conhecidas, são:

  • Gnome
Debian
OpenSuse
Fedora
Erro ao criar miniatura: Arquivo não encontrado
RedHat
CentOS
Manjaro
  • KDE
Debian
OpenSuse
Fedora
Arch Linux
Slackware
Manjaro
  • Cinnamon
Linux Mint
Fedora
  • Unity
Ubuntu

Dispositivos de armazenamento

A nomenclatura de dispositivos de armazenamento (HD, SSD, pen-drive) no linux difere dos demais sistemas operacionais, visto que segue um padrão para melhor gerenciamento por parte do administrador. É composto de duas primeiras letras que informam o tipo do dispositivo; depois, uma ou mais letras para informar a ordem de reconhecimento do dispositivo. Calma, a gente explica!

  • Duas primeiras letras:
    • Dispositivos que possuem ligação IDE (como disco rígido), recebem as letras "hd";
    • Dispositivos que possuem ligação SATA (como disco rígido) ou armazenamento flash (como SSD e pen-drive), recebem as letras "sd".
  • Próxima(s) letra(s):
    • Começa com a letra "a", indicando o primeiro dispositivo reconhecido;
    • As demais letras do alfabeto indicam os próximos dispositivos, por exemplo "b" é o segundo dispositivo, "c" é o terceiro, e assim por diante;
    • Quando chega na letra "z" é iniciado uma nova sequência a partir de "aa", por exemplo "ab" é o vigésimo-oitavo dispositivo, e assim por diante.

Exemplos:

  • O dispositivo "sda": é um dispositivo do tipo armazenamento flash ou HD de ligação SATA e foi o primeiro dispositivo deste tipo a ser reconhecido pelo linux;
  • O dispositivo "sdaa": é um dispositivo do tipo armazenamento flash ou HD de ligação SATA e foi o vigésimo-sétimo deste tipo a ser reconhecido pelo linux;
  • O dispositivo "hde": é um dispositivo do tipo HD de ligação IDE e foi o quinto dispositivo deste tipo a ser reconhecido pelo linux.

Uma tecnologia nova é o NVMe, que é acrônimo para "Non-Volatile Memory Express", é destinada à SSD's modernos e é comum deparar com estes novos discos. Sua nomenclatura segue a regra:

  • Primeiros caracteres: nvme;
  • Próximo: Um número inteiro (0,1...) indicando o disco ("nvme0");
  • Próximos dois: nN, sendo N um número maior que 0 indicando 'namespace' (área formatada em pequenos blocos lógicos) ("nvme0n1");
  • Próximos dois: pN, sendo N um número maior que 0 indicando 'partição' ("nvme0n1p1").

Particionamento

Sabendo identificar um dispositivo de armazenamento, é possível fazer o particionamento, isto é, a divisão do espaço total do dispositivo para posteriormente fazer a formatação e instalação do mesmo. A identificação de uma partição, vem junto com a do dispositivo, porém é indicada com um número que simboliza a ordem de criação da mesma, por exemplo:

  • A partição sda1, é a primeira partição do primeiro dispositivo do tipo flash ou SATA;
  • A partição sda2, é a segunda partição do primeiro dispositivo do tipo flash ou SATA;
  • A partição hdf4, é a quarta partição do sexto dispositivo do tipo IDE;

Diferente de outros sistemas operacionais, o linux permite a segmentação das partes que compõem o sistema em mais de uma partição, como por exemplo, o administrador pode configurar uma partição somente para gravar os documentos de todos os usuários e outra para o sistema operacional, fazendo com que seus dados fiquem protegidos de possíveis (porém raras) falhas.

Também existe um novo tipo de partição no linux, chamado de swap, que nada mais é uma partição destinada exclusivamente ao aumento de memória RAM (muito utilizada em computadores de poucos recursos). Vale lembrar que o desempenho deste recurso pode ser baixo, dependendo exclusivamente da tecnologia do dispositivo (tempo de leitura e escrita).

Sistemas de arquivos

Um sistema de arquivo define a forma da estrutura de dados que serão alocados nos discos. No caso de haver uma queda de energia, ou problema parecido, alguns sistemas de arquivos previnem as perdas. O linux suporta todo tipo de sistemas de arquivos, como por exemplo NTFS, FAT32 (sistemas de arquivos utilizados no windows), ext3, ext4 e XFS (sistemas utilizados em S.O. baseados em Unix), entre outros.

Alguns dispositivos de armazenamento (HD externos, pendrives) e até mesmo mídias (CD, DVD) já vem com seu sistema de arquivos definidos por fábrica, e são reconhecidos pelo linux. Porém em algumas distribuições, principalmente as mais antigas, esse reconhecimento não dá acesso aos dados contidos nos dispositivos. É aqui que inserimos outro termo muito utilizado no linux: montagem de sistemas de arquivos. Ao montar um sistema de arquivos, o usuário faz essa ponte entre o sistema operacional e os dados contidos no dispositivo ou mídia, garantindo seu acesso.

Organização de diretórios

Quando um novo sistema operacional é instalado, todos seus arquivos ficam localizados em um diretório que chamamos de raiz, que é representado pela símbolo barra "/". Este é o diretório mais alto na árvore de diretórios. Abaixo dele temos todos os outros diretórios que compõem o sistema, dentre eles os principais são:

  • /bin: aplicativos instalados com sistema operacional (programas que podem ser executados por qualquer usuário)
  • /sbin: aplicativos instalados com sistema operacional, com permissão somente para o usuário administrador
  • /dev: arquivos de dispositivos (cd-rom, dvd, HD, pendrive)
  • /lib e /lib64: bibliotecas dos aplicativos instalados
  • /proc: processos que estão em execução
  • /tmp: arquivos temporários
  • /boot: arquivos de sistema do boot (como o GRUB)
  • /etc e /usr: arquivos de configuração
  • /mnt: diretório de montagem padrão de dispositivos e mídias
  • /root: diretório pessoal do usuário administrador
  • /home: diretórios pessoais dos demais usuários, também representado pelo símbolo til "~"
  • /opt: aplicativos não oficiais instalados
  • /var: arquivos de log, valores de variáveis de sistema

Tipos de usuário e permissões

O linux é um sistema operacional que define bem o papel de cada usuário, fazendo com que seja permitido a colaboração de mais de um usuário em um mesmo projeto, ao qual damos o nome de grupo. Existem três tipos de usuário, são eles:

Quando um novo usuário é criado (comando useradd), ele inicialmente pertence ao grupo de nome igual ao do usuário e recebe um número de identificação, chamado UID. Porém existe a possibilidade de se criar um novo grupo de trabalho para que vários usuários possam construir um projeto privado. Esse novo grupo é criado com o comando groupadd, ao qual também recebe um número de identificação, chamado GID.

O root é o usuário responsável pela administração e manutenção de todo o sistema operacional, e tem permissão para tudo, exceto para o que diz respeito às senhas de outros usuários. O usuário de aplicação é criado automaticamente quando um serviço ou aplicação é instalado e necessita-se da manipulação de arquivos (como por exemplo arquivos de log). O usuário comum é qualquer outro, que seja criado para se usar o sistema operacional.

Para cada arquivo dentro do linux, é adicionado um registro de permissão (com nove caracteres), que faz com que o arquivo possa ser lido, alterado ou executado por cada usuário, dependendo da permissão do arquivo. Esses nove caracteres, podem ser entendidos pela junção de três campos, onde cada campo representa uma permissão direcionada ao: usuário de criação, seu grupo de trabalho e os demais usuários do S.O. Para cada um dos campos, temos as três permissões padrão do linux para arquivos:

  • ler (r)
  • escrever ou alterar (w)
  • executar ou ser listado (x)

Com o comando chmod o usuário consegue alterar as permissões no registro de permissões com base no código numérico que segue o comando, sendo este composto de três números e cada número representa em sua sequência o usuário de criação, seu grupo e por fim os demais usuários do S.O.

Digito Permissão Registro
7 leitura, escrita e execução rwx
6 leitura e escrita rw-
5 leitura e execução r-x
4 apenas leitura r--
3 escrita e execução -wx
2 apenas escrita -w-
1 apenas execução --x
0 nenhum ---

Por exemplo, o usuário pedro possui um arquivo de uma aplicação chamado programa.c criada por ele e por seu grupo de trabalho, ao passo que pedro e seu grupo podem ler, escrever e executar seus arquivos, porém todos os outros usuários não o podem nem escrever e nem executar, neste caso o registro de permissão para programa.c será: rwxrwxr--

Dentro do diretório /etc, temos arquivos que contém informações sobre usuários e grupos. São eles:

Arquivo Função
/etc/passwd Armazena informações dos usuários: nome, caracter de senha protegida, UID, GID, nome completo, diretório home padrão e shell padrão.
/etc/group Armazena informações dos grupos: nome, GID, usuários.
/etc/shadow Armazena nome de usuário e sua senha criptografada. Somente o root tem acesso a esse arquivo.

Para alterar a senha de um usuário, basta usar o comando passwd.

Instalação da distribuição escolhida

Atualmente instalar um sistema operacional linux se tornou uma tarefa fácil, devido às amigáveis interfaces criadas para tal tarefa. Neste tutorial, será mostrada a instalação da distribuição OpenSuse, porém é importante observar que há uma semelhança quanto ao processo de instalação em qualquer distribuição, o que tornaria repetitivo e cansativo para o tutorial, se fosse abordado com todas as distribuições. Peço desculpas, pois todos as imagens foram tiradas a partir de um software de máquinas virtuais (chamado boxes), e que possui uma barra superior descrevendo qual sistema está sendo executado no momento e também há uma outra barra do sistema operacional da máquina física, mostrando hora, data e outras informações presentes no momento da imagem, por isso favor desconsiderar essas informações da imagem.

Inicialmente é exibido um menu-inicial, contendo instalação do sistema operacional, opção de utilizá-lo antes de instalar, e algumas configurações da instalação e testes, como idioma, formato do teclado, teste de memória e confiabilidade da mídia de instalação, entre outros.

menu-inicial

Após ser escolhida a opção de instalar o sistema, é requisitado novamente algumas configurações como idioma e teclado que serão utilizados no sistema operacional.

Erro ao criar miniatura: Arquivo não encontrado
configurações iniciais

Após essas configurações, é exibido a opção de particionamento dos discos e configuração do sistema de arquivos. Nessa etapa é dado ao usuário a escolha de fazer automaticamente ou manualmente. É nessa etapa também em que há a possibilidade de se criar a memória swap, que é uma memória emulada em disco, que possui menor desempenho do que a memória RAM, mas que ajuda o sistema operacional não travar em casos que toda a memória RAM seja alocada.

automaticamente
manualmente

Após o particionamento, é exibida a opção de escolher qual interface gráfica será instalada e utilizada pelo usuário. Essa opção está presente na instalação do openSuse, porém nem toda distribuição permite essa escolha, pois já vem por padrão qual interface será utilizada, o que é importante ser observado quando o usuário fizer a aquisição da mídia de instalação da distribuição escolhida.

Erro ao criar miniatura: Arquivo não encontrado
escolha de interface gráfica

Por fim é solicitado as informações como: nome local do computador e de rede, e criação de usuário e senha do root. Após essa etapa, é solicitada a confirmação da instalação, contendo toda informações de todas as opções escolhidas pelo usuário, nesta etapa começa-se a gravação do sistema operacional em disco.

usuários do sistema
Erro ao criar miniatura: Arquivo não encontrado
confirmação

Terminal

Tudo no linux pode ser feito de forma mais rápida utilizando-se essa poderosa ferramenta, que muitos conhecem como "tela preta". O terminal é um programa que utiliza o modo-texto do linux, e opera sobre uma aplicação chamada shell, que é um interpretador de comandos digitados, aos quais são transferidos para o kernel, que é o programa mais importante do linux, responsável pelo gerenciamento de hardware do computador. Quando o terminal é iniciado, exibe inicialmente informações do tipo: usuário_atual@nome_do_computador diretório_atual usuário_administrador(#)_ou_não_administrador($), o que facilita no caso de estar logado em outras máquinas via rede.

Exemplo:

debian-terminal
openSuse-terminal
Usuário: stmiller Usuário: sholva
Nome do computador: bruckner Nome do computador: dakara
Diretório atual: ~ (/home/stmiller) Diretório atual: /home/sholva/sholva.org/content
Usuário é administrador: $ (não!) Usuário é administrador: $ (não!)

Geralmente os comandos dados no terminal seguem a seguinte ordem: comando --subcomando (ou -opção) locais (ou arquivos)

Atalhos do teclado no terminal

No terminal linux, possuem atalhos do teclado que facilitam o usuário na hora de escrever o comando, são eles:

Sequência de teclas Ação
TAB completa o nome do comando ou diretório;
TAB+TAB mostra o conteúdo do diretório digitado, ou lista a possibilidade de comandos existentes que completam o comando digitado
setas ou permite visualizar comandos já digitados
Ctrl + Shift + C copia texto selecionado do terminal para a área de transferência
Ctrl + Shift + V cola texto da área de transferência para o terminal
Ctrl + C encerra a execução de um comando
Ctrl + D desloga de um usuário no terminal (também é usado como quit em alguns programas, como python)

Nomenclatura de atalhos no terminal

No linux, os atalhos de teclado são muitas das vezes achados em manuais, subcomandos de help, e nas próprias interfaces de alguns comandos. E esses atalhos de teclado possuem uma forma de apresentação diferente da que estamos acostumados (como Ctrl, Alt, Shift), porém os mesmos se referem a essas teclas especiais, segue a relação:

nomenclatura tecla
M- ALT
^ CTRL

Comandos básicos

Os comandos mais básicos e mais utilizados do linux e seus subcomandos (ou opções) são:

  • ls (exibir conteúdo de diretórios, informações de arquivos no terminal)
    • -lh (exibe o resultado em forma de lista, com informações de: permissão, usuário e grupo a qual pertence, data e hora de criação e tamanho de arquivos)
    • -a (exibe e diretórios arquivos ocultos)
  • cd (voltar para o diretório pessoal)
    • diretório (abre o diretório)
  • cp (copiar arquivos)
    • -r diretórios (copia diretórios)
  • mv (mover, renomear)
  • cat (exibir todo o conteúdo de arquivos no terminal)
  • echo (impressão de mensagens no terminal)
  • less (exibir o conteúdo de um arquivo, com possibilidade de interações como: subir e descer a página)
  • grep (filtrar dentro de conteúdo de um arquivo)
  • man (exibir o manual de qualquer comando)
  • nl (numera linhas de um arquivo)
  • wc (conta o número de linhas, palavras e caracteres de um arquivo)
  • du -h (exibe o tamanho de arquivos)
  • passwd (muda a senha do usuário)
  • whoami (mostra quem é o usuário atual)
  • pwd (mostra o diretório atual)
  • find local_possivel_do_arquivo -name nomearquivo (mostra o diretório onde o arquivo está)

Observação Importante: todo comando no linux vem com a opção "--help" que auxilia e informa opções do comando a ser utilizado.

Redirecionadores de dados

No linux é possível combinar comandos para fazer uma operação mais elaborada. Todo comando gera uma saída que é armazenada em uma região de memória que se chama "saída-padrão". Alguns comandos, principalmente os que alteram arquivos ou saídas de outros comandos, armazenam esses arquivos ou saídas em uma região de memória chamada "entrada-padrão". Caso aconteça algum erro, o mesmo é armazenado em uma região denominada "erro-padrão". Com essas regiões de memória é possível fazer a manipulação de caracteres, edição de arquivos, buscas, numeração das linhas de um arquivo, entre outros (utilizando os comandos já apresentados). Porém para fazer o interfaceamento entre um comando e outro, utilizamos o que chamamos de redirecionadores, são eles:

  • barra em pé ( | ): também chamado pipe, pega a saída-padrão de um comando e insere na entrada-padrão de outro comando (como um argumento)
  • maior ( > ): pega a saída-padrão de um comando e cria um arquivo com o nome passado (ou o reescreve), e escreve a saída-padrão do comando nesse arquivo
  • maior-maior ( >> ): faz o mesmo que o anterior, porém este anexa a saída do comando com o conteúdo do arquivo.
  • menor ( < ): é usado para ler um arquivo e jogá-lo na entrada-padrão do comando.
  • menor-menor ( << ): é utilizado para inserção de caracteres na entrada-padrão do comando, utilizando-se um token, ao passo que é encerrada a inserção de caracteres utilizando-se o mesmo token.

Exemplo:

  1. Listar o conteúdo de um arquivo e numerar as linhas do mesmo:

<syntaxhighlight lang="shell"> ls -lh | nl </syntaxhighlight>2. Buscar a palavra ola no conteúdo de um arquivo:<syntaxhighlight lang="shell"> cat arquivo | grep "ola" </syntaxhighlight>3. Salvar o conteúdo do manual do comando ls em um arquivo:<syntaxhighlight lang="shell"> man ls > arquivo </syntaxhighlight>4. Anexar o manual do comando cp ao arquivo (que continha o manual do comando ls)<syntaxhighlight lang="shell"> man cp >> arquivo </syntaxhighlight>5. Ler o conteúdo deste arquivo utilizando o redirecionador menor<syntaxhighlight lang="shell"> cat < arquivo </syntaxhighlight>

Editores de texto no terminal

O terminal linux apresenta diversas opções de pacotes de editores de texto, porém os mais utilizados são:

  • vi (mais antigo dos editores de texto e é instalado em toda distribuição linux)
  • nano (é um pacote a parte disponível na lista de pacotes instaláveis)

Por serem operados no modo texto, não há nenhuma interação com o mouse (ou touch) do computador, portanto todos a edição é feita via terminal. Nesse caso é importante a prática para aprender a utilizar o mesmo.

Editor de texto vi

O vi possui três modos de edição de texto, sendo eles:

  • modo INSERT (tecla INSERT ou ESC+i): habilita a possibilidade de se editar o texto, de forma normal.
  • modo REPLACE (tecla INSERT ou ESC+i novamente): habilita a possibilidade de sobrescrever o texto
  • modo comandos (tecla ESC): habilita a possiblilidade de editar o texto utilizando comandos, como:
Sequência de teclas Ação
dd deletar linha
yy copiar linha
p colar linha
u desfazer última alteração
CTRL + R refazer última alteração desfeita
:x salvar o arquivo e sair
:q! sair do arquivo sem salvar
/palavra fazer busca de uma palavra no texto

Editor de texto nano

O nano é um editor que só opera no modo de inserção de caracteres, e para auxilio do usuário, exibe uma barra inferior, onde é mostrado os principais atalhos do teclado. São eles:

Sequência de teclas Ação
CTRL + X sair
CTRL + O salvar alterações
CTRL + G ajuda
CTRL + K recortar linha
CTRL + U colar linha

Agendamento de tarefas

No linux é possível automatizar tarefas repetitivas, por exemplo, backup de banco de dados, atualização da hora e do S.O, entre outros. Para agendar uma tarefa é utilizado o comando: crontab -e. Ao adicionar uma tarefa, essa será relacionada com o usuário que está a adicionando, ou seja, se a tarefa exigir algum comando que o usuário que está criando não possui, a mesma não será executada.

Para adicionar uma tarefa, é necessário seguir uma sintaxe que o crontab exige, que pode ser conferida no arquivo /etc/crontab, como mostra a figura a seguir:

Sintaxe do agendador de tarefas

Atalhos de diretórios e arquivos

O linux como em outros sistemas operacionais, possui atalhos para facilitar a vida de quem usa. O conceito de atalho é chamado de link, e temos basicamente dois tipos de links no linux: link simbólico e hard link. Também permite que dois usuários acessem o mesmo arquivo.

A diferença entre os dois é que se o arquivo original for apagado, o link simbólico ficará inacessível, já o hard link não, e o arquivo poderá ser acessado normalmente através dele. Para se criar hardlinks utiliza-se o comando ln, já para se criar um link simbólico, utiliza-se o comando ln -s.

Processos

No linux todo comando, quando executado no shell é tratado como um processo, ou seja, o kernel disponibiliza uma parcela dos recursos para que o mesmo consiga rodar de forma adequada. Para cada processo é adicionado um número de indentificado chamado PID, que é um número crescente,

São comandos para acompanhar os processos que estão em execução:

Comando Ação
ps -a mostra os processos que estão em execução no momento que o comando é executado.
top exibe um gerenciador de tarefas que atualiza a cada 3 segundos. Contem informações como PID, usuário, uso de CPU, memória, entre outros.
free -h mostra a quantidade de memória que está sendo usada e a que está livre.

Ajuda

O linux traz vários comandos para quem precisa de ajuda:

Comando Ação
man exibe um manual de um comando, trazendo todas as informações como o que faz, opções, parâmetros e outros.
help exibe uma lista de comandos internos do linux
apropos exibe uma lista de comandos que conseguem executar uma determinada tarefa.
comando -h a maioria dos comandos possuem essa opção, que exibe uma resumo do manual do comando

modo verbose

Para quem usa alguma aplicação externa, que seja executada no terminal, em sua maioria trazem um modo chamado verbose (geralmente usa-se a opção -v ou --verbose dos comandos), que possui a função de exibir todas as alterações e mensagens da aplicação, muito usado para casos em que necessite localizar falhas na aplicação.

Básico de Scripts

Os scripts são programas escritos na linguagem shell, que são interpretados e permite executar vários comandos, evitando repetições no terminal.

Variáveis de ambiente

Para facilitar a vida de desenvolvedores, o linux criou uma ferramenta chamada variável de ambiente, que nada mais é o mesmo conceito de variável das linguagens de programação, onde pode ser usada para armazenar valores, comandos, em scripts, entre outros. As variáveis de ambiente podem ser usadas no script, como também no terminal. Para listar as variáveis existentes, basta executar o comando env.

A sintaxe para se criar uma variável de ambiente é simples:<syntaxhighlight lang="shell"> VARIAVEL=valor </syntaxhighlight>Já para usar o valor contido na mesma, é necessário usar a seguinte sintaxe:<syntaxhighlight lang="shell"> $(VARIAVEL) </syntaxhighlight>

Operadores

Os operadores linux são muito usados em scripts, e possuem a função de permitir que comandos sejam executados sequencialmente, e permite ter um controle quanto ao êxito ou fracasso, sem a necessidade de fazer uma lógica mais complexa usando estruturas de condição (IF e ELSE).

Dependendendo da resposta de um primeiro comando, o segundo é executado ou não.

Dentre os operadores, temos:

Operador Ação de controle
&& Executa o próximo comando se a resposta do primeiro tiver êxito.
|| É o oposto do &&, só executa se houver falha no primeiro comando.
; Ignora respostas, isto é, executa os dois comandos, independente de falha ou êxito.

Compressão vs Empacotamento de arquivos e pastas

Alguns arquivos, principalemente pacotes possuem a extensão .tar.gz ou .tar.bz2, isto indica que os mesmos estão empacotados e compactados, mas o que é isso? Empacotamento é o ato de juntar vários arquivos em apenas um (com extensão .tar) e compactar é tornar esse arquivo menor. O linux possui vários aplicativos que fazem a compressão, mas em sua maioria os mais famosos são o gunzip (extensão .gz) e o bunzip2 (extensão .bz2 ou .bzip2).

Para empacotar e comprimir um arquivo, usa-se o comando tar e suas opções (no estilo tar -OPÇÕES), dentre as OPÇÕES temos:

  • f: deve ser utilizada sempre que utilizar o comando tar
  • c: cria um pacote tar
  • v: modo verbose (ajuda a ver o que o comando está fazendo de fato)
  • z: usada para arquivos a serem comprimidos com a extensão gz
  • j: usada para arquivos a serem comprimidos com a extensão bz2 ou bzip2
  • x: desempacota arquivos tar (caso o arquivo fora criado com uma extensão, deve-se utilizar o comando da mesma)

Exemplo:

tar -czf nome_do_arquivo.tar.gz Arquivo_inserido - cria um arquivo .tar.gz

tar -zxf nome_do_arquivo.tar.gz - desempacota o arquivo no diretório atual

Acesso remoto

O ssh (também chamado secure-shell) dá ao usuário a possibilidade de acessar remotamente outro host (computador ou servidor que esteja conectado na rede), permitindo fazer tudo, como se o usuário estivesse digitando os comandos diretamente na máquina.

Já se o usuário quiser copiar arquivos remotamente de sua máquina física para a máquina remota via rede (ou vice-versa) existe o comando scp, que pode utilizar uma das sintaxes a seguir:

  • scp IP_ORIGEM:/CAMINHO_DIRETORIO_ORIGEM/ARQUIVO IP_DESTINO:/CAMINHO_DIRETORIO_DEST/ : é usado quando o seu usuário local possui acesso à máquina remota
  • scp USUARIO@IP_ORIGEM:/CAMINHO_DIRETORIO_ORIGEM/ARQUIVO USUARIO@IP_DESTINO:/CAMINHO_DIRETORIO_DEST/ : é usado quando necessitar dos usuários com acesso à máquina remota de origem e de destino (caso o usuário da máquina local de algum dos servidores tiver permissão e acesso à máquina, pode ser desprezado no comando)
  • scp IP_ORIGEM:/CAMINHO_DIRETORIO_ORIGEM/ARQUIVO /CAMINHO_DIRETORIO_LOCAL/ : é usado para copiar algo de uma máquina remota para o computador local (novamente se necessitar de um usuário específico que tenha permissão e acesso à máquina origem, deve ser colocado com o USUARIO@ antes de IP_ORIGEM)

Há ainda um outro comando que realiza cópias entre máquinas linux, que é o sftp que permite que você tenha acesso à máquina física (semelhante ao ssh), porém este comando serve pra fazer cópias de uma forma mais direta, utilizando apenas get (para fazer o download do arquivo) e put (para enviar um arquivo para o servidor remoto).

Aplicações Úteis

Alguns aplicativos úteis que auxiliam nas tarefas do dia-a-dia de um usuário linux, são:

Aplicativo Site do desenvolvedor Instalação

Debian-like

Instalação

RedHat-like

Função
franz http://meetfranz.com/ gerenciador de chats, como whatsapp-web, skype, telegram, entre outros.
WPS Office http://wps-community.org/downloads editor open-source de documentos (feitos por editores da Microsoft).
Shotwell apt-get install shotwell yum install shotwell editor de imagens
Sublime Text https://www.sublimetext.com/3 editor de texto
Gnote apt-get install gnote yum install gnote cria post-it
Filezilla apt-get install filezilla yum install filezilla gerenciador de arquivos remotos em servidores, usando interface gráfica.
RedNotebook apt-get install rednotebook yum install rednotebook agenda digital
Mater Pdf Editor https://code-industry.net/get-masterpdfeditor/ Editor de pdf free (semelhante ao adobe acrobat)
alsamixer apt-get install alsa Não se Aplica gerenciador de áudio do Ubuntu

FAQ

Como alterar o nome do computador na rede (hostname)?

Basta editar o arquivo /etc/hostname

Como coloco uma aplicação local disponível online?

Caso você criou uma página web, ou mesmo uma aplicação que use tecnologias como html, php, javascript, Python, entre outras, e deseja divulgar na rede essa aplicação, você deverá ter um servidor instalado, o mais usado é o sevidor Apache que no linux é gerido pelo serviço httpd.

Para ativar o serviço é necessário dar o comando: service httpd status. O diretório onde se deve colocar a aplicação é o /var/www/html. Para acessar a aplicação, basta abrir um navegador e digitar: IP_DA_MÁQUINA/LOCALIZAÇÃO_DA_APLICAÇÃO/APLICAÇÃO

  • OBS1: CAMINHO_DA_APLICAÇÃO é o caminho de diretórios até se chegar à aplicação.
    • Exemplo, sua aplicação está localizada em: /var/www/html/app/aplicacao.php, o endereço a ser digitado no navegador será:

IP_DA_MÁQUINA/app/aplicacao.php

  • OBS2: caso a aplicação esteja rodando no mesmo host que será aberto pelo navegador, troque IP_DA_MÁQUINA por localhost.

Como montar partições automaticamente no boot do sistema?

Siga esse artigo muito bom do Viva_O_Linux: https://www.vivaolinux.com.br/artigo/Montando-particoes-automaticamente?pagina=2

Não possuo o Linux instalado em minha máquina, como poderei testar os comandos Linux?

Aqui vão algumas alternativas:

  • Testar utilizando esse site que possui um kernel emulado online: http://bellard.org/jslinux/;
  • Criar uma máquina virtual, utilizando programas como VMWare ou VirtualBox, e nele instalar o GNU/Linux de sua preferência;
  • Muitas distribuições possuem a opção live-CD, que permite que se utilize alguns comandos e o uso completo do sistema sem que seja instalado.

Conteúdos muito bons na internet

Canais do youtube

  • O Diolinux é um canal do youtube, criado pelo brasileiro Dionatan Simioni, que sempre posta vídeos sobre alguma novidade da comunidade linux, faz reviews de diversas distribuições, entre outros.
  • O LinuxTips é outro canal do youtube, criado pelo brasileiro Jeferson Noronha, que possui vários vídeos sobre diversas ferramentas de administração de sistemas Linux, palestras dadas em eventos, sempre com uma abordagem leve e descontraída.
  • O canal Toca do TUX criado pelo brasileiro Gabriel Silveira, que posta vídeos sobre artigos científico e documentários contando pontos históricos e curiosidades envolvendo Linux, dando dicas e trazendo analises de pesquisas.

Outros assuntos, você encontra em: Conteúdo Anterior