<chapt id="cmd">Comandos para manipulação de Arquivos
 <p>
Abaixo, comandos utilizados para manipulação de arquivos. 
 

<sect id="comandos-cat">cat 
 <p>
Mostra o conteúdo de um arquivo binário ou texto.
 <p>
<tt>cat [opções] [<em>diretório/arquivo</em>] [<em>diretório1/arquivo1</em>]</tt>
 <p>
<![ %OPCOES [
<taglist compact>
 <tag><em>diretório/arquivo</em></tag>
 <item>
Localização do arquivo que deseja visualizar o conteúdo.
 
 <tag><em>opções</em></tag>
 
 <tag>-n, --number</tag>
 <item>
Mostra o número das linhas enquanto o conteúdo do arquivo é mostrado.
 
 <tag>-s, --squeeze-blank</tag>
 <item>
Não mostra mais que uma linha em branco entre um parágrafo e outro.
 
 <tag>-</tag>
 <item>
Lê a entrada padrão.
</taglist>
]]>
O comando <prgn>cat</prgn> trabalha com arquivos texto. Use o comando  
<prgn>zcat</prgn> para ver diretamente arquivos compactados com 
<prgn>gzip</prgn>. 
<![ %EXEMPLO [
 <p>
Exemplo: <tt>cat /usr/doc/copyright/GPL</tt> ]]>


<sect id="comando-tac">tac
 <p>
Mostra o conteúdo de um arquivo binário ou texto (como o <prgn>cat</prgn>) só 
que em ordem inversa.
 <p>
<tt>tac [opções] [<em>diretório/arquivo</em>] [<em>diretório1/arquivo1</em>]</tt>
<![ %OPCOES [
 <p>
<taglist compact>
 <tag><em>diretório/arquivo</em></tag>
 <item>
Localização do arquivo que deseja visualizar o conteúdo
 
 <tag><em>opções</em></tag>
 
 <tag>-s [string]</tag>
 <item>
Usa o [string] como separador de registros.
 
 <tag>-</tag>
 <item>
Lê a entrada padrão.
</taglist>
]]>
<![ %EXEMPLO [
 <p>
Exemplo: <tt>tac /usr/doc/copyright/GPL</tt>. ]]>


<sect id="comando-rm">rm
 <p>
Apaga arquivos. Também pode ser usado para apagar diretórios e sub-diretórios 
vazios ou que contenham arquivos.
 <p>
<tt>rm [<em>opções</em>][<em>caminho</em>][<em>arquivo/diretório</em>]  
[<em>caminho1</em>][<em>arquivo1/diretório1</em>]</tt>
 <p>
<![ %OPCOES [
onde:
<taglist compact>
 <tag><em>caminho</em></tag>
 <item>
Localização do arquivo que deseja apagar. Se omitido, assume que o arquivo 
esteja no diretório atual.

 <tag><em>arquivo/diretório</em></tag>
 <item>
Arquivo que será apagado.

 <tag><em>opções</em></tag>
 
 <tag>-i, --interactive</tag>
 <item>
Pergunta antes de remover, esta é ativada por padrão.

 <tag>-v, --verbose</tag>
 <item>
Mostra os arquivos na medida que são removidos.

 <tag>-r, --recursive</tag>
 <item>
Usado para remover arquivos em sub-diretórios. Esta opção também pode ser 
usada para remover sub-diretórios.

 <tag>-f, --force</tag>
 <item>
Remove os arquivos sem perguntar.

 <tag>-- arquivo</tag>
  <item>
Remove arquivos/diretórios que contém caracteres especiais. O separador
"--" funciona com todos os comandos do shell e permite que os caracteres 
especiais como "*", "?", "-", etc. sejam interpretados como caracteres 
comuns.

</taglist>
]]>
Use com atenção o comando <prgn>rm</prgn>, uma vez que os arquivos e  
diretórios forem apagados, eles não poderão ser mais recuperados.
<![ %EXEMPLO [
 <p>
Exemplos:
<list compact>
 <item>
<tt>rm teste.txt</tt> - Apaga o arquivo <file>teste.txt</file> no diretório 
atual.
 <item>
<tt>rm *.txt</tt> - Apaga todos os arquivos do diretório atual que 
terminam com <file>.txt</file>.
 <item>
<tt>rm *.txt teste.novo</tt> - Apaga todos os arquivos do diretório atual 
que terminam com <file>.txt</file> e também o arquivo <file>teste.novo</file>.
 <item>
<tt>rm -rf /tmp/teste/*</tt> - Apaga todos os arquivos e sub-diretórios do 
diretório <file>/tmp/teste</file> mas mantém o sub-diretório 
<file>/tmp/teste</file>. 
 <item>
<tt>rm -rf /tmp/teste</tt> - Apaga todos os arquivos e sub-diretórios do 
diretório <file>/tmp/teste</file>, inclusive <file>/tmp/teste</file>. 
 <item>
<tt>rm -f -- --arquivo--</tt> - Remove o arquivo de nome <file>--arquivo--</file>.
</list> ]]>


<sect id="comando-cp">cp
 <p>
Copia arquivos.
 <p>
<tt>cp [<em>opções</em>] [<em>origem</em>] [<em>destino</em>]</tt>
 <p>
<![ %OPCOES [
onde:
<taglist compact>
 <tag><em>origem</em></tag>
 <item>
Arquivo que será copiado. Podem ser especificados mais de um arquivo para 
ser copiado usando "Curingas" (veja <ref id="basico-curingas">).

 <tag><em>destino</em></tag>
 <item>
O caminho ou nome de arquivo onde será copiado. Se o destino for um diretório, 
os arquivos de origem serão copiados para dentro do diretório.

 <tag><em>opções</em></tag>
 
 <tag>i, --interactive</tag>
 <item>
Pergunta antes de substituir um arquivo existente.

 <tag>-f, --force</tag>
 <item>
Não pergunta, substitui todos os arquivos caso já exista.

 <tag>-r</tag>
 <item>
Copia arquivos dos diretórios e subdiretórios da origem para o destino. 
É recomendável usar -R ao invés de -r.  

 <tag>-R, --recursive</tag>
 <item>
Copia arquivos e sub-diretórios (como a opção -r) e também os arquivos 
especiais FIFO e dispositivos. 

 <tag>-v, --verbose</tag>
 <item>
Mostra os arquivos enquanto estão sendo copiados.

<![ %INTERMEDIARIO [
 <tag>-s, --simbolic-link</tag>
 <item>
Cria link simbólico ao invés de copiar.

 <tag>-l, --link</tag>
 <item>
Faz o link no destino ao invés de copiar os arquivos.

 <tag>-p, --preserve</tag>
 <item>
Preserva atributos do arquivo, se for possível.

 <tag>-u, --update</tag>
 <item>
Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou 
quando o arquivo de destino não existe.

 <tag>-x</tag>
 <item>
Não copia arquivos que estão localizados em um sistema de arquivos diferente 
de onde a cópia iniciou.
]]>
</taglist>
]]>
O comando <prgn>cp</prgn> copia arquivos da ORIGEM para o DESTINO. Ambos  
origem e destino terão o mesmo conteúdo após a cópia. 

<![ %EXEMPLO [
 <p>
Exemplos:
<taglist compact>
 <tag><tt>cp teste.txt teste1.txt</tt></tag> 
 <item>
Copia o arquivo <file>teste.txt</file> para <file>teste1.txt</file>.

 <tag><tt>cp teste.txt /tmp</tt></tag>
 <item>
Copia o arquivo <file>teste.txt</file> para dentro do diretório 
<file>/tmp</file>.

 <tag><tt>cp * /tmp</tt></tag>
 <item>
Copia todos os arquivos do diretório atual para <file>/tmp</file>.

 <tag><tt>cp /bin/* .</tt></tag>  
 <item>
Copia todos os arquivos do diretório <file>/bin</file> para o diretório 
em que nos encontramos no momento.

 <tag><tt>cp -R /bin /tmp</tt></tag>
 <item>
Copia o diretório <file>/bin</file> e todos os arquivos/sub-diretórios 
existentes para o diretório <file>/tmp</file>.

 <tag><tt>cp -R /bin/* /tmp</tt></tag>
 <item>
Copia todos os arquivos do diretório <file>/bin</file> (exceto o diretório 
<file>/bin</file>) e todos os arquivos/sub-diretórios existentes dentro 
dele para <file>/tmp</file>.

 <tag><tt>cp -R /bin /tmp</tt></tag>
 <item>
Copia todos os arquivos e o diretório <file>/bin</file> para <file>/tmp</file>.

</taglist> ]]>


<sect id="comando-mv">mv
 <p>
Move ou renomeia arquivos e diretórios. 
<![ %DESCRICAOD [ O processo é semelhante ao do comando <prgn>cp</prgn> mas 
o arquivo de origem é apagado após o término da cópia. ]]>
 <p>
<tt>mv [<em>opções</em>] [<em>origem</em>] [<em>destino</em>]</tt>
 <p>
<![ %OPCOES [
Onde:
<taglist compact>
 <tag><em>origem</em></tag>
 <item>
Arquivo/diretório de origem.

 <tag><em>destino</em></tag>
 <item>
Local onde será movido ou novo nome do arquivo/diretório.

 <tag><em>opções</em></tag>
 <tag>-f, --force</tag>
 <item>
Substitui o arquivo de destino sem perguntar.

 <tag>-i, --interactive</tag>
 <item>
Pergunta antes de substituir. É o padrão.

 <tag>-v, --verbose</tag>
 <item>
Mostra os arquivos que estão sendo movidos.

<![ %INTERMEDIARIO [
 <tag>-u, --update</tag>
 <item>
Move somente arquivos antigos, ou novos arquivos.
]]>
</taglist>
]]>
O comando <prgn>mv</prgn> copia um arquivo da <em>ORIGEM</em> para o  
<em>DESTINO</em> (semelhante ao <prgn>cp</prgn>), mas após a cópia, o  
arquivo de <em>ORIGEM</em> é apagado.

<![ %EXEMPLO [
 <p>
Exemplos:
<taglist compact>
 <tag><tt>mv teste.txt teste1.txt</tt></tag> 
 <item>
Muda o nome do arquivo <file>teste.txt</file> para <file>teste1.txt</file>.

 <tag><tt>mv teste.txt /tmp</tt></tag>
 <item>
Move o arquivo teste.txt para <file>/tmp</file>. Lembre-se que o arquivo de 
origem é apagado após ser movido.
 
 <tag><tt>mv teste.txt teste.new</tt> (supondo que <file>teste.new</file> 
já exista)</tag>
 <item>
Copia o arquivo <file>teste.txt</file> por cima de <file>teste.new</file> e 
apaga <file>teste.txt</file> após terminar a cópia.
</taglist> ]]>

