Linux Essentials para os administradores do Windows – navegação e manipulação de arquivo

Na parte 1 desta série, você aprendeu alguns Unix/Linux (* nix) básico, abrangendo a segurança geral, layout de sistema de arquivos, comparáveis DOS comandos e estrutura de diretórios. Na parte 2, levo-te aprofundar o * nix filesystem, sistema de arquivos navegação e manipulação de arquivo.

Diferenças do sistema de arquivos

Nos últimos anos no * nix, espaço, sistemas de arquivos passaram por um pouco de uma padronização ou convergência. Isso é uma coisa boa para os administradores de sistema multi-plataforma que devem trabalhar em uma variedade de sistemas sem se tornar um especialista em cada um. Por convergência, quer dizer que há mais de uma aparência padrão para * nix filesystems de um “sabor” para outro.

Se você estiver familiarizado com o layout de um sistema Linux, você pode facilmente navegar e encontrar arquivos críticos em praticamente qualquer outro moderno * nix sistema. Um número de diretórios é comuns a todos * nix tipos (por exemplo, / /etc , /var , /tmp , / usr , / bin e alguns outros); no entanto, um diretório específico não é consistente do sabor de um para outro, e que é onde residem os arquivos do kernel.

Por exemplo, no Linux, você encontrará os arquivos sob /boot , mas em HP-UX, eles estão sob/stand . Em outros * nix tipos, os arquivos do kernel residem em /kernel , /vmunix , ou sob múltiplos subdiretórios de/usr .

A vantagem disto é que você precisa reconhecer que lá vão ser sutis diferenças no layout do * nix sistemas. Os arquivos de configuração importantes estão sempre sob/etc . Para algumas aplicações, talvez você precise olhar em/var ou em / opt . Como você se familiarizar com o Linux ou outro sabor de Unix, você vai aprender que cada sistema tem suas próprias peculiaridades e idiossincrasias.

Navegação do sistema de arquivos

Figura 1 de clientes como o sistema de arquivos Linux é do diretório / (raiz).

Figura 1: Sistema de arquivos root do Linux e seus subdiretórios de muitos.

Esta visão, você pode fazer algumas cavernas por conta própria. Primeiro, você precisará saber alguns comandos básicos e as funções que eles executam. Como o Prompt CMD Windows você percorrer diretórios e subdiretórios com o comando cd , com algumas diferenças sutis que você vai ter que se acostumar ao longo do caminho.

Por exemplo, digitar cd por si só você retorna para o seu diretório home. No Windows, o sistema retorna o diretório de trabalho atual. O comando equivalente para fazer isso no Linux é pwd (diretório de trabalho de impressão). Não importa onde você está em um * nix sistema de arquivos, você pode usar o comando cd para voltar o seu diretório home.

Outra diferença sutil quando vagando um * nix sistema de arquivos é que você deve especificar explicitamente o diretório ao qual você deseja cd do diretório raiz (/ ). Por exemplo, se você quiser o cd para o diretório /etc , você tem que digitar o comando:

$ cd /etc

Se você deixar de fora a barra, você receberia o erro

-bash: cd: etc: No such file or directory

Se o diretório atual não tem um subdiretório chamado etc . Seu * nix concha pressupõe que, se você não especificar uma barra à esquerda antes de um nome de diretório, é um subdiretório do diretório atual. Para ilustrar mais explicitamente, o comando

$ cd etc

iria pôr-me no etc sob meu diretório atual, que presumindo que é o meu diretório home, me colocaria no

/home/khess/etc

que agora é meu novo diretório de trabalho atual. Claro, no seu sistema, seu diretório home terá seu nome de usuário, não o meu.

Se você está procurando por um arquivo, você não precisa cd a ele primeiro. Você pode exibir o conteúdo de um diretório em qualquer lugar contando explicitamente o shell onde você quer olhar:

$ ls /usr/share/ssh
blacklist.DSA-1024  blacklist.RSA-2048

Se você decidir fazer o cd em um subdiretório, você pode navegar para qualquer outro diretório ou subdiretório sem primeiro ir para o seu diretório home:

$ cd /usr/share/ssh
$ cd /etc/network

Agora que você sabe como para cd de um diretório para outro, é tempo de olhar para o comando que usei acima de olhar para o conteúdo de um diretório: o comando ls . O comando ls é equivalente ao comando DIR no seus sistemas Windows. Exibe o conteúdo e outros atributos de arquivo, se especificado. A seguir está uma listagem de diretório parcial do meu diretório home de Windows 7 com DIR :

07/10/2011  04:28 PM    <DIR>          Citrix
07/11/2012  03:17 PM    <DIR>          Contacts
07/28/2012  02:38 PM    <DIR>          Desktop
07/27/2010  08:15 AM    <DIR>          Diskeeper
07/11/2012  03:17 PM    <DIR>          Documents
07/29/2012  03:51 PM    <DIR>          Downloads
07/11/2012  03:17 PM    <DIR>          Favorites
04/16/2012  12:00 PM            60,304 g2mdlhlpx.exe
07/11/2012  03:17 PM    <DIR>          Links
07/11/2012  03:17 PM    <DIR>          Music
07/29/2012  03:56 PM        18,874,368 NTUSER.DAT
07/11/2012  03:17 PM    <DIR>          Pictures
01/11/2012  06:44 PM    <DIR>          Pictures - Ken’s iPhone
07/11/2012  03:17 PM    <DIR>          Saved Games
07/11/2012  03:17 PM    <DIR>          Searches
08/04/2010  01:03 PM    <DIR>          SecurityScans

Como você pode ver, a listagem de DIR padrão exibe a data de modificação, o tempo de modificação, o tipo de arquivo, o tamanho do arquivo e o arquivo ou o nome do diretório. Compare isso com as mínimas informações divulgadas pelo comando ls :

Desktop    goo.txt   Music       Pictures  Templates
Documents  list.txt  newbie.txt  Public    Videos

O comando básico ls exibe muito pouca informação sobre o conteúdo de diretório exceto para nomes de arquivo. Na maioria dos sistemas Linux, o comando ls mostra arquivo de código de cores, lista, conforme mostrado na Figura 2.

Figura 2: Janela PuTTY exibindo um arquivo com a lista no meu diretório home.

Mais * nix sistemas não têm a vantagem de uma lista de arquivos codificados por cores. Embora o Linux exibe diretórios em azul, arquivos de texto em branco, arquivos compactados em vermelho e arquivos gráficos em verde, se seu sistema não código de cor, você tem que confiar no comando ls “switches”. Switches são opções que você passar para um comando para provocar um comportamento diferente do padrão. Windows comandos têm interruptores, também, mas são usados menos frequentemente do que no * nix sistemas.

$ ls -F
Desktop/    goo.txt   Music/      Pictures/  Templates/
Documents/  list.txt  newbie.txt  Public/    Videos/

O interruptor -F significa que você deseja é exibir “classificação” de cada arquivo. Diretórios são mostrados com uma barra à direita. Arquivos de texto tem designação. Links têm um símbolo @ à direita.

Para imitar quase o comando DIR padrão do Windows, tente o comando ls com o -al mudar a combinação.

$ ls -al

drwxr-xr-x  2 khess khess 4096 2012-07-03 15:59 Desktop
drwxr-xr-x  2 khess khess 4096 2012-07-03 15:58 Documents
-rw-r--r--  1 root  root     0 2012-07-07 15:04 goo.txt
-rw-r--r--  1 khess khess   49 2012-07-07 17:07 list.txt
drwxr-xr-x  2 khess khess 4096 2012-07-03 15:58 Music
-rw-r--r--  1 khess khess    0 2012-07-07 14:55 newbie.txt
drwxr-xr-x  2 khess khess 4096 2012-07-29 16:13 Pictures
drwxr-xr-x  2 khess khess 4096 2012-07-03 15:58 Public
drwxr-xr-x  2 khess khess 4096 2012-07-03 15:58 Templates
drwxr-xr-x  2 khess khess 4096 2012-07-03 15:58 Videos

Esta listagem parcial é apenas alguns dos arquivos no meu diretório home. Quando você inserir o mesmo comando no seu sistema, você poderá ver arquivos que começam com um ponto (.), que indica que eles são arquivos ocultos. Se você deseja ocultar um arquivo em * nix, o nome com um ponto principal. No entanto, o arquivo só está oculto de comandos padrão ls .

Na verdade, você provavelmente verá pelo menos esses três arquivos no topo da sua lista do diretório:

-rw-------  1 khess khess 3944 2012-07-28 19:06 .bash_history
-rw-r--r--  1 khess khess  220 2012-05-25 22:11 .bash_logout
-rw-r--r--  1 khess khess 2940 2012-05-25 22:11 .bashrc

Para visualizar arquivos em ordem de data-classificados, tente os seguintes comandos no Windows e no Linux:

C:\> DIR /OD

e

$ ls -ltr

Ambos os sistemas devem listar arquivos em ordem de data de modificação, com os mais recentes arquivos mostrados na parte inferior das listas do.

Nota: Na maioria dos sistemas Linux, dir é um “alias” para ls . Experimentá-lo em seu sistema para ver se funciona. Discutirei aliases em detalhes em um artigo posterior.

Manipulação de arquivo

Por manipulação de arquivo , estou me referindo a criar, copiar, remover (excluir), movendo-se, renomeando e edição de arquivos. Um diretório é também um arquivo em * nix. Na verdade, tudo em * nix é um arquivo. Para efeitos desta lição, arquivo refere-se a texto sem formatação ou um diretório.

A maneira mais rápida de criar um ficheiro vazio é usar o comando de toque ,

$ touch file1.txt

que cria o arquivo vazio file1. txt no seu diretório home. Se você não pode criar esse arquivo, use o comando cd para retornar ao seu diretório home e tente novamente.

$ ls -al file1.txt
-rw-r--r-- 1 khess khess 0 2012-07-29 16:56 file1.txt

Uma maneira fácil de inserir conteúdo em seu novo arquivo é a eco lá. O comando echo funciona de forma semelhante no Windows tendo entrada do teclado e colocando-o em um arquivo através do redirecionamento de saída,

$ echo “This is one way to put text into a file.” > file1.txt

o que coloca a frase, “Isto é uma maneira de colocar o texto em um arquivo…” em file1. txt . Na verdade, você substituiu file1. txt com um novo arquivo com o mesmo nome porque você usou o operador de > . Se você quiser acrescentar a frase para o arquivo, use >> como o operador de redirecionamento em vez disso.

Para exibir o conteúdo do arquivo que você criou, use o comando cat . Lembre-se, da tabela 1, na parte 1, gato é equivalente ao tipo de comando.

$ cat file1.txt
This is one way to put text into a file.

O comando echo criado ou sobrescreveu file1. txt . Agora acrescentar dados para o arquivo com o >> operador de redirecionamento:

$ echo “This is the way to append a file and put text into it.” >> file1.txt

Quando você olha para o arquivo com o comando cat, você verá sua linha acrescentada:

$ cat file1.txt
This is one way to create a file and put text into it.
This is the way to append a file and put text into it.

Eu vou te avisar, agora que, quando você iniciar o script, você vai esquecer de anexar o arquivo, e você vai gastar horas Depurando scripts muito simples porque você esqueceu de usar o >> . Todo mundo faz isso, então esteja preparado.

Copiando arquivos funciona da mesma maneira no Windows e * nix. Simplesmente afirmou,

$ cp file1.txt file2.txt

Este comando de cópia (cp ) cria uma duplicata exata do file1. txt como file2 .

Copiando um arquivo é um excelente método de backup. Você deve criar uma cópia de backup de qualquer arquivo de configuração antes de você editar como usuário root, então você pode reverter para o original você deve cometer um erro ou alterar a formatação de importante.

Para um arquivo de backup corretamente antes de editar, você como se tornar o usuário root para acesso limitado. Na parte 1, mencionei brevemente o comando sudo (pronuncia-se soodoo ou soodoe), que permite que você executar comandos como root, um de cada vez da sua conta de usuário regular. Acho que RunAs .

$ sudo cp -p file1.txt file1_bak.txt
[sudo] password for khess: **********

O arquivo file1. txt é copiado, preservando as permissões (-p ) para file_bak.txt .

Em vez de asteriscos, quando você digita sua senha, você não terá nenhuma resposta. O sudo , para que você será solicitado é a sua senha. O sistema verifica-se que você é quem diz que ser; caso contrário, outra pessoa poderia subir para a sua tela e digite um comando como root.

Seu poder como root com sudo dura apenas cinco minutos, então você vai ter que autenticar novamente depois disso. Isso garante que ninguém mais pode simplesmente subir e se conceder acesso de root para um sistema no qual você está conectado.

Alguns sistemas são muito restritivos e só concedem acesso sudo para um número limitado de comandos específicos. Outros sistemas são menos restritivos e permitem que você executar algo como root com este método. Acesso por sudo é configurável pelo usuário raiz e é gerido por um editor especial para esse arquivo e um arquivo especial. Abordarei isso mais detalhadamente em um artigo posterior.

Para renomear um arquivo em * nix, você “mover” isso para um novo nome. Parece estranho no início, mas depois que você se acostumar com o conceito de mover-se para um novo nome, não o incomodará mais:

$ mv file1.txt filex.txt
$ ls 
Desktop    filex.txt  list.txt  newbie.txt  Public     Videos
Documents  goo.txt    Music     Pictures    Templates

O comando mv também fisicamente move arquivos de um local para outro. Por exemplo, se você deseja mover a filex.txt para o diretório /tmp , emita o primeiro comando:

$ mv filex.txt /tmp

$ ls /tmp
filex.txt  orbit-gdm  pulse-PKdhtXMmr18n

Você também pode renomear o arquivo quando você movê-lo fisicamente:

$ mv /tmp/filex.txt file0.txt

$ ls
Desktop    file0.txt  list.txt  newbie.txt  Public     Videos
Documents  goo.txt    Music     Pictures    Templates

O sistema assume que você deseja mover o arquivo para o diretório atual, se você não especificar um local.

Remover um arquivo em * nix sistemas é fácil – muito fácil. Ao contrário do Windows, o sistema não te perguntar se você está certo. O * nix sistemas (muitas vezes incorretamente) assumem que sabe o que está fazendo e que você realmente deseja remover um arquivo. Remoção é irreversível. Não há lixeira preserva arquivos apagados.

$ rm file0.txt

O arquivo sumiu.

Criando um diretório no * nix systems é exatamente como criá-los em sistemas Windows o CMD prompt. Embora sistemas Windows usam um alias para o MKDIR (MD ), a sintaxe é a mesma.

$ mkdir newdir

O comando copiar (cp ) funciona para diretórios vazios ou para diretórios que você deseja copiar; no entanto, para aqueles que contêm arquivos, você terá que executar alguma coisa perto de um XCOPY /S neles. Este comando copia o diretório e todos os seu conteúdo recursivamente e preserva todas as permissões em todos os arquivos e subdiretórios.

$ cp -Rp newdir noodir

Se você tentar copiar um diretório que contém arquivos para um novo nome de diretório sem especificar o parâmetro -R (recursivo), você receberá esse erro e não será criado no diretório:

cp: omitting directory `newdir’

Um ls irão mostrar-lhe que o diretório foi criado. Você pode colocar arquivos nele, removê-lo, movê-lo ou renomeá-lo, como faria qualquer outro arquivo – com algumas exceções.

Você não pode remover um diretório se ele tem arquivos nele.

$ touch newdir/newfile.txt

Este comando de toque coloca o arquivo vazio, NewFile , no diretório novo_dir . Agora, tentar remover o diretório com o padrão equivalente para o Windows RMDIR (RM ) comando, rmdir :

$ rmdir newdir
rmdir: failed to remove `newdir/’: Directory not empty

Você tem duas opções: remover ou mover todos os arquivos dentro do diretório primeiro ou usar um comando especial remover no diretório teimoso:

$ rm -rf newdir

Este comando Remove recursivamente o arquivo especificado (diretório) com a opção force (-f ). O diretório newdir e todos os arquivos contidos nela desapareceu.

Cuidado: Usando o rm -rf comando é perigoso, então usá-lo cuidadosamente. Se você emitir o comando no lugar errado como o usuário root, você pode remover todos os arquivos sob o diretório que você especificar – mesmo o / (root) diretório – e assim tornará seu sistema inútil.

Os tópicos abordados neste artigo são relativamente simples, mas exigem prática para dominar adequadamente. Praticá-los em seu sistema, até se sentir confortável com cada um. Lembre-se de fazer backup de qualquer sistema de arquivos antes de editá-lo e preservar suas permissões. Uma lição que este se tornará cada vez mais importante para você, como você se tornar mais competente como um * administrador de sistema de nix. Começar com as boas práticas, até mesmo como um usuário individual.

Da próxima vez, abordarei a edição de arquivos avançado e alguma manipulação de arquivo avançado.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s