PDA

Ver Versão Completa : Linux - um pouco de informação sobre utilitarios de linha de comando e shell script antes de comecar a estudar ou fazer um curso sobre estes dois assuntos



gu1le
19-07-2017, 12:15
2017
.


LINUX - UM POUCO DE INFORMAÇÃO SOBRE UTILITÁRIOS DE LINHA DE COMANDO E SHELL SCRIPT ANTES DE COMEÇAR A ESTUDAR OU FAZER UM CURSO SOBRE ESTES DOIS ASSUNTOS

.

O Porque deste texto?


Este texto, anotação, artigo; é para eu dar uma lida sem compromisso. Tem me ajudado bastante. Eu leio do começo ao fim sem me preocupar muito em entender tudo que estou lendo. É um texto preliminar, pra ir acostumando o meu cérebro.

Tem partes que eu posso executar no terminal e ir sentindo o gostinho de como é fazer ele funcionar.

Mas é apenas, como disse, um artigo que me servirá de base para um estudo sistemático PAGO, que eu vou fazer futuramente.

É um artigo para despertar perguntas e possui algumas respostinhas e alguns exercícios.

Após esta explicação, vamos a introdução.

.

Introdução:


Sou um iniciante em Linux. Um estudante como qualquer outro e, embora seja verdade que haja ferramentas GUI disponíveis para gerenciar praticamente tudo em um sistema GNU/Linux, eu preciso ter algum conhecimento sobre utilitários de linha de comando e shell script para me preparar melhor para trabalhar com a minha distribuição Linux.

.

Vou pesquisar...

.

Me pergunto, o que é shell script?

.

Shell, é um interpretador de comandos que analisa o texto digitado na linha de comando e os executam. Na linha de comandos de um shell, posso utilizar diversos comandos um após o outro, ou mesmo combiná-los numa mesma linha ( ; && | tee \ ). Se eu colocar diversas linhas de comandos em um arquivo texto simples, terei em mãos um Shell Script, ou um script em shell. Existem mais de um Shell, porém o que me interessa agora é o Shell do Linux o bash que significa (Bourne-Again SHell) e dizem ser muito similar a sh, esta é atualmente a shell do Linux mais utilizada porque ela contém características como: Auto-Complete, podemos personalizar todo o output de uma forma simples,entre outras....

.

Quero saber o que são interpretadores de comandos.

.

Interpretadores de comandos são programas de computador responsáveis por tomar as ações efetivas conforme a orientação do usuário através de comunicação textual. O interpretador de comandos do Linux nestes dias é o bash.

.

O que é um interpretador? Quero saber.

.

Interpretador é considerado um tradutor que não gera código objeto. A partir de um programa fonte, escrito em linguagem de alto nível, o interpretador, no momento da execução do programa, traduz cada instrução e a executa em seguida. Exemplo de linguagens interpretadas encontro no bash do Linux.

.

O Shell está entre o kernel e o usuário.

.

O kernel Linux é a única coisa que se comunica com o hardware.

.

Então fica assim:
.

Eu compro um computador. Este computador é uma máquina cheia de hardware.

.

Hardware > Kernel > Shell > Usuário (Eu)

.

Shell é uma interface entre o Sistema Operacional e o usuário.

.

Eu inicio os estudos sobre Shell Script utilizando o bash (/sbin/bash).

.

O BASH permite a execução de seqüências de comandos direto no prompt do sistema ou escritas em arquivos de texto, conhecidos como shell scripts.

.

Pelo que pesquisei, o BASH é o shell desenvolvido para o projecto GNU, da Free Software Foundation, que se tornou padrão nas várias distribuições Linux. Pode ser usado também com outros sistemas operacionais, como o Unix. É compatível com o Bourne shell (sh), incorporando os melhores recursos do C shell (csh) e do Korn Shell (ksh).

.

Posso customizar o ambiente do bash utilizando alguns arquivos/diretórios como:

/etc/profile

/etc/skel

.bash_profile

.bash_rc



Nos sistemas GNU/Linux nomes de arquivos são case-sensitive, ou seja, distinguem maiúsculas de minúsculas e vice-versa.

.

O ambiente de uma sessão SHELL tem seu comportamento alterado de acordo com o conteúdo de algumas variáveis de ambiente, por exemplo:


BASH

HOSTNAME

USER

USERNAME

PATH

PS1

PS2

DISPLAY

SHELL

HISTFILE

HISTFILESIZE

.

Como funciona um Shell?

.

Designadores de expansão de histórico

.

!! - chama o último comando utilizado


History - mostra o histórico de comandos


!n - refere-se ao número n do histórico


!-n - comando atual -n do histórico


!string - refere-se ao último comando que começa com a string (expressão)


!?string - refere-se ao último comando que contenha a string (expressão)


^string1^string2 - repete o último comando substituindo a ocorrência string1 por string2


.

Funcionamento do Shell

.

Um comando para ser interpretado é dividido em partes distintas:

.

[email protected]:~$ ps -aux | grep bash


1
O shell identifica se o arquivo existe no PATH e se o usuário possui privilégios suficientes para executá-lo. Identifica por espaços quais são os parâmetros/argumentos.


2
Esses alteram de alguma forma o comportamento durante a execução e/ou saída do comando.


3
Saída (direcionamento/pipe) que permite ao usuário receber o retorno da execução, seja saída padrão ou alguma mensagem de erro/advertência.

.

Comandos Básicos do Shell


$ <comando> --help


$ free - Argumentos:

-b -k -m -g


$ man <comando>


$ locate - Argumentos:


Base: /var/cache/locate/locatedb


$ ls - Argumentos do ls:

-l -la -lh -lha -R


$ find - Argumentos

-name -iname -a -o -size -type -perm -cmin -ctime -mtime -regex -gid -group -printf -exec <comando> {} \;


$ cat - Argumentos do cat:

-n -b -T


$ uptime


$ cd


$ alias


$ mkdir - Argumentos:

-p -v -m=600


$ touch - Argumentos:

-c -t -a -m


$ rm - Argumentos:

-r -f -rf -i -v


$ sort - Argumentos:

-u -n -r


$ rmdir


$ uniq


$ date - Argumentos:

+FORMATO %H %M %d %m %Y ...


$ date mesdiahoraminuto[segundo][ano]


$ ln - Argumentos:

-s


$ su - Argumentos:

-c <comando> -s SHELL


$ uname - Argumentos:

-r -a


$ du - Argumentos:

-s -h -sh


$ wc - Argumentos:

-l -c -m -w


$ df - Argumentos:

-h -a [arquivo]


$ tar - Argumentos:

-cvzf -zvxf -cvjf -zvjf -rf -tf


.

PARA SABER SOBRE CADA UM DOS COMANDOS USO MAN ANTES DE CADA UM DELES. JÁ DÁ PARA TER UM BOA IDÉIA SOBRE O QUE CADA UM FAZ.

.

1) De que forma você poderia descobrir em que diretório você está?

pwd


2) Qual a diferença entre ( cd / cd .. cd)?

Executo cada um deles para saber.

.


QUAL É A DIFERENÇA ENTRE APT E APT-GET?

.

Hoje em dia eu notei que uso mais os comandos apt, que é mais novo que os comandos apt-get.

.
O Linux Mint de 2017 deriva do Ubuntu que deriva do Debian e o Debian usa o sistema de empacotamento dpkg para eu poder instalar programas e aplicativos. Se não fosse assim eu teria que construir um programa a partir do código fonte. Dizem que é muito trabalhoso e complicado. Os comandos apt que uso no terminal interagem com a ferramenta APT e gerencia pacotes para mim.

.
Por exemplo, eu quero instalar conjunto de ícones e tema chamado Pop do system76:


sudo add-apt-repository ppa:noobslab/themes


sudo apt update


sudo apt install system76-pop-gtk-theme

.

Para o sistema que eu instalei saber que tem coisa nova, atualização de programas, atualizações de segurança, eu tenho que fazer isto por ele usando o comando:


sudo apt update

.
Se eu não fizer isto, o sistema nunca saberá. Para fazer isto eu tenho que ter privilégios de superusuário. O sistema entrará em contato com vários servidores. Ao atualizar vejo 3 tipos de linha. Hit Get e Ign. Hit não muda nada, Ign ignora o pacote. Get tem pacote novo disponível e a info sobre o pacote será baixada (não o pacote). Para instalar as novidades preciso usar:


sudo apt upgrade

.
Se eu usar 'sudo apt full-upgrade' ele além de fazer o serviço do comando anterior vai também remover pacotes do meu sistema se for necessário.


.

A primeira versão estável dos comandos apt foi lançada pelo que li, em 2014.

.

O uso do comando apt é encorajado hoje em dia (2017).

.

Eu hoje instalo um pacote assim:

sudo apt install pacote_nome

.

Antes eu instalava assim:

sudo apt-get pacote_nome

.

Qual é a diferença?

.

O Debian tem um sistema robusto de empacotamento. Cada componente e aplicação é construído dentro de um pacote que é instalado no meu sistema. O Debian usa um gama de ferramentas chamada Advanced Packaging Tool (APT) que gerencia este sistema de empacotamento. Não devo confundir APT com o comando apt porque APT e o comando apt não são a mesma coisa.

.

Tem várias ferramentas que interagem com o APT e me permitem instalar e remover pacotes. O apt-get é um destes comandos. Outra ferramenta linha de comando que eu uso é Aptitude.

.

São ferramente de nível básico e possuem tantas funcionalidades que eu talvez nunca venha a usar todas elas. As ferramentas mais usadas para gerenciamento de pacotes estão incorporadas (por falta de palavra melhor) em ‘apt-get’ e ‘apt-cache’.

.

Pelo que eu entendi, com o apt eu teria, por assim dizer, menos trabalho do que usar os comandos apt-get e apt-cache. O comando apt é mais bem estruturado e oferece as opções necessárias para gerenciar pacotes.

.

Com o apt todas as outras ferramentas necessárias trabalham juntas em um só lugar e eu não fico perdido sob tonelada de opções de comandos. O objetivo do apt é facilitar a minha vida, pois eu sou o usuário final. Por exemplo, com o apt eu posso ver a barra de progresso quando estou instalando ou removendo um programa.

.

O apt também tem um prompt que me diz o número de pacotes que podem ter upgrade quando eu atualizo a database de um repositório.

.

Para obter a mesma resposta do apt-get, eu teria que adicionar mais opções de comando.

.

Com o apt eu posso ter o mesmo resultado do apt-get digitando menos comandos e o apt tem comandos a mais que o apt-get, por exemplo:
.

apt list

apt edit-sources

.

Os comandos apt que eu conheço são estes:

.
1
apt install

2
apt remove

3
apt purge

4
apt update

5
apt upgrade

6
apt autoremove

7
apt full-upgrade

8
apt search

9
apt show

10
apt list

11
apt edit-sources

.

Os únicos que não usei até hoje é:

.

apt edit-sources

apt purge

.

Pelo que li, o apt-get não será descontinuado, e é usado mais para escrever scripts.

.

O apt é o mais adequado para mim creio eu. Porque é menos complicado, mais fácil de usar e o mais importante, é mais fácil de lembrar. São apenas 11 comandos e com estes 11 comandos dá pra fazer tanta coisa.

.

Eu acho que entendi algo sobre a diferença entre apt e apt-get.



O terminal diferencia letras maiúsculas de minúsculas. Preciso me lembrar do nome de alguns simbolos.




NOME DE ALGUNS SÍMBOLOS USADOS NO SHELL DO LINUX:


# - O nome deste símbolo é Cerquilha ou Cardinal

´ - Acento agudo

^ - Acento circunflexo

~ - Til

" - Aspas

/ - Barra

\ - Barra invertida ou contra-barra

- Traço

* - Expansão

| - Pipe



.
Alguns comandos neste texto meu são precedidos por dois tracinhos - - mas podem aparecer na internet como se fossem um traço só --
.

Continuando...


.

BASH E SHELL SCRIPT - ALGUNS COMANDOS DE REDIRECIONAMENTO

.

< Redireciona a entrada padrão (STDIN)

> Redireciona a saída padrão (STDOUT )

2> Redireciona a saída de erro (STDERR)

>> Redireciona a saída padrão, anexando

2>> Redireciona a saída de erro, anexando

| Conecta a saída padrão com a entrada padrão de outro comando

2>&1 Conecta a saída de erro na saída padrão

>&2 Conecta a saída padrão na saída de erro

>&- Fecha a saída padrão

2>&- Fecha a saída de erro

.

PRINCIPAIS ARQUIVOS/DIRETÓRIOS DE CONFIGURAÇÃO


$ /etc/inittab

$ /etc/hostname

$ /etc/passwd

$ /etc/shadow

$ /etc/group

$ /etc/profile

$ /etc/skel

~$ .profile

~$ .bashrc

~$ .bash_history

~$ .bash_logout

$ /etc/addusers.conf

$ /etc/security/

$ /etc/network/interfaces

$ /etc/resolv.conf

$ /etc/host.conf

$ /etc/hosts

$ /etc/rc*

$ /etc/inetd.conf

$ /etc/crontab

$ /etc/cron.*

$ /etc/sudoers

$ /etc/fstab

$ /etc/issue

$ /etc/motd

$ /etc/services

$ /etc/protocols

.

OUTROS DIRETÓRIOS IMPORTANTES:


/tmp

/var/log


.

COMANDOS DE REDE


$ arp

$ wget

$ dig

$ getent

$ nslookup

$ iftop

$ ifconfig

$ ssh

$ ifup

$ scp

$ ifdown

$ finger

$ mii-tool

$ links / links2 / lynx

$ netstat

$ fping

$ ntpdate

$ nmap

$ route

$ tcpdmatch

$ traceroute



.
.

COMANDOS AVANÇADOS


$ dd

$ nohup

$ killall

$ diff

$ pidof

$ top

$ which

$ pstree

$ continuar ..

$ fsck

$ stat

$ last

$ sync

$ lastlog

$ watch

$ lsof

$ dmesg

$ lspci

$ hwclock

$ lsusb

$ bg

$ mount

$ fg

$ nice

$ jobs

$ renice

$ kill



.
.

ALGUNS COMANDOS EXPLICADOS DA SHELL BASH:


~$ cd # comando para acessar/navegar entre diretórios.



~$ cd .. # para sair de diretório, note que os dois pontos estão separados do comando.



~$ ls # lista aquivos ou pasta de um determinado diretórios.



~$ lsusb # lista os periféricos que estão conectados na porta usb.



~$ mkdir # cria uma pasta.



~$ rmdir # remove um diretório vazio.



~$ sudo # o comando sudo é um dos mais utilizados, faz requerimento de superusuário. Requer senha.



~$ sudo su # após digitar a senha todas as funções realizadas no terminal estará sendo feita como superusuário, prática não muito recomendada.



~$ clear # limpa a “tela" do terminal



~$ top # exibe todos os processos que estão sendo executados, utilizando para “matar" um processo que está “travado"



.

Escrevo com minhas palavras. Afinal, estas são as minhas anotações e faço o que for preciso para que eu possa entender mais ou menos esta coisa complicadíssima.
.
.
.
.
.
Pograma e comando executados funcionando ou abertos, são processos em execução no sistema que ganham um número para poderem ser controlados. O sistema recebe informações e envia informações.
.
.
.
.
.
Os processos tem a ver com entrada e saída. Os processos, é programas ou comandos que estão funcionando no sistema operacional GNU/Linux. Quando o sistema carrega programas ou comando ele coloca eles em execução, então o sistema chama eles de processo e assim, o sistema cria um número para poder controlar eles e estes número é chamado de PID.
.
.
.
.
.
Toda vez que o interpretador de comando inicia executando comando ou programa, eles se tornam um processo em execução que precisa se comunicar com o mundo da gente. Os comandos do terminal processam e precisam responder o que processaram para mim.
.
.
.
.
.
Eles fazem isto usando o que eu chamo de pipes. Eu inicio um comando no terminal aí, o sistema conecta 3 pipes neste processo para receber dados e enviar dados do mundo interno para o mundo externo (eu) e o que passa pelo cano é o bit.
.
.
.
.
.
Os pipes recebem e enviam bits. Cada letra é um bit. Bits são informações computacionais. Posso mandar o sistema processar um texto e o meu texto é passado ao sistema por um pipe. Estes pipes, estes tubos, cada um é chamado hoje em dia por um nome que alguém inventou.
.
.
.
.
.
Tem uma saida padrão [stdout=standart-output], uma saída de erro [stderr=standart-error] entre eles está o processo e, ligado ao processo está ligada a entrada padrão [stdin=standart-input]. Todos os pipes tem um número de identificação.
.
.
.
.
O primeiro pipe que é conectado pelo sistema, é a entrada padrão, o número desta entrada é zero 0 e é o sistema que atribui zero a entrada padrão.
.
.
.
.
.
Pela entrada padrão o sistema recebe os dados que eu envio e o nome da entrada padrão é stdin. Quer dizer eu pergunto alguma coisa para o sistema esta pergunta é enviada pela entrada padrão stdin que o sistema identifica pelo número zero.
.
.
.
.
.
Depois que ele, o sistema ouve ou recebe, ele precisa responder pra eu. Para responder ele joga a resposta em bit pela saída padrão que eu chamo de pipe stdout e tem o número 1 definido pelo sistema.
.
.
.
.
.
O terceiro pipe serve só para informar erros que aconteceram durante a execução de algum comando ou programa que o sistema não conseguiu processar. No meio de um monte de bits que ele tá enviando, o sistema precisa informar se alguma vez aconteceu um determinado erro de alguma coisa.
.
.
.
.
.
A mensagem de erro não pode ir pelo pipe 0 nem pode ir pelo pipe 1 então a mensagem é enviada pela saida padrão 2, stderr [standart-error] a saída de erro padrão.
.
.
.
.
.
Tudo vai pro terminal.
.
.
.
.
.
O Bash direciona tudo isto para o emulador de terminal. É no terminal que eu vou obter respostas, perguntar, comandar, alterar tudo no sistema operacional. Posso ouvir música pelo terminal, ver filmes, ver fotos, calcular, navegar na internet, jogar games no terminal etc... O terminal faz de tudo. Mas nem tudo é simples de fazer.
.
.
.
.
.
Então eu posso perguntar e comandar o sistema. O sistema pode ouvir e processar minhas perguntas e comandos. O sistema pode responder algumas das minhas perguntas, nada pessoal (espero). O sistema pode alterar partes dele mesmo. Se eu assim mandar ele faz. Mesmo que seja uma coisa idiota que eu comande e destrua ele. Por isto, é bom eu pensar bem. Pois no final, quem se ferrará será eu. Kkkkkkkk.


.


Os pipes são file descriptors. Coisa cabeluda de complicada. Kkkkkk. Depois vou pesquisar sobre isto.


.

Os processos que são comandos ou softwares em execução ouvem, falam e informam pelas entradas e saídas, os erros são informados pela saida de erro.


.

A entrada padrão no Linux é recebida pelo sistema via o teclado. A entrada padrão no Linux é o teclado. A entrada padrão no Linux é o teclado. Pra não esquecer. Kkkkkkk.


.


A saida padrão vai imprimir na tela do terminal. A saida padrão vai imprimir na tela do terminal. A saida padrão vai imprimir na tela do terminal. Acho que não vou esquecer isto.


.


A saida de erro vai imprimir na tela do terminal também. A saida de erro vai imprimir na tela do terminal também. A saida de erro vai imprimir na tela do terminal também. Pra não esquecer.


.


A saída padrão e a saida de erro ficam misturadas na tela do terminal. A saída padrão e a saida de erro ficam misturadas na tela do terminal. A saída padrão e a saida de erro ficam misturadas na tela do terminal. Acho que não vou esquecer.


.


O Bash serve como encanador. Consegue conectar saídas padrões de comandos, com entradas padrões de comandos.



.



QUERO SABER COMO USAR O COMANDO APT, ENTÃO USO NO TERMINAL:





man apt, --help apt, info apt




Procuro o terminal no menu e abro ele. Vou fazendo anotações e executando o que anotei no terminal. Estou executando no terminal o que estou lendo agora.







DE ONDE VEM O TERMINAL?



No inicio dos computadores, só se podia fazer as coisas pelo terminal e ele era um monitor com tela preta, os programas eram feitos para funcionar no monitor terminal e você executava comandos e navegava pela rede e fazia alterações no sistema através deste monitor terminal. Hoje em dia não é mais assim.




Atualmente ainda precisamos de terminais mas os monitores podem fazer muitas coisas a mais e por isto, é possível atualmente usarmos o emulador de terminal.




O interpretador de comandos roda dentro do terminal e o Bash é o interpretador de comando do terminal no Linux.




O prompt significa que tá pronto. O prompt pode ser $ [usuário] ou # [super-usuário].




O legal do terminal, é que para conversar com o terminal do Linux, o sistema, programas do sistema, o Hardware tenho que pensar digitar e recebo resposta dependendo de usar corretamente a linguagem.




A linguagem é o Bash. Existem comandos internos e existem comandos que não são internos. Quem ajuda nesta hora é o sistema operacional.




O comando pwd é um comando interno por exemplo. Você digita pwd e recebe a resposta rapidinho. Tem comandos INTERNOS e comandos do SISTEMA OPERACIONAL.




O modo não interativo é dialogo programado e chama-se SHELL SCRIPTS.




O interpretador de comandos controla a execução dos comandos executados.




Pode-se pausar um processo que esteja acontecendo no terminal por exemplo.




Posso mexer nos processos que estão acontecendo no computador.



Pode-se executar dois processos ao mesmo tempo.



É necessário adquirir costume de usar o terminal para poder fazer diversas coisas simultaneamente, executar mais de um comando ao mesmo tempo e fazer eles se comunicarem.





O MAIS FORTE NO LINUX É O EMULADOR DE TERMINAL COM O INTERPRETADOR DE COMANDOS CHAMADO BASH.



O que é cat? É de CONCATENAR? O que é concatenar? Preciso de um dicionário urgente! :)


man cat [aperto enter]



Eu quero andar com minhas próprias pernas. Quero descobrir coisas sobre comandos. Uso ls --help pra listar todos os arquivos e diretórios e vai mostrar um monte de documentação e posso usar o ls com parametros.



Posso usar --help para aprender muitos comandos. ls, ls -t, man nome_do_comando, info nome_do_comando. O man é mais tradicional, o info é mais atual.




Tem 3 modos de eu aprender usando o terminal:



--help


man


info



Não achei informação sobre uns comandos usando estes 3, tenho que ir buscar no Google. Procurar a info na massa embolada de informação que tem lá com atenção e paciência.


Quero saber como ser administrador super usuário do sistema uso [su] ou [sudo su] digito a senha invisivel ao digitar, e obtenho o resultado:


~$ su
cp pc #



Depois quero saber quem eu sou. Será que sou administrador mesmo? Uso 'whoami'.


cp# whoami
root



Para sair do modo super usuário administrador digito exit e tenho o resultado:


cp pc # exit

[email protected]: ~$





Digito então su ou sudo su...



Aperto enter e digito a senha mas não aparece nada no terminal por proteção. Aperto enter. Saio do modo super usuário digitando exit.


.
Quero saber o quanto de memória tem no meu computador. Quero saber a quantidade de memória livre e usada no sistema. "free -m" digito "free", "free -m", "free -h" e recebo a resposta:
.


~$ free
total used free shared buff/cache available
Mem: 3955864 1796172 153272 141808 2006420 1743612
Swap: 4194300 0 4194300


.


~ $ free -m
total used free shared buff/cache available
Mem: 3863 1289 209 201 2364 2099
Swap: 4095 0 4095


.


~$ free -h
total used free shared buff/cache available
Mem: 3.8G 1.7G 145M 139M 1.9G 1.7G
Swap: 4.0G 0B 4.0G



.
.
.
.
.
Quero saber onde estou no terminal, ou seja, em qual pastinha estou no momento. Então eu digito pwd e recebo a resposta:

.


$ pwd
/home/rfg/Área de Trabalho


.

Quero saber o que tem na pasta onde estou. Eu digito ls e recebo a resposta que não tenho nada na minha Área de Trabalho e posso adicionar mais parametros ao ls:

.


~$ ls
~$ ls -t
~$ ls -l
~$ ls -la
~$ ls -lah


.



Quero ir para uma pasta que tenha alguma coisa, preciso saber um comando para isto. Pesquiso e acho rapido a resposta.


.

É o comando cd.


.

cd - Este comando permite me deslocar entre a árvore de diretórios do sistema. Quando abro um terminal ou seção shell, entro direto no meu diretório pessoal. Para mover-me pelo sistema de arquivos eu devo usar o cd. O comando cd é bom para copiar scripts e arquivos.

.


"cd /" para ir ao diretório raiz.

.


"cd" para ir ao seu diretório pessoal.


.

"cd .." para ir uma pasta antes da pasta onde estou.


.

”cd -” para voltar a pasta onde estava antes de mudar.


.


Para navegar através múltiplos níveis de pastas em um só comando, uso por exemplo, "cd /home/cp/Imagens", que me levará diretamente ao pasta Imagens. Para voltar a pasta Home digito cd.


.


Então volto com o comando cd para pasta inicial que considero ser Home. Digito e recebo resposta:

.

~$ cd

.

~ $ ls
Área de Trabalho Downloads Música
Biblioteca do calibre Imagens Público
Documentos Modelos Vídeos


.


~ $ ls -t
Vídeos Modelos Biblioteca do calibre
Downloads Imagens Música
Documentos Área de Trabalho Público


.


Quero ir para a pasta Documentos. Digito e acontece o seguinte:


.

~ $ cd Documentos



PESQUISO NA INTERNET:



Uma característica interessante do bash é que ele possui a função de auto-completar os nomes de comandos que foram digitados via entrada padrão. Isso é feito PRESSIONANDO-SE A TECLA TAB; o comando é completado e acrescentando um espaço. Isso funciona sem problemas para comandos internos; caso o comando não seja encontrado, o bash emite um beep. Outro recurso muito interessante do bash, é que você pode repetir um comando executado sem ter que digitá-lo novamente. Isso é possível UTILIZANDO O CARACTERE "!" na frente do comando que você deseja repetir. O BASH BUSCA COMANDOS NO HISTÓRICO.



Agora que estou na pasta documentos, eu quero saber o que tem na pasta documentos, então digito:



[email protected] ~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017


.
REPETINDO:


.
LS COM PARAMETROS, FUNÇÕES AUXILIARES, FILTROS PARA MOSTRAR AS COISAS DE UM MODO DIFERENTE.

.

Digito [email protected] ~/Documentos $ ls
Digito [email protected] ~/Documentos $ ls -t
Digito [email protected] ~/Documentos $ ls -l
Digito [email protected] ~/Documentos $ ls -la
Digito [email protected] ~/Documentos $ ls -lah
Digito [email protected] ~/Documentos $ clear


.

~/Documentos $ ls -lah
total 140K
drwxr-xr-x 4 rfg rfg 4,0K Abr 20 06:00 .
drwxr-xr-x 33 rfg rfg 4,0K Abr 20 06:05 ..
-rw-r--r-- 1 rfg rfg 1,4K Abr 8 01:27 Formatar-Pendrive-no-Linux-2017


.


Tem um arquivo chamado: Formatar-Pendrive-no-Linux-2017, e quero criar um arquivo chamado texto.txt, uso o comando touch. Para saber sobre o comando touch abro outro terminal e digito:


.


~$ man touch


.


Crio um arquivo chamado texto.txt ou teste.txt, a extensão txt não é necessária para a criação de um arquivo no Linux mas coloco a extensão .txt para não me confundir.


.


~/Documentos $ touch texto.txt


.


Confiro o que existe em documentos:


.

~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto.txt



.
Quero criar uma pasta chamada texto. Uso mkdir. Para saber alguma coisa pelo terminal sobre o que é mkdir digito man mkdir, --help mkdir, info mkdir e depois eu Digito:

.


~/Documentos $ mkdir texto



.
Para apagar arquivos e pastas uso um comando que tem que ter CUIDADO.




rm -rf apaga pastas (CUIDADO!)



rm -r apaga arquivos




Confiro:




~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto
texto.txt




$ ls -lah
total 12K
drwxr-xr-x 3 rfg rfg 4,0K abr 20 13:09 .
drwxr-xr-x 32 rfg rfg 4,0K abr 20 12:00 ..
drwxrwxr-x 2 rfg rfg 4,0K abr 20 13:09 teste
-rw-rw-r-- 1 rfg rfg 0 abr 20 13:06 texto.txt




Acima vejo que toda pasta começa com d e o arquivo -rw


.


Tem dois arquivos de texto e uma pasta chamada texto.
Quero mover o arquivo texto.txt para dentro da pasta texto, vou usar o comando mv, procuro informação sobre comando mv usando man mv, --help mv e info mv. Então eu digito:



~/Documentos $ mv texto.txt texto


.
O comando mv não me serve apenas para mover, serve também para renomear. Se eu por exemplo abro o terminal na pasta Downloads e crio na pasta Downloads um arquivo chamado virtualFox.xz e quero renomear ela para virtf.xz eu digito;



touch virtualFox.xz


mv virtualFox.xz virtf.xz



Desta forma super simples acima, eu renomeio um arquivo.
.


Confiro;


ls -t


.
Se eu quiser copiar virtf.xz para uma pasta chamada virtf? Como eu faço?

Na pasta onde eu estou já está o arquivo virtf.xz então, eu crio uma pasta chamada virtf com o comando mkdir;



mkdir virtf


.
Verifico com comandos;


ls -t

.
Resultado;


~/Downloads $ ls -t
virtf
virtf.xz



.
Se eu fosse copiar o arquivo para a pasta virtf poderia abrir outro terminal onde está o arquivo virtf.xz e também a pasta virtf e faria assim:


cp virtf.xz virtf


.
Tem como eu copiar recursivamente uma pasta e todo o conteúdo dela para outra pasta. Eu estou onde a pasta que eu quero copiar para outra pasta está e quero copiar ela para Documentos;


cp -r virtf /home/user/Documentos


.
Tem como eu copiar um arquivo que está em uma pasta para outra pasta.



.
Tem como copiar um arquivo de uma pasta para outra pasta renomeando a cópia.



.
Tem como eu copiar todos os arquivos que começam com uma certa letra para outra pasta.



.
Tem como criar um link simbólico (symlink) da pasta onde estou para outra pasta.



.
Tem como fazer uma cópia de backup de um arquivo no mesmo diretório com outro nome.



.
Confiro com o comandos abaixo entrando na pasta virtf e listando o conteúdo que ela tem;


cd virtf/


ls -la virtf*



.
Se eu fosse mover o arquivo virt.xz para a pastinha criada;


mv virtf.xz virtf



.
Confiro ucom os comandos abaixo;



ls


cd virtf/


ls




.
Se quiser remover ele eu digito;


rm virtf.xz




.
Se eu baixei este arquivo como root, ele talvez não iria querer sair. Digitaria então:


sudo rm -rf virtf.xz


.
Devo ter sempre cuidado antes de usar o comando sudo rm -rf; ou; sudo rm -Rf posso acabar indo para uma pasta do sistema e remover algo que não pode. Depois o sistema fica irremediávelmente quebrado na maioria das vezes. Mas no Linux dizem que tem jeito para quase tudo menos se remover a pastinha raiz (/).



.
Para mim, uma das coisas mais importantes quando eu uso o terminal é saber em que pasta estou e estar certo do que estou fazendo está sendo feito na pasta correta, pois se não não funciona.
Então eu uso o pwd que me diz onde estou;


pwd




Abro o meu gerenciador visual de arquivos para ver se o arquivo está na pasta correta. Ok. Confere. Comando bem sucedido.
.



IMAGINO OUTRAS SITUAÇÕES E EXECUTO;


Confiro o que tem em documentos:


cd


ls


pwd


cd Documentos/



~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto





Digito ls -l e obtenho a seguinte resposta do terminal:
.




~/Documentos $ ls -l
total 8
-rw-r--r-- 1 rfg rfg 1333 Abr 8 01:27 Formatar-Pendrive-no-Linux-2017
drwxr-xr-x 2 rfg rfg 4096 Abr 20 07:08 texto


Digito;



ls -t



ls -lah




.
Limpo as informações da tela do terminal com clear:



~$ clear



.
Agora vou para a pasta texto:


~/Documentos $ cd texto


.
Estou na pasta texto e confiro isto com o comando ls:



~/Documentos/texto $ ls
texto.txt



.
Se eu quiser remover o arquivo texto.txt usaria o comando rm:




~/Documentos/texto $ rm texto.txt



.
Para criar de novo outro arquivo chamado texto.txt digitaria:




~/Documentos/texto $ touch texto.txt



.
Agora eu quero escrever alguma coisa no arquivo texto.txt e vou usar primeiro o comando cat que é um dos comandos para mostrar todo o conteúdo do arquivo no Shell. Me informo alguma coisa sobre o cat com o comando 'man cat', 'info cat' e '--help cat' mas não entendo muito bem. Executo:





~/Documentos/texto $ cat texto.txt



.
Não tem nada no arquivo texto.txt então não aparece nada. Eu sei que posso usar um comando de um programa chamado nano que roda no terminal para escrever neste arquivo pelo terminal, pesquiso sobre o nano digitando no terminal 'nano --help', 'man nano', 'info nano' e então eu digito:





~/Documentos/texto $ nano texto.txt




.
O nano abre no terminal e eu escrevo no arquivo o seguinte:




Esta é a primeira frase do arquivo texto.txt




Gravo com o comando de teclado ctrl + O , confirmo que é para o nano salvar o arquivo com o nome texto.txt apertando a tecla ENTER e saio com o comando de teclado ctrl+X e agora digito no terminal:





~/Documentos/texto $ cat texto.txt
Esta é a primeira frase do arquivo texto.txt




Poderia visualizar este arquivo com o gedit, mousepad, leafpad, vim entre outros.




Quer dizer que escrevi uma linha no arquivo texto.txt e posso abrir o icone dele em um programa de texto e lá estará escrito a frase. Posso abrir o arquivo num programa de edição de texto e transformar estas letras, mudar de tamanho colorir elas etc...




Posso escrever neste arquivo texto.txt usando o comando echo. Pesquiso man echo, info echo, --help echo.





Estou na pasta texto que está na pasta documentos.





~/Documentos/texto $echo 'segunda linha do arquivo texto.txt' >> texto.txt




~/Documentos $ echo "exemplo de texto terceira linha" >> texto.txt




Note que eu usei >>




Para escrever a primeira linha usaria apenas > O texto a ser escrito no arquivo deve ser abraçado por duas " o simbolo > direciona a frase para o arquivo chamado teste sendo a primeira linha. As linhas seguintes usarão >> e as aspas.




~/Documentos/texto $echo 'esta é a primeira linha escrita usando echo' > texto.txt




Se fizer isto acima, eu apago as duas linhas que escrevi anteriormente.




Para ler o arquivo posso usar o comando head, head -n1, head -n2.



Exemplo:


~/Documentos $ head teste.txt
exemplo de texto 1
exemplo de texto 2




Para ver o final do texto, posso usar tail, tail -n1, tail -n2. O comando head vê o inicio do texto e o comando tail vê o final do texto. Posso adicionar parâmetros a estes comandos.




Exemplo:



~/Documentos $ tail teste.txt
exemplo de texto 1
exemplo de texto 2




Vou para a pasta Home pois digito cd então navegando pelo terminal chego até lá no texto.txt para ver o que está escrito. Faço bem detalhadamente:




~/Documentos/texto $ cd




~ $




~ $ ls
Área de Trabalho Downloads Música
Biblioteca do calibre Imagens Público
Documentos Modelos Vídeos




~ $ cd Documentos




~/Documentos $




~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto texto.txt




~/Documentos $ cd texto




~/Documentos/texto $



~/Documentos/texto $ cat texto.txt
Esta é a primeira frase do arquivo texto.txt
segunda linha do arquivo texto.txt. :)






Quero saber como copiar arquivos e pastas usando o terminal:



cp – Copia arquivos e diretórios. "cp file foo" é para fazer uma cópia exata do arquivo "file" dando-lhe o nome de "foo".




"sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf-bkp" para gerar uma cópia de segurança exata do arquivo "/etc/X11/xorg.conf" dando-lhe o nome de "/etc/X11/xorg.conf-bkp".



.
Meu terminal está cheio de letras e informações de comandos quero limpar ele digito o comando clear ou teclo ctrl+l.




~$ clear



.
Pesquiso e acabo sabendo que se o destino fornecido for o nome de um diretório existente, os arquivos serão copiados para esse diretório, com o mesmo nome. Caso indiquemos um nome de arquivo no caminho de destino, o arquivo de origem será copiado e essa cópia renomeada também. A sintaxe é:




cp [opções] arquivos_origem local_destino




.
Opções mais comuns:




-i, --interactive
Pergunta se desejamos sobrescrever um arquivo de destino já existente.

-l, --link
Cria hard links para os arquivos em vez de copiá-los.


-n, --no-clobber
Não sobrescrever um arquivo já existente


-p
Preserva as permissões originais do arquivo, incluindo proprietário, grupo, stuid, setgid, tempos da última modificação e acesso.


-r, -R, --recursive
Copia diretórios de forma recursiva.


-s, --symbolic-link
Cria links simbólicos (symlinks) para os arquivos em vez de copiá-los


-u, --update
Copia apenas quando os arquivos de origem forem mais novos que os de destino, ou quando os arquivos de destino estiverem faltando.


-v, --verbose
Modo verboso; explica o que está sendo feito no momento.


--help
Mostra a ajuda básica do comando e sai.


--version
Mostra informações sobre a versão do comando e sai.




.
Quero saber sobre os comandos more e pipe. Dizem que são bastante utilizados. Em uma pasta que tem bastante arquivo. A pasta etc. A pasta etc quase sempre guarda os arquivos de configuração programas instalados no sistema operacional em alguns sistemas é na pasta opt.




~$ cd /etc



~$ ls


~$ ls -lah




Concatenação de comandos:


~ ls -lah | more [ o more fará uma pausa a cada tela exibita o pipe | liga o ls -lah com o comando more ]



.
Quero saber a data do dia. Digito no terminal e recebo a resposta:




~ $ date
Qui Abr 20 03:56:35 BRT 2017



.
Quero saber o calendário digito e recebo a resposta:




~ $ cal
Abril 2017
Do Se Te Qu Qu Se Sá
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30



.
Quero saber quando cairá certo dia em outro ano anterior ou posterior usando pipe "|" e "less":




~$ cal 2018 | less



.
Aperto a tecla Q para sair do calendário. O pipe "|" serve para unir um comando a outro. No GNU/Linux posso unir programas que virão todos juntos.




.
Se eu quiser saber o mês 4 de 2013, eu faço assim:




~$ cal 4 2013



.
Quero saber a temperatura da máquina. Instalo lm-sensors. Digito e recebo a resposta:





~$ sudo apt update ; sudo apt upgrade ; sudo apt install lm-sensors



~ $ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +48.0°C (crit = +104.0°C)
temp2: +48.0°C (crit = +104.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +48.0°C (high = +105.0°C, crit = +105.0°C)





.
Quero saber a arquitetura do computador. digito arch que é igual ao comando uname -m, e recebo a resposta:





~ $ arch
x86_64




~ $ uname -m
x86_64




.
Tem vezes que eu quero encontrar coisas que estão no computador usando o comando find. Consulto o manual pelo terminal com o comando:



man find



.
Encontro muita opção de uso pra esse comando. Acho que devo aprender a sintaxe de uso dele:



find <início da busca> [condições] {ações}



.
Eu vou chamar o find, direi o ponto de partida da busca que quero realizar, se é dentro do /home, do /var ou de um outro lugar, as condições da nossa busca, se é um arquivo, se é um executável, se foi modificado à partir de quando e etc; e as ações que são o que eu quero buscar.



.
Se eu quero encontar arquivos e pastas usando os nomes deles eu uso:



find / -iname [nome-do-arquivo/pasta]



.
O find é legal para encontrar arquivos com diversas permissões. Tipo 777 ou 644. Posso buscar arquivos com base no tamanho dele também. Posso executar comando depois de encontrar arquivos. Posso buscar arquivos a partir da data de modificação ou acesso. Posso encontrar arquivos e pastas vazias no diretório raiz "/" tem muitas outras opções...



.
Encontrando arquivos e diretórios com permissão 777



find / -perm 777



.
Encontrando arquivos à partir de um local específico, que tenham permissão 644



find /root -type f perm 644



.
busco no diretório /root e digo que quero buscar SOMENTE POR ARQUIVOS (-type f). Se quiser buscar por diretório somente, usaria -type d:



find /root -type d



.
E se buscasse por links simbólicos, usaria:



find /home -type l



.
Eu acho o legal de estudar Linux é a certeza de que nunca irei saber tudo, portando tranquilamente faço o que posso e aprendo o que consigo numa boa. Para mim parece que sempre vai ter alguma novidade para saber.




.
Quero saber o hardware instalado no computador, especificando os endereços digito e recebo a resposta:





$ lsdev
O programa 'lsdev' não está instalado no momento. Você pode instalá-lo digitando:
sudo apt install procinfo




Então digito:



~$ sudo apt install procinfo ; sudo apt update ; sudo apt upgrade ; lsdev




~ $ lsdev
Device DMA IRQ I/O Ports
------------------------------------------------
0000:00:02.0 4000-403f
0000:00:1f.2 44 4060-407f 4080-4083 4090-4097 40a0-40a3 40b0-40b7
0000:00:1f.3 4040-405f
0000:02:00.0 3000-30ff
ACPI 1800-1803 1804-18




.
lspci - Exibe informações sobre os barramentos PCI do computador e sobre os dispositivos a ele conectados.



~ $ lspci
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 08)
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 08)
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 08)




.
lsusb - Lista informações sobre os barramentos USB do computador e sobre os dispositivos a eles conectados.




~ $ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub




.
uname - Este comando exibe várias informações sobre o sistema, incluindo o nome da maquina, nome e versão do Kernel e alguns outros detalhes. É muito útil para verificar qual é o Kernel usado por você.




~ $ uname
Linux




.
”uname -a” para exibir todas as informações.




~ $ uname -a
Linux rf7E 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_



O resto do Material está em formato de texto no Link Abaixo:

Artigo na íntegra .txt (https://mega.nz/#!gvZ33Yzb!YCbKY2tgxMBfaDlbCIWJMEV-kOINwctZUtBAZBa-bfw)

.


"Não tem problema ganhar dinheiro oferecendo serviços de Linux, mas também não tem problema nenhum eu oferecer meu conhecimento de graça."


.
Até Breve

.


Quem sabe uma hora destas eu crio um ePub com este artigo/texto e doo para a nossa comunidade.

Meu primeiro ePub sobre o assunto Link abaixo:



Baixe o ePub deste Artigo (https://mega.nz/#!5mwUjL7b!lCpM5eWOCdhW5pqY-MRV9wZm4E-4rCriZw5YUEy4EWc)



.

darksidebr
19-07-2017, 17:56
Obrigado @gu1le (http://tocadacoruja.net/forum/member.php/60833-gu1le).