Guia Introdutório do Linux VI

Continuamos nossa série de artigos para iniciantes em Linux. Seguiremos com o uso de comandos. Desta vez veremos como conectar e expandir comandos, como enviar comandos para o background (também veremos o que é isso, se você ainda não souber) e como usar expressões aritméticas.

[ Hits: 52.863 ]

Por: Juliao Junior em 10/08/2007


Usando expressões aritméticas



Pode acontecer de você desejar passar resultados de expressões numéricas para um comando. Há duas formas para isso:

$ [expressão]

ou então:

$(expressão)

Como exemplo, veja:

$ echo "O Brasil foi descoberto há $[2007-1500] anos."
O Brasil foi descoberto há 507 anos.

Note que a shell inicialmente calcula a expressão e após passa o resultado para o comando 'echo'.

Veja outro exemplo:

$ echo "Nessa escola há (ls | wc -w) alunos"

Nesse exemplo, o conteúdo do diretório é listado, conta-se quantos termos surgem e o resultado é enviado para o comando 'echo'.

Expandindo variáveis de ambiente

Variáveis de ambiente que guardam informação na shell podem ser expandidas usando o metacaracter '$'. Quando expandimos uma variável de ambiente em uma linha de comando, é usado o conteúdo da variável e não o nome da variável em si. Por exemplo:

$ ls -l $PATH

Por usar $PATH como argumento, a saída do comando usa o conteúdo da variável PATH.

Página anterior     Próxima página

Páginas do artigo
   1. Conectando comandos
   2. Usando expressões aritméticas
   3. Alterando seu shell
Outros artigos deste autor

SpiderOak - Armazenamento Grátis

Programando em Octave (parte 1)

Crie um espelho (mirror) Debian em sua máquina

Guia Introdutório do Linux III

Guia (nem tanto) Introdutório do Linux II

Leitura recomendada

GNU/Linux, querido software livre

Instalando o Debian Lenny Linux

Rancher - Painel para Docker

Utilizando o Vi - uma introdução

História do GNU/Linux: 1965 assim tudo começou!

  
Comentários
[1] Comentário enviado por juninho (RH.com) em 10/08/2007 - 09:03h

Tenho acompanhado este seu trabalho de ajudar novos usuários, e tenho adorado, principalmente pela forma que explica, faz parecer mais simples ainda.

Continue escrevendo, está perfeito.

Parabéns.

[2] Comentário enviado por coffnix em 10/08/2007 - 10:35h

Parabéns pelos excelentes artigos! abração

[3] Comentário enviado por weslleyalves em 10/08/2007 - 19:28h

Parabéns, sempre que o curso aperta lah escola a gente recorre aos seus artigos. ;)

[4] Comentário enviado por fcamara em 02/06/2009 - 15:41h

Editor VI - Guia de Referência
Aurélio Marinho Jargas (http://aurelio.net)


Entrar e Sair

vi arquivo.txt <ENTER>
:q <ENTER>
Entrar, Inserir Texto, Salvar e Sair

vi arquivo.txt <ENTER>
i
Minha primeira frase no VI.
<ESC>
:wq <ENTER>
Entrar, Alterar Texto e Sair sem Salvar

vi arquivo.txt <ENTER>
dd
:q! <ENTER>
Entrar, Alterar Texto, Salvar em Outro Arquivo e Sair

vi arquivo.txt <ENTER>
yy
p
:w arquivo-novo.txt <ENTER>
:q <ENTER>
Configurar o VI

vi ~/.vimrc <ENTER>
i
set vb ru nu <ENTER>
set ic is hls scs
<ESC>
:wq <ENTER>
Repetir a Primeira Linha 2 Vezes e Apagar a Última

vi arquivo.txt <ENTER>
gg
yy
p
p
G
dd
Repetir Comandos

vi arquivo.txt <ENTER>
A
FIM
<ESC>
j
.
j
.
Abrir Dois Arquivos Simultaneamente

vi arquivo.txt <ENTER>
:split ~/.vimrc <ENTER>
Ctrl+W
Ctrl+W
:q <ENTER>
:q <ENTER>
Obter Ajuda

vi arquivo.txt <ENTER>
:help <ENTER>


Comandos de Arquivo
:q Sai do VI
:w Salva alteraçoes feitas
:wq Salva aterações e sai do VI
:q! Sai sem salvar
:w abc Grava arquivo com o nome 'abc'
:r abc Insere o conteúdo do arquivo 'abc'
:e abc Edita o arquivo 'abc'
Modo de Inserção
i Entra no modo de Inserção
a Entra no modo de Inserção, após o cursor
o Entra no modo de Inserção, em uma nova linha
<ESC> Sai do modo de Inserção
Copiar, Cortar e Colar
yy Copia a linha inteira
5yy Copia as 5 próximas linhas
dd Apaga a linha
5dd Apaga 5 linhas
x Apaga uma letra
5x Apaga 5 letras
p Cola o trecho copiado ou apagado
V Seleção visual de linhas
Pulos
gg Pula para a primeira linha
G Pula para a última linha
44G Pula para a linha número 44
w Pula para a próxima palavra
b Pula para a palavra anterior
{ Pula para o parágrafo anterior
} Pula para o próximo parágrafo
( Pula para a frase anterior
) Pula para a próxima frase
f. Pula até o próximo ponto (.), na mesma linha
`` Desfaz o pulo, volta
Apagando com esperteza
dgg Apaga até o início do arquivo
d0 Apaga até o início da linha atual
dw Apaga a palavra
d4b Apaga as quatro palavras anteriores
df. Apaga até o próximo ponto
d) Apaga até o fim da frase
Outros
J Junta a próxima linha com a atual
u Desfaz o último comando
Ctrl+R Refaz o último comando desfeito
. Repete o comando anterior
hjkl Movimenta o cursor
/ Pesquisa um texto
n Vai para o próximo resultado da pesquisa
:%s/a/b/g Troca 'a' por 'b' em todo o texto
:!cmd Executa o comando externo 'cmd'
:r!cmd Insere o resultado do comando externo 'cmd'





Mais informações em http://aurelio.net/doc/vim

[5] Comentário enviado por doradu em 03/02/2010 - 17:16h

lembrou-me os tempos do DOS

[6] Comentário enviado por anonimoculto em 03/06/2018 - 11:14h

Vale atenção ao shell que se usa.

No bash, o shell padrão na maioria das distribuições, as expressões matemáticas são calculadas com a forma usando parêntesis duplos: $((2018-1500)). Parêntesis simples são para agrupar comandos e executá-los em um subshell.

Logo, usando-se $(2007-1500) obter-se-á um erro, pois o sistema tentará passar ao comando echo a saída do comando "2007-1500" ; que não existe. O shell retornará: "2007-1500: command not found".

Assim, de forma correta no bash:

$((expressão))

echo "O Brasil foi descoberto há $((2007-1500)) anos."
echo "Nessa escola há $(ls | wc -w) alunos"

É possível utilizar:

$[expressão]

para se processar a operação matemática; mas isto equivale sintaticamente a dizer ao shell para executar o comando interno test ; que avalia operações e condições, e exibir o resultado desse teste. [ ] em bash é sinônimo para "test".

[ 20 -eq 10 ] significa testar se 20 é igual a 10; o que retorna falso (ou seja, 1 é armazenado na variável ?, que pode ser exibida com o comando: echo $? ).

Atenção para o espaço após a "[".

Há uma versão mais avançada de test, dele distinta, representada por parêntesis duplos, com recursos similares e com alguns recursos a mais que o test.

[[ 10 -lt 20 ]] testa se 10 é menor (less then) 20; com código de saída 0 (verdadeiro) neste caso: echo $? --> 0.
[[ "maria" < "lais" ]] testa para ordenamento alfabético; falso pois lais vem antes de maria alfabeticamente: echo $? --> 1.
[[ $maria < $lais ]] testa para ordenamento alfabético os conteúdos das variáveis maria e lais (e não maria e lais propriamente ditos).

mas $[[ 2007-1500 ]] não funciona como desejado, contudo:

" bash: [ 2007 - 1500 ]: syntax error: operand expected (error token is "[ 2007 - 1500 ]") "

O bash usa chaves simples para lidar com variáveis:

${maria} representa o conteúdo da variável "maria".
${maria[2]} representa o conteúdo da lista ordenada (array) "maria" com índice "2".
${maria[@]} o conteúdo de todo o array.

Atenção que, assim como os parêntesis, as chaves também agrupam comandos quando há um " ; " antes da chave de fechamento. Ha espaço entre { e os comandos.

if [[ 10 -lt 20 ]]; then { echo "10 é menor que 20"; echo "E aqui a listagem do diretório corrente $(PWD)"; ls -la ; } else echo "neste exemplo esta parte (else) não é executada"; fi

A saber no exemplo acima, diferente do encontrado em outras linguagens de programação, "if" não é capaz de realizar cálculos ou testes; simplesmente analisa o sucesso ou insucesso ($?) de um teste ou comando ( [[ ]] no caso ).

Maiores detalhes no manual do bash.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts