Notes
101 - anotações
Content of the notes (1)
Page 1
Iniciando curso
Aula 13 -
Topico 103 - Comandos GNU e Unix
#PID# Process IDentification
- Dois processos de uma mesma aplicação recebe PIDs diferentes
- O PID 1 é atribuido a um processo especial - init
- O que é o Shell?
Temos varios tipos de shell. O tipo coberto na LPI é o bash (ba_sh), que é uma evolução do "sh"
- Como saber qual Shell estou utilizando?
echo $SHELL
- #echo --> lista na tela o que vc digitar na frente
- Também pode colocar variaveis:
#echo $SHELL (imprime o conteudo da variavel SHELL)
O que é um comando interno?
-> Um comando embutido no shell
O que é um comando externo
-> Um comando que o vc baixa
Para saber se é interno ou externo, utilize o TYPE
#type echo
#type cd
#type clear (hashed - cache interno)
#type tar (tar is /bin/tar -> comando externo)
Quando eu digito um comando externo, o shell busca o PATH, que é o caminho deste programa externo
#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr:sbin/:/usr/bin:/bin
O shell busca em todos os diretorios acima a fim de identificar onde está o comando
Mas e se o comando que eu quero executar não está no path?
R. Você precisa indicar para o shell onde está este comando
1. Se o programa for interno, o shell já reconhece e executa de onde vc estiver, não importa o diretorios
2. Se o programa for externo, é necessário apontar o programa no path, para que ele seja executado
3. Caso não esteja no path, você precisa digitar o caminho do executal
caminho absoluto - Desde a raiz até o executavel
- Exemplo: /home/desktop/maico/show.sh
caminho relativo (já estando no desktop) - /maico/show.sh
----------------------------------------------
Aula 14. 103.1
Variaveis de ambiente são carregadas ao abrir o shell
para definir variaveis:
#nome_variavel=valor
para exibir conteudo:
#echo nome_variavel
valor
Porém, esta variavel foi definida localmente somente nesta sessão do shell
Quando a variavel é local, processos iniciados a partir de outros shells (cujo o pai seja este shell que vc esta usando) não enxergam esta variavel
Para exportar a variavel:
#export nome_variavel
Pronto, a partir de agora a variavel virou global a partir desta sessão bash. Novos bashs a partir desse vão enxergar ela.)
Se eu abrir uma aba de shell que não é filha do primeiro bash, ela n vai enxergar
Uma forma de criar a variavel já exportada
#export LINUX=xubuntu
Como visualizar variaveis exportadas?
#set | less
-- Todas as variaveis iniciadas, declaradas e exportadas
#env
--> Mostra apenas variaveis globais, pq e um comando externo
pq o env e externo.
env is /usr/bin/env
O set e local, por isso enxerga tudo
Logo, se vc criar uma variavel e nao exportar, somente o set vai visualizar.
Se exportar, o env tbm visualiza
#env TESTE=Windows ./Script_Variavel.sh
--> Apenas nessa execucao, o valor da variavel TESTE sera alterado para Windows
como remover uma variavel?
#unset ABC
#unset nome_variavel
Conhecendo variaveis importantes (a partir do set)
--- HISTFILE=arquivo history = path
--- HISTFILESIZE
--- HISTSIZE
--- HOME - endereco da pasta home do usuario logado
--- HOSTNAME -- nome da maquina
--- LOGNAME -- nome do login que fez login nessa sessao (root p exemplo)
--- PATH = endereco onde os programas sao guardados para exercussao
--- PWD = ultimo diretorio que vc visitou
--- TERM = qual terminal vc entrou
Se grafico = xterm
Se entrou via texto (ssh) = tty
--- USER = semelhante ao logname
#echo $$
Variavel que mostra o PID do shell atual
#echo $!
PID do ultimo processo que executei em background
#echo $?
Mostra o codigo de retorno (exitcode) do ultimo processo que rodou
*Sempre que o comando foi executado com sucesso, ele retorna 0
*Sempre que o cod for diferente de 0, pode ser considerado erro
#cp arquivoqnaoexiste /tmp
#echo $?
1
#echo ~
home do usuario atual
#echo ~usuarionome
home do usuario/home
----------------------------------------------
Aula 15. 103.1
Principais Variáveis de Ambiente
É importante conhecer a função de algumas variáveis de ambiente existentes no sistema, as principais são:
DISPLAY: Indica às aplicações gráficas onde as janelas deverão ser exibidas. Será estudado no Tópico 106.
HISTFILE: Arquivo do histórico de comandos
HISTFILESIZE: Quantidade de linhas/comandos armazenados no arquivo de histórico
HOME: Indica o diretório do usuário atual
LOGNAME e USER: Nome do usuário atual
PATH: Diretórios em que o Linux irá procurar por arquivos executáveis
PS1: Aparência do prompt do shell.
PWD: Diretório atual
OLDPWD: Diretório anterior
----------------------------------------------
Aula 16. 103.1 = Comandos Sequenciais, history, man
Executar comandos de forma sequencial
#clear ; date ; ls
vai executar os tres em sequencial
#ls /tmp/teste && echo LINUX
Se o primeiro comando for executado com sucesso, ele executara o segundo
#ls /tmp/teste || echo LINUX
so executa o segundo comando se o primeiro n funcionou
history
#!!
repete o ultimo comando que executei
#!19
(de acordo com o numero do history) executa o numero do comando
#!uname
vai executar o ultimo comando que contem a string "uname"
Como limpar o history?
#history -c
historico limpo
Esses comandos ficam armazenados em um arquivo. Cada usuario tem o seu
A variavel HISTFILE diz isso
Este arquivo e gravado todas as vezes que fecho a sessao
Cada usuario so consegue ler o seu bash history. Com excecao do administrador
#CTRL+R para pesquisar um comando no seu historico de comandos
recurso de ajuda
man - para executaveis e alguns arquivos de configuracao
man type - n encontra
pq o type e um comando interno, ele faz parte do bash
entao
#man bash
para encontrar o manual de todos os comandos internos
#info ls
igual o man, porem, reduzido
#man -k
#man -k "system information"
traz a referencia de todos os comandos que possuam esta string
por exemplo
#man -k "update system"
fwupdate - update system firmware
#whatis fwupdate
fwupdate - update system firmware
#whatis tar
#apropos
= man-k
#uname
imprime informacoes do sistema
#uname -a
mostra versao do linux, data que foi compilado, versao do kernel, etc etc
#alias
Uma forma de criar um atalho/apelido para um programa.
por exemplo, se exister um alias ll=ls
toda vez que executar um ll ele vai converter em ls
#alias lt='ls /tmp'
para criar um alias. O alias fica somente nessa sessao
----------------------------------------------
Aula 18 . 103.1 = Quoting
Temos no shell caracteres especiais.
A primeira coisa que o shell faz e interpretar as variaveis
Podemos proteger a interpretecao das variaveis
#echo *
mostrar todos os arquivos do diretorio local
#echo "*"
Impede a interpretacao da variavel * e imprime o caractere *
#echo '*'
igual opcao interior
#echo \*
igual opcao interior. \ protege o caractere seguinte
#echo \*\!\$
Qual a diferenca entre " e '
" = protege todos os caracteres, EXCETO $ ` /
' = protege todos os caracteres
#echo "Curso Linux"
Curso Linux
#echo Curso Linux
Curso LINUX
#echo Curso \ \ \ \ \ \ \ Linux
Curso Linux
#echo "Curso Linux"
Curso Linux
----------------------------------------------
Aula 19 . 103.1 = Which
Which server para procurar um arquivo dentro dos diretorios que estao incluidos no $PATH
#whatis which
Localiza um comando
#which echo
/bin/echo
Localiza qualquer arquivo que esta no diretorio $path
----------------------------------------------
Aula 20 . 103.1 = exercicios
103.1 Trabalhando na Linha de Comando
1. Encontre as seguintes informações sobre a sua instalação Linux:
O caminho completo do arquivo .bash_history para o seu usuário;
-- /root/.bash_history
O release do kernel instalado
-- uname -r OR uname -a
Os diretórios incluídos em seu PATH
#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
O hostname da máquina
#hostname
kali
O PID da sua sessão shell atual
#echo $$
3237
2. Crie e exporte uma variável chamada "NOME" que contenha o seu nome completo.
criada e exportada
#export NOME=Maicon....
aberta nova sessao
#bash
#echo $NOME
Maicon ...
3. Crie um comando que escreva na tela a seguinte frase: "O Nome do Próximo Certificado LPI 1 é: <utilize a variável NOME>"
FIM DO TOPICO 103.1
----------------------------------------------
Aula 21 . 103.2 = Aplicando Filtros a textos e arquivos - cat, head, tail, wc, sort, less
#cat -n arquivo
- Lista as linhas dos arquivos por numeracao
#cat -b arquivo
mostra apenas as linhas nao brancas numeradas
#cat -s arquivo
Se tiver duas ou mais linhas em branco juntas, ele aglomera e transforma em uma so
#cat -A arquivo
Mostra todos os caracteres que tem no arquivo
#cat --help
#tac
inverte o resultado do cat, mostra ao inverso (primeira linha no final)
#head arquivo
Mostra o cabecalho do arquivo, as primeiras linhas. O padrao e 10 linhas em algumas distros e 5 em outras
#head -n2 arquivo OU head -2 arquivo
mostra apenas as duas primeiras linhas
#head -c50 arquivo
mostra os 50 primeiros bytes
#tail arquivo
mostra as ultimas 10 linhas
#tail -n5 arquivo OU tail -5 arquivo
mostra as ultimas cinco linhas
#tail -f arquivo
Aguarda uma nova escrita no arquivo e fica monitorando
#tail -n5 -f arquivo
mistura dos dois comandos
less
navegacao
dentro do less
#/related
Procura a palavra dentro da visualizacao (CTRL F)
Se vc apertar "n", ele vai pro proximo
se vc apertar "N", ele volta pro match anterior
#CTRL +G
Mostra o status da leitura do arquivo (linha, coluna, porcentagem da leitura)
| - pega a saida do primeiro comando e usa de entrada pro segundo comando
#wc arquivo
ler a quantidade de linhas, palavras e bytes
(um caractere comum = byte. Caracteres especiais podem ser > 1 byte)
#wc -l arquivo
Mostra apenas quantidade de linhas
#wc -w arquivo
quantidade de palavras
#wc -c OU wc --bytes
Quantidade de bytes
#wc -m OU wc --chars
Quantidade de caracteres
#wc *
roda o wc para todos os arquivos da pasta e soma todos
#cat arquivo | wc -l
le o conteudo e trata com wc -l
#tail -n10 arquivo | wc
#nl arquivo
= cat - b
Numera as linhas do arquivo desconsiderando as linhas em branco
#sort arquivo
ordena o arquivo
#sort -r arquivo
Ordena reverso - do Z ao A
#sort -k2 arquivo
Ordena pelo segundo campo (apos espaco)
#sort --help
Information
- Description
- Note on 101 - anotações, created by Maicon Alencar on 17/07/2019.
- Created by
- Maicon Alencar · Jul 2019
- Updated
- Jul 18, 2019
- Views
- 3
- Rating