Página seguinte Página anterior Índice

108. Arquivos e Programas

108.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 coringa, 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.

108.2 Ligações Simbólicos

O Unix tem um tipo de arquivo que não existe no DOS: a ligação simbólica. 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 ligações simbólicas são /usr/X11, que aponta para /usr/X11R6; /dev/modem, que aponta para /dev/cua0 or /dev/cua1.

Para fazer uma ligação simbólica:

$ ln -s <arq_ou_dir> <nomedaligação>

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. As ligações simbólicas aparecem assim em listagens de diretório:

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

108.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 ao 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 = ligação, 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 o superusuário (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.

Sendo o superusuário, pode-se mudar as permissões de qualquer arquivo. LPM.

108.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: < > >> |

Coringas: * ?

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:

108.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 a linha de comando à sua disposição. Tente isso no DOS! E tente no Windows, apenas para ver a diferença de desempenho (se não travar, é claro).

108.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 entrar no sistema, inicie seu programa favorito. Desnecessário dizer que você deve ter uma conta na máquina remota.

Se você tiver o 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:

E 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.


Página seguinte Página anterior Índice