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: 49.981 ]

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

Inkscape - Introdução (Parte 3)

CSS - Manual básico sobre estilo

Alinhamento em folhas de estilo - CSS

Programação: Uso de funções

manDVD - Produza DVD-vídeo rápido e fácil

Leitura recomendada

Neo-PuppyBR - Um Linux novo para computadores antigos

Instalação do Slackware 10.2 em 1 hora

Instalação do Archlinux por outro sistema já instalado

Guia (nem tanto) Introdutório do Linux

Comandos básicos do Linux

  
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