Uso Básico do Shell

O trabalho feito pelo shell

De onde vem o shell?

Análise da linha de comando

Caracteres

Significado

espaço em branco

separação das palavras

nova linha

fim da linha de comando

' " \

caracteres que alteram a forma do shell interpretar caracteres

&

coloca o comando na retaguarda

< >> << ` |

caracteres de redirecionamento de entrada/saída

* ? [ ] [^

metacaracteres para a formação de nomes de arquivos

$

indica uma variável do shell

;

sequenciamento de comandos

O comando de "impressão" do shell


$ echo alo        mamae querida
alo mamae querida
$

Múltiplos comandos na mesma linha


$ ls; cd /etc; ls

Comandos na retaguarda


$ sleep 10
$ sleep 10 &
$

Substituição de nomes de arquivos

Caractere

O que casa

*

o ou mais caracteres

?

1 caractere

[ ]

classe de caracteres

[^ ]

inversão de classe de caracteres


$ $ cat * 
$ ls a*bc
$ ls a?bc
$ ls [ic]???
$ ls [^ic]???

Remoção de significado especial


$ echo 'alo        mamae querida'
alo        mamae querida
$

$ echo I'm David.
erro
$ echo I\'m David.
I'm David.
$ echo *
abaco absurdo bangue-bangue
$ echo '*'
*
$ echo \*
*
$ echo one two three four
one two three four
$ echo 'one two three four'
one two three four
$ echo "one two three four"
one two three four
$ echo hello there \
> my name is david
hello there
my name is david
$ echo files = ; ls
files =
abaco
absurdo
bangue-bangue
$ echo files = \; ls
files = ; ls

Redirecionamento de entrada e saída

Entrada e saída padrão

Nome

Descritor de arquivo

Fonte/Destino default

standard input (stdin)

0

teclado

standard output (stdout)

1

tela

standard error (stderr)

2

tela

Construções de redirecionamento

Sintaxe

Resultado

Command < file

entrada vem do arquivo

Command > file

saída sobrepõe o que tem no arquivo

Command >> file

append no arquivo

command << label

entrada é o que segue até o fim do label

`command`

substitua `comando` pela saída da execução docomando

command1 | command2

saída de command1 vai para a entrada de command2

command1 2> file

saída padrão de erro vai para o arquivo

command1 n>&m

mande saída do descritor n para o descritor m


$ ls
...
$ ls > out
$ ls /fred
erro
$ ls /fred > out
erro
$ ls /fred 2> err
$ ls > the.files
$ ls /fred 2> /dev/null
$ cat the.files | more 
$ ls /etc >> the.files
$ echo number of lines in the.files = `wc -l the.files`
$ cat << fim > input
linha 1
linha 2
...
linha n
fim
$ > output.file
$ ls | cd 
(erro)
$ echo `wc -l /etc/passwd`

Tudo é um arquivo


$ tty
/dev/ttyp1
$ ls >/dev/ttyp1

Outros dispositivos

arquivo

propósito

/dev/hda

Primeiro drive IDE

/dev/hda1 Primeira partição do primeiro drive IDE

/dev/sda

Primeiro drive SCSI

/dev/sda1 Primeira partição do primeiro drive SCSI

/dev/audio

Placa de som

/dev/cdrom Drive CD-ROM

/dev/fd0

Drive de disquete

/dev/ttyS1 Segunda porta serial
/dev/null Buraco negro

Variáveis do Shell


$ minha_variavel=oi
$ umNumero=5
$ meuNome="Jacques Sauve"
$ echo Meu nome eh $meuNome
Meu nome eh Jacques Sauve
$ comando=ls
$ $comando
(saída do ls)

Nomes de variáveis

Quoting


$ meuNome="Jacques Sauve"
$ echo Meu nome eh $meuNome
Meu nome eh Jacques Sauve
$ echo "Meu nome eh $meuNome"
Meu nome eh Jacques Sauve
$ echo 'Meu nome eh $meuNome'
Meu nome eh $meuNome

Controle do ambiente

Nome da variável

Propósito

HOME

seu diretório home

SHELL

o programa executável shell sendo usado

UID

seu user id

USER

seu user name

TERM

o tipo de terminal que está usando

DISPLAY

seu display X-Window

PATH

diretórios onde o shell procura arquivos para executar

PS1 e PS2

prompts primários ($) e secundários (>) do shell

Aritmética


$ contador=1
$ contador=$contador+1


$ $ expr 5 + 6
11
$ expr 10 / 5
2
$ expr 5 \* 10
50
$ expr 5 + 6 * 10
expr: syntax error
$ expr 5 + 6 \* 10
65
$ contador=1
$ contador=`expr $contador + 1`

programa anterior próxima