Unix / Linux - Gerenciamento de Arquivos

Neste capítulo, discutiremos em detalhes sobre o gerenciamento de arquivos no Unix. Todos os dados no Unix são organizados em arquivos. Todos os arquivos são organizados em diretórios. Esses diretórios são organizados em uma estrutura semelhante a uma árvore chamada sistema de arquivos.

Quando você trabalha com Unix, de uma forma ou de outra, você passa a maior parte do tempo trabalhando com arquivos. Este tutorial o ajudará a entender como criar e remover arquivos, copiá-los e renomeá-los, criar links para eles, etc.

No Unix, existem três tipos básicos de arquivos -

  • Ordinary Files- Um arquivo comum é um arquivo no sistema que contém dados, texto ou instruções do programa. Neste tutorial, você verá como trabalhar com arquivos comuns.

  • Directories- Os diretórios armazenam arquivos especiais e comuns. Para usuários familiarizados com Windows ou Mac OS, os diretórios Unix são equivalentes a pastas.

  • Special Files- Alguns arquivos especiais fornecem acesso ao hardware, como discos rígidos, unidades de CD-ROM, modems e adaptadores Ethernet. Outros arquivos especiais são semelhantes a apelidos ou atalhos e permitem que você acesse um único arquivo usando nomes diferentes.

Listagem de arquivos

Para listar os arquivos e diretórios armazenados no diretório atual, use o seguinte comando -

$ls

Aqui está o exemplo de saída do comando acima -

$ls

bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work

O comando ls suporta o -l opção que o ajudaria a obter mais informações sobre os arquivos listados -

$ls -l
total 1962188

drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

Aqui estão as informações sobre todas as colunas listadas -

  • First Column- Representa o tipo de arquivo e a permissão concedida ao arquivo. Abaixo está a descrição de todos os tipos de arquivos.

  • Second Column - Representa o número de blocos de memória usados ​​pelo arquivo ou diretório.

  • Third Column- Representa o proprietário do arquivo. Este é o usuário Unix que criou este arquivo.

  • Fourth Column- Representa o grupo do proprietário. Cada usuário Unix terá um grupo associado.

  • Fifth Column - Representa o tamanho do arquivo em bytes.

  • Sixth Column - Representa a data e a hora em que este arquivo foi criado ou modificado pela última vez.

  • Seventh Column - Representa o arquivo ou o nome do diretório.

No ls -l exemplo de listagem, cada linha de arquivo começa com um d, -, ou l. Esses caracteres indicam o tipo de arquivo listado.

Sr. Não. Prefixo e descrição
1

-

Arquivo normal, como um arquivo de texto ASCII, executável binário ou link físico.

2

b

Bloquear arquivo especial. Bloquear arquivo de dispositivo de entrada / saída, como um disco rígido físico.

3

c

Arquivo especial de personagem. Arquivo de dispositivo de entrada / saída bruto, como um disco rígido físico.

4

d

Arquivo de diretório que contém uma lista de outros arquivos e diretórios.

5

l

Arquivo de link simbólico. Links em qualquer arquivo regular.

6

p

Pipe nomeado. Um mecanismo para comunicações entre processos.

7

s

Soquete usado para comunicação entre processos.

Metacaracteres

Os metacaracteres têm um significado especial no Unix. Por exemplo,* e ?são metacaracteres. Nós usamos* para corresponder a 0 ou mais caracteres, um ponto de interrogação (?) corresponde a um único caractere.

Por exemplo -

$ls ch*.doc

Exibe todos os arquivos, cujos nomes começam com ch e terminar com .doc -

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc ch02-1.doc c

Aqui, *funciona como metacaractere que combina com qualquer caractere. Se você deseja exibir todos os arquivos que terminam com apenas.doc, então você pode usar o seguinte comando -

$ls *.doc

Arquivos Escondidos

Um arquivo invisível é aquele cujo primeiro caractere é o ponto ou ponto (.). Os programas Unix (incluindo o shell) usam a maioria desses arquivos para armazenar informações de configuração.

Alguns exemplos comuns de arquivos ocultos incluem os arquivos -

  • .profile - O script de inicialização Bourne shell (sh)

  • .kshrc - O script de inicialização do Korn shell (ksh)

  • .cshrc - O script de inicialização C shell (csh)

  • .rhosts - O arquivo de configuração do shell remoto

Para listar os arquivos invisíveis, especifique o -a opção para ls -

$ ls -a

.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$
  • Single dot (.) - Isso representa o diretório atual.

  • Double dot (..) - Isso representa o diretório pai.

Criação de arquivos

Você pode usar o vieditor para criar arquivos comuns em qualquer sistema Unix. Você simplesmente precisa dar o seguinte comando -

$ vi filename

O comando acima abrirá um arquivo com o nome de arquivo fornecido. Agora, pressione a teclaipara entrar no modo de edição. Quando estiver no modo de edição, você pode começar a escrever seu conteúdo no arquivo como no programa a seguir -

This is unix file....I created it for the first time.....
I'm going to save this content in this file.

Quando terminar de usar o programa, siga estas etapas -

  • Pressione a tecla esc para sair do modo de edição.

  • Pressione duas teclas Shift + ZZ juntos para sair do arquivo completamente.

Agora você terá um arquivo criado com filename no diretório atual.

$ vi filename
$

Editando Arquivos

Você pode editar um arquivo existente usando o vieditor. Discutiremos resumidamente como abrir um arquivo existente -

$ vi filename

Assim que o arquivo for aberto, você pode entrar no modo de edição pressionando a tecla ie então você pode continuar editando o arquivo. Se você deseja mover aqui e ali dentro de um arquivo, então primeiro você precisa sair do modo de edição pressionando a teclaEsc. Depois disso, você pode usar as seguintes teclas para se mover dentro de um arquivo -

  • l chave para mover para o lado direito.

  • h tecla para mover para o lado esquerdo.

  • k chave para mover para cima no arquivo.

  • j chave para mover o lado negativo no arquivo.

Assim, usando as teclas acima, você pode posicionar o cursor onde quiser editar. Assim que estiver posicionado, você pode usar oipara entrar no modo de edição. Quando terminar de editar seu arquivo, pressioneEsc e finalmente duas chaves Shift + ZZ juntos para sair do arquivo completamente.

Exibir conteúdo de um arquivo

Você pode usar o catcomando para ver o conteúdo de um arquivo. A seguir está um exemplo simples para ver o conteúdo do arquivo criado acima -

$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

Você pode exibir os números das linhas usando o -b opção junto com o cat comando da seguinte forma -

$ cat -b filename
1   This is unix file....I created it for the first time.....
2   I'm going to save this content in this file.
$

Contando Palavras em um Arquivo

Você pode usar o wccomando para obter uma contagem do número total de linhas, palavras e caracteres contidos em um arquivo. A seguir está um exemplo simples para ver as informações sobre o arquivo criado acima -

$ wc filename
2  19 103 filename
$

Aqui está o detalhe de todas as quatro colunas -

  • First Column - Representa o número total de linhas no arquivo.

  • Second Column - Representa o número total de palavras no arquivo.

  • Third Column- Representa o número total de bytes no arquivo. Este é o tamanho real do arquivo.

  • Fourth Column - Representa o nome do arquivo.

Você pode fornecer vários arquivos e obter informações sobre esses arquivos de uma vez. A seguir está uma sintaxe simples -

$ wc filename1 filename2 filename3

Copiando arquivos

Para fazer uma cópia de um arquivo, use o cpcomando. A sintaxe básica do comando é -

$ cp source_file destination_file

A seguir está o exemplo para criar uma cópia do arquivo existente filename.

$ cp filename copyfile
$

Agora você encontrará mais um arquivo copyfileem seu diretório atual. Este arquivo será exatamente o mesmo que o arquivo originalfilename.

Renomeando arquivos

Para alterar o nome de um arquivo, use o mvcomando. A seguir está a sintaxe básica -

$ mv old_file new_file

O programa a seguir irá renomear o arquivo existente filename para newfile.

$ mv filename newfile
$

o mvcomando irá mover o arquivo existente completamente para o novo arquivo. Neste caso, você encontrará apenasnewfile em seu diretório atual.

Excluindo Arquivos

Para excluir um arquivo existente, use o rmcomando. A seguir está a sintaxe básica -

$ rm filename

Caution- Um arquivo pode conter informações úteis. É sempre recomendado ter cuidado ao usar esteDeletecomando. É melhor usar o-i opção junto com rm comando.

A seguir está o exemplo que mostra como remover completamente o arquivo existente filename.

$ rm filename
$

Você pode remover vários arquivos de uma vez com o comando fornecido abaixo -

$ rm filename1 filename2 filename3
$

Streams Unix padrão

Em circunstâncias normais, todo programa Unix tem três streams (arquivos) abertos para ele quando é iniciado -

  • stdin- Isso é referido como a entrada padrão e o descritor de arquivo associado é 0. Isso também é representado como STDIN. O programa Unix lerá a entrada padrão do STDIN.

  • stdout- Isso é referido como a saída padrão e o descritor de arquivo associado é 1. Isso também é representado como STDOUT. O programa Unix irá escrever a saída padrão em STDOUT

  • stderr- Isso é referido como o erro padrão e o descritor de arquivo associado é 2. Isso também é representado como STDERR. O programa Unix escreverá todas as mensagens de erro em STDERR.