Introdução ao UNIX
O Unix é um sistema operacional desenvolvido em 1969, pela Bell Laboratories,
originalmente para executar em computadores da DEC, sendo que mais tarde passou
a; ser utilizado em mainframes. Num sentido menos amplo o UNIX é um sistema
operacional de tempo compartilhado, denominado kernel. O kernel é um programa
que controla os recursos do computador e os aloca entre os usuários. Ele controla
os programas e periféricos (disco, terminais, impressoras, etc.) que estão ligados
à máquina. O UNIX possui algumas características como:
Capacidade de multitarefa
Mutiusuários
Portabilidade
Conectividade e comunicações
Para quem usa DOS
Para quem está acostumado com o DOS, notará algumas diferenças, como os nomes
de arquivos, que no DOS tem apenas 8 de nome e 3 de extenção, no UNIX não tem
limite podendo ter várias extenções. Ex: relatorio.txt.zip.tar. Outro detalhe
é por ser um sistema mutiusuário, a entrada ao sistema é feita com um login
e um password, onde login é o nome do usuário e password é uma senha de segurança.
Comandos principais:
Eis aqui o nome de alguns comandos descritos adiante, clique sobre o nome do
comando desejado:
Permissões de arquivos e diretórios:
No Unix existe uma sequência de caracteres que definem o que cada usuário
pode fazer com cada arquivo ou diretório e somente o dono do arquivo (owner) e o gerente da rede (root) pode mudar as permissões atraves do comando chmod. Essa sequência é:
d rwx rwx rwx
| | | | Onde:
tipo dono grupo outros r=leitura
w=escrita (gravação)
x=execução
- Tipo - é o tipo do arquivo e pode ser:
- d = diretório
- b = block
- r = raw
- l = simbolic link
- Dono - dono do arquivo, o dono é quem o criou ou copiou.
- Grupo - grupo de usuários a que o dono pertence (exemplo: grupo alunos ou grupo professores)
- Outros - demais usuários, o resto das pessoas que tem o acesso ao arquivo
Exemplo de permissão para um arquivo:
Pode ser verificado com o comando ls -l:
->ls -l
-rwxrw-r-- 2 cris 16345 May 12 9:02 file
Detalhes importantes
- O Unix é sensível a caixa das letras, isto é, se um
comando é em letra minúscula não pode ser digitado em
maiúscula ou se um parâmetro do comando for em maiúscula
tem que ser digitado em maiúscula
- Existem arquivos e diretórios escondidos. Para esconder basta colocar
um . no começo do nome (.plan)
- Pode-se executar vários comandos na mesma linha utilizando o caracter
;
Executando comandos em
background:
Os comandos do UNIX podem ser executados e ser liberado o prompt para continuar
o trabalho na máquina.
Se um comando leva algum tempo para mostrar o seu resultado (como um download
de algum arquivo) pode ser colocado um & no final
da linha de comando.
Exemplo:
# find / -name *.* &
Pode-se também, enquanto o comando já está sendo executado, teclar
ctrl + z. Com isso o comando será suspenso
e o sistema largará o prompt. Para fazer com que o comando suspendido rode
em background é teclado o comando bg (background).
Com o comando jobs é mostrado todos os comandos
que estão em segundo plano e um número de identificação
que serve para coloca-lo em primeiro plano com o comando fg
(foreground) e o número de identificação.
Exemplo:
#ftp ftp.site.com <----- comando demorado!
(ctrl + z) <----- ctrl+z para suspender
Suspended
#jobs <----- comandos em background
[1] find / -name *.* & Running
[2] ftp ftp.site.com Running
#fg 2 <----- job 2 em foreground
ftp> <-----resultado
Entrada e Saída:
Quase todos os comandos Unix tem uma entrada e produzem uma saída, a
entrada de um comando são os dados que o comando vai processar, essa
entrada pode vir de um arquivo especificado pelo usuário, de um arquivo
do sistema, do terminal ou da saída de outro comando. A saída
de um comando são os dados de entrada processados , a saída de
um comando pode ser impressa na tela de um terminal, enviada a um arquivo, ou
servir de entrada a um outro comando.
Existe uma entrada padrão e uma saída padrão.
Entrada padrão:
A maioria dos comandos Unix permite que você informe a entrada de dados,
geralmente informando o nome de um arquivo que contém os dados a serem
processados pelo comando, mas caso esta entrada seja omitida, o programa utiliza
automaticamente a entrada padrão para receber os dados a serem processados
pelo comando, normalmente a entrada padrão é o teclado do terminal.
Saída padrão:
Por default a saída dos dados processados pelo comando são para
a saída padrão que é o monitor do terminal que você
está usando, mas você também pode usar esta saída
para ciar ou adicionar dados a um arquivo ou simplesmente usa-la como entrada
para outro comando qualquer.
Redirecionamento:
No sistema Unix é possível o redirecionamento da entrada padrão,
da saída padrão, e ainda possibilitar que a saída de um
comando seja a entrada e outro, todos estes recursos são acessados através
de símbolos, são eles o de direcionamento de saída para
um arquivo >, o de redirecionamento de
um arquivo como entrada <, e o símbolo
que direciona a saída de um programa para a entrada de outro |.
Redirecionamento de saída:
Para redirecionar a saída de um comando para um arquivo, você
deve inserir o símbolo > depois
de todos os parâmetros do comando, e por último por o nome do arquivo
que irá receber os dados processados, por exemplo:
%ls -lap > meu.diretorio Esta linha
de comando criará o arquivo "meu.diretorio" com o conteúdo da
saída do comando "ls -lap", caso o arquivo "meu.diretorio" já
existisse no diretório corrente o mesmo seria sobrescrito, para que isto
não ocorra, ou seja para que os dados sejam acrescentados no arquivo,
ao invés de usar ">" use ">>", assim os dados serão inseridos
no fim do arquivo já existente sem sobreescrever o seu conteúdo.
Redirecionamento de entrada:
Para redirecionar a entrada que deveria ser feita através do teclado
para um arquivo que já contenha os dados da entrada você deve usar
o símbolo "<" depois de todos os parâmetros do comando, e por
último por o nome do arquivo que contém os dados a serem processados,
por exemplo:
%grep -e teste < meu.diretorio Esta linha
executará o comando grep como se você tivesse digitado todo o conteúdo
do arquivo "meu.diretorio" como um texto para ser processado pelo comando.
Redirecionamento da saída para a entrada (pipeline):
Para redirecionar a saída padrão de um comando para a entrada padrão de outro você deve usar o símbolo "|" para separar um comando do outro, este símbolo segue a mesma sintaxe do encadeamento de comandos, com a diferença que a saída do comando é usada como entrada do próximo comando encadeado,
o último comando colocará sua saída na saída padrão. Por exemplo:
%ls -lap | sort | grep -e teste | wc -l
Esta linha de comando usará a saída do comando ls como entrada do comando sort que direcionará a saída para o comando grep, e este irá direcionar sua saída para o comando wc, que por sua vez irá apresentar sua saída na tela.
Comandos Básicos
Comando ls
Esse comando mostra o conteúdo de um diretório. É equivalente
ao comando dir do DOS.
O comando list mostra os arquivos existentes ordenados em ordem alfabética.
O ls como outros comandos tem opções para apresentar outras informações.
Sintaxe
ls [-latRF] [arquivo]
Parametros
- -t = lista os arquivos em ordem de criação
- -a = lista todos os arquivos, inclusive os escondidos
- -F = acrescenta os seguintes caracteres no final dos arquivos:
- / - diretório
- @ - link
- * - executável
- -R = lista todos os arquivos e subdiretórios
- -l = lista de uma forma completa
Exemplos
->ls
relatorio.txt Files mbox exemplo.html
->ls -l
-rw-r--r-- 1 cris 3023 Jun 3 19:22 relatorio.txt
drw-r--r-- 1 cris 512 Jun 19 15:10 Files
-rw------- 1 cris 403990 Agu 22 16:56 mbox
-rw-r--r-- 1 cris 134780 May 17 10:38 exemplo.html
->ls -f rel*
relatorio.txt
->ls -lf rel*
-rw-r--r-- 1 cris 3023 Jun 3 19:22 relatorio.txt
Comando cat
O comando cat mostra o conteúdo de arquivos, geralmente do tipo texto.
Funciona bem com arquivos pequenos, mas se o arquivo for grande o texto rolará
e o usurário não conseguirá ler o conteúdo do arquivo.
Serve também para criação de arquivos texto pequenos do tipo
lembretes, para isso basta direciona-lo com > para o nome do arquivo
a ser criado (segue exemplo).
Sintaxe
cat arquivo [arquivo2] [aquivo3]
Exemplo
->cat lista_de_compras <-- mostra o conteúdo
sabao em po
leite
pao
alface
tomate
->cat < lista_de_compras <-- cria um novo arquivo
Comando more
O comando more assim como o cat serve para ver o conteúdo de um arquivo que é,
geralmente, texto. A diferença entre o more e o cat é que o more
faz uma pausa a cada tela cheia exibindo uma mensagem "--More--", dando uma oportunidade
ao usuário ler a tela. Existem vários comandos que são listados
ao apertar h mas os mais usados são:
- enter exibe mais uma linha do texto
- espaço exibe mais uma pagina do texto
- ctrl+l rescreve a tela
- v chama o editor de textos vi do Unix para a linha corrente
Sintaxe
more arquivo
Parametros
Esse comando não possui parâmetros.
Exemplos
->more index.txt
File Contents
========= =========
ntie30b2.exe US English versionInternet Explorer 3.0 Beta 2
for Windows NT
cnmsie30b2.exe Simplified Chinese Version of Microsoft Internet
Explorer 3.0 Beta 2 for Windows 95. Self extracting,
self installing.
dentie30b2.exe German Version of Microsoft Internet Explorer
3.0 Beta 2 for Windows NT 4.0 Beta 2 (build 1314).
Self extracting, self installing.
--More--(31%)
Comando cal
Este comando é usado para exibir o calendário de um determinado
mês ou ano.
Observação
o mês deve ser completo, pois o cal difere 95 de 1995. Caso somente um número
seja informado será exibido o calendário daquele ano, se nenhum
numero for fornecido será exibido o calendário do mês corrente,
anterior e posterior.
Sintaxe
cal [-r] [mês] [ano]
Exemplos
->cal 8 1996
->cal 2000
Comando mkdir
Serve para criar diretórios e subdiretórios especificados.
Sintaxe
mkdir diretório
Parâmetros
Esse comando não possui parâmetros.
Exemplos
->mkdir temp
->mkdir files
->mkdir html/curso
Comando rmdir
Serve para remover diretórios e subdiretórios especificados.
Sintaxe
rmdir diretório
Parametros
Esse comando não possui parâmetros.
Exemplos
->rmdir temp
->rmdir html/curso
->rmdir files
Comando cp
Esse comando é útil para copiar arquivos e diretórios para outros
diretórios. Semelhante ao comando copy do DOS.
Sintaxe
cp [-r] nome1 nome2
Parametros
- -r = copia o conteúdo dos subdiretórios caso nome1 for um
diretório
Exemplos
->cp relatorio.txt Files
->cp rel* Files
->cp -r Files ..\Files2
Comando mv
Esse comando é útil para mover arquivos e diretórios. Também
é usado para renomear tanto arquivos quanto diretórios, pois o Unix
não possui um comando especifico para trocar os nomes de arquivos. Muito
cuidado ao mover ou renomear um arquivo, verifique se não exista um outro
com o mesmo nome, senão o arquivo existente irá ser substituído
pelo outro.
Sintaxe
mv [-i] nome1 nome2
Parametros
- -i = pergunta confirmação ao mover
Exemplos
->mv relatorio.txt Files
->mv -i rel* Files
->mv Files files
Comando rm
Esse comando é útil para remover arquivos e diretórios. Mas cuidado
ao usar o comando rm, pois o Unix não consegue recuperar arquivos, se por
acaso usar o parâmetro -r em um diretório. Semelhante aos comandos del
e deltree do DOS.
Sintaxe
rm [-ir] nome1
Parametros
- -r = remove o conteúdo dos subdiretórios caso nome1 for um diretório
- -i = pergunta confirmação para os arquivos
Exemplos
->rm relatorio.txt
->rm -i rel*
->rm -r ..\Files
Comando find
Procura por um determinado arquivo no winchester apartir do diretório especificado
dando uma lista de quais diretórios se encontra o arquivo especificado.
Sintaxe
find diretório [-parâmetros]
Parametros
- -name arquivo = indica o arquivo a ser procurado
- -user usuário = indica que o arquivo tem que pertencer a o
usuário indicado
- -group grupo = indica que o arquivo tem que pertencer a o grupo indicado
- -mtime n = procura os arquivos que foram modificados nos exatos n
dias
- -print = imprime o nome do arquivo na tela, é sempre necessário
pois sem ele não irá ser mostrado nada
- -exec comando {} \; = executa o comando para todos os arquivos encontrados
o {} \; faz parte da sintaxe e é substituído pelo nome do arquivo
e é necessário o espaço entre as chaves e a barra
Exemplos
->find files -name relatorio.txt -print
->find / -name teste.c -user cris -exec rm {} \;
^--- esse exmplo ira procurar todos os arquivos teste.c
apartir da raiz irá usar o comando rm quando achar o arquivo
->find /tmp -user cris -print
Comando grep
Procura pela ocorrência de uma string no arquivo especificado. Ele
exibe apenas as linhas que possuem a string mas cuidado com os caracters interpretados
pelo shell (, ), {, }, ;, ?, !, *, [, e ] use um apóstrofo para isolar
esses caracteres. Sintaxe grep
[-parâmetros] expressão arquivo
Parametros
- -v = mostra as linhas que não aparece a string
- -i = ignora a diferença entre letras maiúsculas e minúsculas
- -c = mostra o número de vezes que foi encontrada a expressão
- -n coloca o número da linha em que foi encontrada a expressão
Exemplos
->grep -i palavra index.txt
Editor vi
O editor vi (visual) é o único editor de texto para Unix, e apesar
ter uma interface pouco amigável é muito poderoso com muitos recursos.
Ele não é um formatador de textos, isto é, não trabalha
com justificação ou formatação de caracteres (bold,
itálico, etc), portanto o texto produzido com o vi não tem uma aparência
muito agradavel. Ele foi criado para ser usado com formatadores separados o nroff
e o troff.
O esse editor possui três modos:
Modo |
Descrição |
insert |
modo usado para a digitção onde se entra com os caracteres
que compoem texto esse modo é acionado com os comandos respectivos
do modo escape |
escape |
é acionado pela tecla ESC e usado para
a movimentação de caracteres e voltar para o modo insert isto
é feito apartir de comandos simples. Seus comandos não aparecem
na tela. |
last line |
é acionado com : usado para
a entrada de comandos especiais diferentes do comandos do modo escape, são
comandos para substituição, localização, movimentação
de texto, gravar e executar comandos do shell sem sair do vi. Após
teclar : irá aparecer na ultima linha esse sinal para a digitação
dos comandos. |
Sintaxe
vi [+/expressão] [arquivo]
Parametros:
- +/ - usado para iniciar o texto onde for encontrado a palavra expressão,
se a palavra tiver espaços deve estar entre aspas. Se usar só
o comando + sozinho irá começar no final do texto
- arquivo - texto a ser editado
Exemplo
->vi propostas.txt
->vi +/"Recursos de Vendas" propostas.txt
Comando chmod
Muda a permição dos arquivos e diretórios. As permissões de arquivos estão detalhadas
no tópico Permissões de Arquivos ao lado
esquerdo da página.
Sintaxe
chmod [-fR] quem+/-permissão arquivo
Parametros
- -R = troca para arquivos que estão em subdiretórios
- -f = caso ocorra algum erro ele força a troca
de permissão
- quem = é a classe do usúario (ugoa) para quem
vai receber a permissão nova
- u = usuário
- g = grupo
- o = outros
- a = todas as classes juntos (all)
- +/-/= = mais, menos ou igual define se você
vai colocar (+) ou tirar (-) a permissão, o sinal = serve para trocar a permissão
se ele tiver com permissao ele tira a permissão
- permissão = tipo de permissão (rwx)
- r = leitura
- w = escrita
- x = execução
Exemplos
->chmod a+rx teste
^permissão de leitura e execução
para todas classes de usuários
->chmod -R g=x teste
^da a permissão a quem não tem
e tira de que tem para o grupo
que você pertence em todos os subdiretórios
Comando cd
Muda de diretório, equivale ao mesmo comando do DOS. Como o Unix não mostra o
diretórios corrente no prompt como o DOS pode-se usar o comando pwd para mostrar
o diretórios corrente. Nã esqueça que o diretório principal é simbolizado por
/ (diferente a do DOS).
Sintaxe
cd [diretório]
Parametros
- diretório = o diretório ou o caminho de um
para qual você quer ir
Exemplos
->cd meudir
->cd /
->cd /home/users/cris/meudir
Comando pwd
Mostra o diretório corrente em que você está. O Unix não
mostra o diretórios corrente no prompt como o DOS
Sintaxe
pwd
Parametros
Esse comando não possui parametros
Exemplos
->pwd
/home/users/cris
Comando at
Processa um comando ou arquivo script para ser processados posteriormente numa hora, dia ou
mês desejado. O at , após a sua sintaxe, deixa espaço para colorar os comandos ou arquivos
script que serão processados posteriormente (use ^d quando acabar de digitar
os comandos) ou pode-se especificar um arquivo para entrada com <
para dar entrada um arquivo ja criado.
Sintaxe
at [-lr] hora [data] [+incremento]
Parametros
- -l= lista todos os jobs programados com at e o número designado
para cada um. Mostra aqueles que voce mesmo programou.
- -r= remove um job at que você colocou. Mas antes é preciso
saber o número e fila em que está o job mostrado com a opção
-l
- hora= uma hora qualquer, melhor no padrão 24hs. Além
o at também reconhece as horas now (agora), midnight
(meia-noite), noon (meio-dia).
- data= você pode especificar uma data também. A data
é no formato mes dia(,ano) ou dia da semanda (sun, mon, wen,
.... Pode preceder a data next (próximo).
- +incremento= quanto tempo depois da data o at irá ser executado.
é formado do símbolo + um número e uma unidade de tempo
(minutes (minutos), hours (horas), days (dias), months
(meses) e years (anos)
Exemplos
->at 12:32ls -l > dir.txt^d
->at now + 2 days < script
->at 12:32 nov 1 + 2 hours
mail [email protected] < relatorio.txt
^d
->at 12:32 next wed
Comando ln
O comando ln faz um atalho (link) de um arquivo ou diretório. Voce pode
se referir a um arquivo que está num diretório /bin por exemplo
no seu diretório home somente fazendo um link do mesmo. Existe dois tipos
de link o hard link e o simbolic link (simbolico), o primeiro tipo faz um link
onde irá apontar para o lugar no winchester onde o arquivo esta amarzenado,
o segundo tipo é um link simbólico pois o link é um arquivo
texto que contem o path de onde o arquivo está. Isto quer dizer se voce
apagar um hard link ira excluir o arquivo e se apagar um simbolic link irá
apagar somente o link.
Sintaxe
ln [-sf] arquivo nomelink
Parametros
- -s = cria um simbolic link (hrad link é criado sem esse parametro)
- -f = força a criação do link, para links que
não se tem permição de leitura
- arquivo = nome do arquivo ou diretório que vai ser linkado
- nomelink = nome do link pode ser qualquer um, mas o interssante e
colocar o mesmo nome do arquivo ou diretório.
Exemplos
% pwd
/home/user/cris
% ln -s /bin/tmp symlink
% cd symlink
% pwd
/bin/tmp