Next Previous Contents

3. Arquivos e Programas

3.1 Arquivos: Noções Preliminares

O Linux tem uma estrutura de diretórios e arquivos similar à do DOS/Win. Arquivos têm nomes-de-arquivo que obedecem a regras especiais, são gravados em diretórios, alguns são executáveis, e a maioria destes tem opções de linha de comando. Além disso, você pode usar caracteres curinga, redirecionamento e canalização. Há apenas algumas pequenas diferenças:

Agora você pode pular para a Seção Traduzindo Comandos do DOS para o Linux, mas, se eu fosse você, continuaria lendo.

3.2 Links Simbólicos

O UNIX tem um tipo de arquivo que não existe no DOS: o link simbólico. Isto pode ser considerado como um ponteiro para um arquivo ou diretório, e pode ser usado ao invés do arquivo para o qual aponta; é similar aos atalhos do Windows 95. Exemplos de links simbólicos são /usr/X11, que aponta para /usr/X11R6; /dev/modem, que aponta para /dev/cua0 or /dev/cua1.

Para fazer um link simbólico:

$ ln -s <arq_ou_dir> <nomedolink>

Exemplo:

$ ln -s /usr/doc/g77/DOC g77manual.txt

Agora você pode se referir a g77manual.txt ao invés de /usr/doc/g77/DOC. Os links aparecem assim em listagens de diretório:

$ ls -F
g77manual.txt@
$ ls -l
(várias coisas...)           g77manual.txt -> /usr/doc/g77/DOC

3.3 Permissões e Propriedade

No DOS, arquivos e diretórios têm os seguintes atributos: A (arquivo), H (oculto), R (somente-para-leitura), e S (sistema). Somente H e R fazem sentido no Linux: arquivos ocultos começam com um ponto, e quanto ao atributo R, siga em frente.

No Unix, cada arquivo tem "permissões" e um dono, que por sua vez pertence a um "grupo". Veja este exemplo:

$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

O primeiro campo contém as permissões do arquivo /bin/ls, que pertence a root, grupo bin. Deixando as informações restantes de lado, lembre-se que -rwxr-xr-x significa, da esquerda para a direita:

- é o tipo de arquivo (- = arquivo normal, d = diretório, l = link, etc); rwx são as permissões para o dono do arquivo ("read, write, execute", i.e., "leitura, gravação, execução"); r-x são as permissões para o grupo do dono do arquivo (leitura, execução); (eu não explicarei o conceito de grupo, você pode sobreviver sem isso enquanto for um iniciante ;-) r-x são as permissões para todos os outros usuários (leitura, execução).

O diretório /bin tem permissões também: veja a Seção Permissões de Diretórios para mais detalhes. É por isso que você não pode apagar o arquivo /bin/ls, a menos que seja root: você não tem permissão para isso. Para mudar as permissões de um arquivo, o comando é:

$ chmod <quemXperm> <arquivo>

onde quem é u (usuário, i.e., dono), g (grupo), o (outros), X é ou + ou -, perm é r (leitura), w (gravação), ou x (execução). Alguns exemplos do uso de chmod:

$ chmod +x arquivo

isto define a permissão de execução do arquivo.

$ chmod go-rw arquivo

isto remove as permissões de leitura e gravação para todos, exceto o dono.

$ chmod ugo+rwx arquivo

isto dá permissão de leitura, gravação e execução para todos.

# chmod +s arquivo

isso faz um arquivo chamado "setuid" ou "suid"---um arquivo que todos podem executar com os privilégios do dono. Normalmente, você encontrará arquivos setuid root; freqüentemente, são programas importantes do sistema, como o servidor X.

Uma maneira mais curta de se referir a permissões é com dígitos: rwxr-xr-x pode ser expresso como 755 (cada letra corresponde a um bit: --- é 0, --x é 1, -w- é 2, -wx é 3...). Parece difícil, mas com um pouco de prática você entenderá a idéia.

root, sendo o superusuário, pode mudar as permissões de qualquer arquivo. LPM.

3.4 Arquivos: Traduzindo Comandos

À esquerda, os comandos do DOS; à direita, sua contrapartida no Linux.

ATTRIB:         chmod
COPY:           cp
DEL:            rm
MOVE:           mv
REN:            mv
TYPE:           more, less, cat

Operadores de redirecionamento e canalização: < > >> |

Curingas: * ?

nul: /dev/null

prn, lpt1: /dev/lp0 ou /dev/lp1; lpr

Exemplos

DOS                                     Linux
---------------------------------------------------------------------

C:\GUIDO>ATTRIB +R ARQUIVO.TXT          $ chmod 400 arquivo.txt
C:\GUIDO>COPY JOE.TXT JOE.DOC           $ cp joe.txt joe.doc
C:\GUIDO>COPY *.* TOTAL                 $ cat * > total
C:\GUIDO>COPY FRACTALS.DOC PRN          $ lpr fractals.doc
C:\GUIDO>DEL TEMP                       $ rm temp
C:\GUIDO>DEL *.BAK                      $ rm *~
C:\GUIDO>MOVE PAPER.TXT TMP\            $ mv paper.txt tmp/
C:\GUIDO>REN PAPER.TXT PAPER.ASC        $ mv paper.txt paper.asc
C:\GUIDO>PRINT LETTER.TXT               $ lpr letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ more letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ less letter.txt
C:\GUIDO>TYPE LETTER.TXT > NUL          $ cat letter.txt > /dev/null
        n/a                             $ more *.txt *.asc
        n/a                             $ cat section*.txt | less

Observações:

3.5 Executando Programas: Multitarefa e Sessões

Para executar um programa, digite seu nome, como faria no DOS. Se o diretório (Seção Usando Diretórios) onde o programa está armazenado estiver incluso no PATH (Seção Arquivos de Inicialização do Sistema), o programa será iniciado. Exceção: diferentemente do DOS, no Linux um programa localizado no diretório atual não é executado a menos que seu diretório seja incluído no PATH. Contorno: sendo prog o seu programa, digite ./prog.

A linha de comando típica é parecida com essa:

$ comando [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< entrada] [> saída]

onde -s1, ..., -sn são as opções do programa, par1, ..., parn são os parâmetros do programa. Você pode dar vários comandos na mesma linha de comando:

$ comando_1 ; comando_2 ; ... ; comando_n

Isto é tudo que há sobre executar programas, mas é fácil ir um passo a frente. Um dos principais motivos para usar Linux é que é um sistema operacional multitarefa---pode executar vários programas (daqui em diante, processos) ao mesmo tempo. Você pode lançar processos em segundo plano e continuar trabalhando tranqüilamente. Além disso, o Linux permite que você abra várias sessões: é como ter vários computadores para trabalhar ao mesmo tempo.

Usando esses comandos você pode formatar um disco, zipar um conjunto de arquivos, compilar um programa e descompactar um arquivo, tudo ao mesmo tempo, e ainda ter o prompt à sua disposição. Tente isso no DOS! E tente no Windows, apenas para ver a diferença de desempenho (se não travar, é claro).

3.6 Executando Programas em Computadores Remotos

Para executar um programa em uma máquina remota cujo endereço IP seja maquina.remota.edu, digite:

$ telnet maquina.remota.edu

Depois de logar, inicie seu programa favorito. Desnecessário dizer que você deve ter uma conta shell na máquina remota.

Se você tiver X11, você pode até mesmo executar uma aplicativo X no computador remoto, exibindo-o na tela do seu X. Seja maquina.remota.edu o computador remoto e local.linux.box sua máquina Linux. Para executar a partir de local.linux.box um programa X que resida em remote.machine.edu, faça o seguinte:

Et voila! Agora nomeprog rodará em maquina.remota.edu e será exibido na sua máquina. Entretanto, não tente isto usando um modem, pois será lento demais para ser usável.


Next Previous Contents