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:

ls
editor vi
cat
cp
chmod
more
mv
cd
cal
rm
pwd
mkdir
find
at
rmdir
grep
ln

 

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

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


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

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:

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

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

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

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

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

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:

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

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

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

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

Exemplos

% pwd
/home/user/cris
% ln -s /bin/tmp symlink
% cd symlink
% pwd
/bin/tmp