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.