Mostrar mensagens com a etiqueta shell. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta shell. Mostrar todas as mensagens

quarta-feira, 8 de maio de 2019

Limitação no tamanho do nome do arquivo

Com a atualização de aniversário do Windows 10, você pode finalmente abandonar o limite máximo de 260 caracteres no Windows. Você só precisa fazer uma pequena edição no Registro do Windows ou na Diretiva de Grupo. Veja como fazer isso acontecer.

  1. Pressione a tecla do Windows, digite gpedit.msc e pressione Enter.
  2. Navegue até Local Computer Policy > Computer Configuration > Administrative Templates > System > Filesystem .
  3. Clique duas vezes na opção Enable NTFS long paths e ative-a.

POWERSHELL

Get-ItemProperty HKLM:\System\CurrentControlSet\control\FileSystem

Set-ItemProperty -Name LongPathsEnabled -Value 1 -Path HKLM:\System\CurrentControlSet\control\FileSystem

Atualização-versões mais recentes

Parece que os locais do registro com algumas das últimas atualizações do Windows 10 Anniversary mudaram um pouco para permitir que os Long Paths ajudassem a superar os caminhos e nomes de arquivos da API do Windows que excedem um limite de 255-260 caracteres para esses programas no Windows que pode utilizar isso uma vez ativado.

Importação do registro ativando caminhos longos

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem]

"LongPathsEnabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]

"LongPathsEnabled"=dword:00000001

Valor de registro opcional

O valor da chave de registro abaixo foi alterado quando a opção foi feita com o editor Política de grupo local para ativar Enable Win32 long paths , mas as porções <SID> provavelmente serão diferentes por conta definida com um perfil, etc. na máquina local do Windows 10, conecte esses valores de acordo com o que você vê quando olha para lá com o regedit.

Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-[<SID>-<SID>-<SID>]-1001\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{B0D05113-7B6B-4D69-81E2-8E8836775C9C}Machine\System\CurrentControlSet\Control\FileSystem]

"LongPathsEnabled"=dword:00000001

terça-feira, 2 de abril de 2013

Comando for para executar vários pings

for /l %r in (1,1,1000) do ping 192.168.1.%r

onde

%r -- variavel de ambiente

(1,1,1000) - contagem de máquina a máquina até o limite de 1000 máquinas

altere de acordo com o número de máquinas da sua rede

do - fazer

ping - teste de conexão

192.168.0.%r - ip com a variavel no final para contagem...

terça-feira, 5 de janeiro de 2010

Shell script: *, [], {}, ????, como utilizá-los?

Introdução

Outro recurso importantíssimo e que facilita muito a vida do administrador é a utilização de wildcards, seja ela para fins de buscas, cópias de aquivos para cá ou para lá, mover arquivos etc. Seja qual for o fim, os wildcards estão ao nosso lado para facilitar as tarefas.
Aqui será apresentando seu uso básico, em conjunto com comandos básicos, sendo eles: ls, cp, mv e rm.
Os wildcards, podem ser usados em inúmeros outros comandos como sed, find e para criação de expressões regulares, porém isso requer um conhecimento um pouco mais avançado e por isso não será abordado neste artigo.
De qualquer maneira entender seu uso básico irá lhe ajudar e muito. :)
Conteúdo programado:
  • Apresentação aos wildcards;
  • Entendendo seu uso na prática;
  • Considerações finais.
Uma ótima leitura a todos.
 
 

*, [], {}, ????

Os wildcards, chamados de coringas ou meta-caracteres, nos auxiliaram em diversas tarefas, então vamos conhecê-los.

 

Interrogação (?)

Este wildcard tem a finalidade de substituir um ou mais caracteres, porém os mesmos devem existir, senão a busca retornará um valor nulo. Vamos a um exemplo para melhor entendimento.
O exemplo que melhor se encaixa é, eu estou lá em /etc e quero saber os runlevels de meu sistema, simplesmente venho e digito:
# ls -d /etc/rc?.d
Outro exemplo, se eu quisesse listar tudo começado com rc e que tivesse mais três caracteres depois:
# ls -d /etc/rc???
Em minha opinião este é o wildcard menos utilizado, porém se bem implementado em uma busca tem suas vantagens.

 

Asterisco (*)

Este sim você usa em seu dia-a-dia e às vezes nem se dá conta, sem dúvidas o mais utilizado. O asterisco (*) substitui qualquer quantidade de caracteres e pode ser colocado no começo de uma busca, no meio ou no fim, ou ainda podemos deixar em evidencia apenas a extensão de um arquivo e poder listar tudo que tiver esta extensão em seu nome.
Vamos a um exemplo:
# ls /etc/*.conf
Ou mesmo:
# ls -d /etc/d*.conf

 

Colchetes []

Este também é muito interessante, ele nos permite adicionar condições especiais para a saída da busca, algo como qualquer texto que termine com um número de 1 a 9 ou todos os diretórios iniciados com letra maiúscula ou minúscula.
Porém no uso do colchetes, tem que haver uma lógica. Vamos a um exemplo.
Quero listar todos os arquivos iniciados de a até c no diretório /etc:
# ls /etc/[a-c]*
Porém não serão listados arquivos que iniciam com letra maiúscula, se eu quisesse listar as maiúsculas ficaria da seguinte maneira:
# ls /etc/[a-cA-C]*
E se eu quisesse listar todos os arquivos exceto os iniciados por vogais, ficaria assim:
# ls /etc/[^AEIOU]*
Estes são exemplos não convencionais, vocês entenderão bem daqui a pouco quando passarmos para a prática.
Fique atento a um coisa, veja que cada colchete substitui apenas um caractere.

 

Chaves {}

Este wildcard nos permite especificar uma combinação de caracteres, números ou trechos para serem combinados com o que estiver fora dele, assim fica meio confuso né, mas vamos a um exemplo que rapidamente vocês entenderam.
Digamos que eu esteja no diretório corrente e queira listar todos arquivos que iniciem com a palavra text:
# ls -la . {text}*
O que mais chama a atenção neste wildcard é que o mesmo pode ser combinado com comandos de criação de arquivos e diretório, o que não podemos fazer usando o wildcard [], isso facilita e muito quando se tem um padrão no nome do arquivo e só mude algum caractere, muito bom para ministrar aulas ou dar de exemplos em artigos. :)
Veja: eu quero criar dez arquivos iniciados com o nome aula. Vejo e emito o seguinte comando:
# touch aula{1,2,3,4,5,6,7,8,9,10}
Interessante né, agora que já entenderam o que cada wildcard faz, que tal aprofundar-se um pouco mais?

 

 

Utilizando os wildcards - modo listagem

Como em um artigo anterior, tentarei realizar uma interação com o leitor afim de tornar mais fácil o entendimento e aprendizado do assunto. Então vamos meter a mão na massa e abusar de seu uso. Tudo com a maior segurança. :)
Tudo ocorrerá na maioria das vezes no diretório /tmp, pois tudo é apagado assim que se rebota o sistema.
Nesta primeira parte, tratarei apenas da listagem, ou seja, explorar o que se tem em um diretório, e na segunda parte teremos um interação com os comandos cp e mv.
Vamos lá, navegue até o /tmp:

# cd /tmp

Dentro deste diretório criaremos quinze arquivos iniciados com "teste" e contendo números em seu final, vamos lá?
Criei os arquivos, pode seguir este exemplo em uma primeira vez apenas para entender seu uso, depois pode criar seus próprios testes, isso ajuda e muito no entendimento:

# touch teste{1,2,3,4,5,6,7,8,9,10,20,25,30,40,45}

Agora crie um arquivo chamado "otesteo":

# touch otesteo

Arquivos criados!
Vamos ver como ficou o cenário, e para já começar, listaremos apenas os arquivos que nos interessam, que consequentemente são os que acabamos de criar, para isso usaremos o (*):

# ls *test*
otesteo  teste10  teste20  teste3   teste4   teste45  teste6  teste8
teste1   teste2   teste25  teste30  teste40  teste5   teste7  teste9

Bom, mas qual é a finalidade destes arquivos?
Para que possamos entender o uso dos wildcards, precisaremos realizar testes, ou seja, entender como é feito, então trabalharemos em cima destes arquivos, movimentando-os para lá e para cá, removendo, realizando cópias, listagens, enfim, praticando.
Sem muitas delongas, vamos à pratica!
Primeiro listaremos os arquivos que contenham apenas um número no final de seu nome, usaremos o []:

# ls teste[1-9]
teste1  teste2  teste3  teste4  teste5  teste6  teste7  teste8  teste9

Perfeito, tente agora listar arquivos com dois números no final de seu nome, veja, para que consiga realizar tal listagem precisaremos repetir o uso dos [] na expressão. Mas porque? Para cada casa usamos um par de colchetes [], e assim sucessivamente. Se quisermos listar, por exemplo, arquivos que contenham o ano de criação, precisaremos usar 4 pares de colchetes, um para cada casa, vamos lá então:

# ls teste[1-9][0]
teste10  teste20  teste30  teste40

Percebem a diferença entre os dois?

# ls teste[1-9][0-5]
teste10  teste20  teste25  teste30  teste40  teste45

Já que com arquivos sem extensão já estamos nos saindo bem, que tal esquentarmos um pouco as coisas?
Bom, até aqui já conseguimos fazer listagens básicas certo? Mas e se fossem por suas extensões, se elas tivessem alguns outros caracteres, enfim, vamos ver estes cenários:
Lá em /tmp, onde tínhamos os arquivos:

otesteo  teste10  teste20  teste3   teste4   teste45  teste6  teste8
teste1   teste2   teste25  teste30  teste40  teste5   teste7  teste9

Algo bem básico, vamos criar arquivos chamados teste.txt teste.conf e 123teste.txt 123teste.conf.

# touch 123teste{.txt,.conf} teste{.txt,.conf}

Opa, aqui já outra coisa que podemos reparar, podemos criar arquivos de várias extensões diferentes sem precisar repetir o comando, então já podemos perceber também que poderemos listá-los sem problema, vamos lá.
Dentre todos aqueles nosso arquivos em /tmp, eu quero listar os seguintes: otesteo, 123teste.txt, 123teste.conf, teste.txt e teste.conf. Vamos ver como fica?

# ls *teste{o,.txt,.conf}
123teste.conf  123teste.txt  otesteo  teste.conf  teste.txt

Opa, perfeito, mas talvez alguém possa estar perdido neste ponto {o,.txt,.conf}. Certo, vejam em nossa busca, tínhamos uma única certeza inicial, todos os arquivos continham teste, então este é o nosso ponto de partida.
Analisando percebi que os arquivos de que necessitava continham números antes do teste e outros arquivos algumas extensões, assim ficaria mais simples, porém um de nossos arquivos continha uma letra antes e depois.
Então o *teste eliminou qualquer caractere antes deste, porém se tivéssemos usado *teste*{.txt,.conf}, não conseguiríamos suprir nossa busca, pois o * colocaria em nosso resultado qualquer caractere, então acabaríamos com um monte de arquivos.
O que fizemos para eliminar o problema, colocamos o {o,.txt,.conf} que só poderia me retornar qualquer arquivo que contivesse teste no meio e terminasse com uma letra o, como foi o nosso caso.
Claro este foi um exemplo simples, mas entender isso será fundamental, digo isso pois agora iniciaremos uma parte onde o cuidado e a certeza são as chaves para uma boa busca. xD
Espero que tenham entendido o que aqui quis passar, agora apresentarei a vocês a interação dos wildcards com outros comandos, vamos lá?

 

Utilizando os Wildcards - realizando movimentações

Anteriormente aprendemos a utilizar os wildcards, e mesmo em modo listagem, conseguimos entender como é sua sintaxe, ou seja, entendendo sua sintaxe, sabemos como utilizá-lo, independente do comando usado.
Esta decidi ser uma parte do artigo mais prática, ou seja, hands-on, colocaremos em prática tudo que foi visto, porém um pouco mais afundo. ;D
Como sempre trabalharemos dentro do diretório /tmp, porém realizaremos consulta fora do mesmo, ou seja, não saberemos o que realmente contém em outros diretórios a não ser o que nos interessa, então teremos que ser bem mais cautelosos na montagem de nossa expressão.
Antes de continuar, quero destacar aqui um pouco do que realizaremos, para um exemplo mais real, de cotidiano de um administrador, resolvi que realizaremos cópias de arquivos em diretórios como /etc, e como são cópias, não há risco de prejudicar o funcionamento do seu sistema.
Se você não se sentir a vontade, peço que não continue, mas se mesmo assim gostaria de ler, crie uma máquina virtual e ali realize seus testes.
Um exemplo agora, copiaremos todos os arquivos iniciados com a, b, c, e, f com extensão .conf de /etc para /tmp.
Antes sempre de montar sua expressão, raciocine em quais wildcards você deve usar, aqui temos uma sequência de letras, então poderíamos usar o [] e fazer algo como [a-f] não é?
Veja, a-b-c-d-e-f, não queremos d em nossa pesquisa, então não poderíamos usá-lo, pois acabaríamos tendo arquivos que não nos interessa. Fique sempre atento a isso, use o [] em uma sequência sem intervalos!
Nossa expressão ficaria mais ou menos assim:

# cp -v /etc/{a,b,c,e,f}*.conf /tmp
`/etc/adduser.conf' -> `/tmp/adduser.conf'
`/etc/brltty.conf' -> `/tmp/brltty.conf'
`/etc/casper.conf' -> `/tmp/casper.conf'
cp: cannot stat `/etc/e*.conf': No such file or directory
`/etc/fdmount.conf' -> `/tmp/fdmount.conf'
`/etc/fuse.conf' -> `/tmp/fuse.conf'

(perfeito, somente o que queria)
Ok, mas isso é pouco para nós, vamos a mais exemplos.
Agora copiaremos todos os arquivos que terminam com as letras r, s, t, u, z do diretório /etc e que tenham ainda extensão .conf para /tmp.
Vamos lá!

# cp -v /etc/*{r,s,t,u,z}.conf /tmp
`/etc/adduser.conf' -> `/tmp/adduser.conf'
`/etc/casper.conf' -> `/tmp/casper.conf'
`/etc/deluser.conf' -> `/tmp/deluser.conf'
`/etc/discover.conf' -> `/tmp/discover.conf'
`/etc/scrollkeeper.conf' -> `/tmp/scrollkeeper.conf'
`/etc/mke2fs.conf' -> `/tmp/mke2fs.conf'
`/etc/fdmount.conf' -> `/tmp/fdmount.conf'
`/etc/host.conf' -> `/tmp/host.conf'
`/etc/popularity-contest.conf' -> `/tmp/popularity-contest.conf'
cp: cannot stat `/etc/*u.conf': No such file or directory
cp: cannot stat `/etc/*z.conf': No such file or directory

Ainda percebemos que não tem arquivos terminados com u ou z.
Agora moveremos alguns arquivos. Antes criei um usuário com o nome da sua distribuição, mas crie um /home para ele também, no meu caso criei o usuário Debian.
Vamos então mover todos arquivos que acabamos de copiar de /etc para /tmp para o home do usuário criado (exceto os que terminem com a letra t) e que tenham extensão .conf.

# mv -v /tmp/*{r,s,u,z}.conf /home/debian
`/tmp/adduser.conf' -> `/home/debian/adduser.conf'
removed `/tmp/adduser.conf'
`/tmp/casper.conf' -> `/home/debian/casper.conf'
removed `/tmp/casper.conf'
`/tmp/deluser.conf' -> `/home/debian/deluser.conf'
removed `/tmp/deluser.conf'
`/tmp/discover.conf' -> `/home/debian/discover.conf'
removed `/tmp/discover.conf'
`/tmp/scrollkeeper.conf' -> `/home/debian/scrollkeeper.conf'
removed `/tmp/scrollkeeper.conf'
`/tmp/mke2fs.conf' -> `/home/debian/mke2fs.conf'
removed `/tmp/mke2fs.conf'
mv: cannot stat `/tmp/*u.conf': No such file or directory
mv: cannot stat `/tmp/*z.conf': No such file or directory

Simples não é?
Bom, acho que poderia deixar mais exemplos, mas creio eu que vocês devem ter captado a mensagem.
Espero também que tenha sido de ajuda a vocês. ;D

Considerações finais

O uso de wildcars pode nos auxiliar em inúmeras tarefas, porém para usar em desktops pode parecer um pouco sem sentido, mas para administradores de sistemas isso ajuda e muito, otimiza tarefas, buscas, verificações, enfim, você procura e realmente acha o que deseja. :)
É isso aí, espero que tenha sido útil a vocês e de fácil entendimento.

segunda-feira, 4 de janeiro de 2010

Comandos para Manipulação de Arquivos

Um tutorial sobre vários dos comandos necessários para lidar com arquivos e diretórios no Linux.
Uma das coisas essenciais ao usar um sistema operacional é saber como lidar os arquivos e diretórios dentro dele. Em sistemas operacionais como o Linux, mexer com arquivos é essencialmente tudo o que você vai fazer ao configurar o sistema e seus serviços.
pwd – Exibe o diretório atual
Sintaxe: $ pwd
Mostra de forma simples em qual diretório o usuário está localizado no momento.
cd – Navegando entre diretórios
Sintaxe: $ cd [nome_do_diretório]
Muda o diretório atual.
Exemplos:
$ pwd
/usr/games
$ cd ~
$ pwd
/home/eitch
No exemplo acima, estávamos no diretório /usr/games e com um simples cd para o diretório ~, fomos para o diretório HOME (/home/eitch). Neste caso utilizamos o ~ que é uma espécie de atalho para o diretório HOME do usuário. Alguns destes “atalhos”:
. (ponto)
Diretório atual
.. (dois pontos)
Diretório anterior (um nível acima)
~ (til)
Diretório HOME do usuário
/ (barra)
Raiz do sistema
- (hífen)
Último diretório (Voltar)
Se você deseja ir para um diretório que está na raiz diretamente, usa-se a / antes, exemplo:
$ pwd
/usr/local/bin
$ cd /etc/rc.d
$ pwd
/etc/rc.d
$ cd -
$ pwd
/usr/local/bin
Ao utilizar uma barra antes do diretório, especificamos o caminho absoluto do diretório, ou seja, todo o seu caminho desde a raiz. Se não colocamos a barra para especificar a raíz, quer dizer que estamos especificando um caminho relativo, ou seja, de acordo com o diretório atual. Em outras palavras, se eu estou no diretório /home/eitch, os dois comandos a seguir farão a mesma coisa, só que um usando o caminho relativo e o outro o caminho absoluto:
$ cd ..
$ cd /home
ls – Listar arquivos
Sintaxe: $ ls [opções] [arquivo/diretório]
Lista os arquivos e diretórios. Se executarmos apenas o comando ls sozinho, ele mostrará todos os arquivos existentes no diretório atual. Há também alguns parâmetros extras:
-l
Lista os arquivos em formato detalhado.
-a
Lista os arquivos ocultos (que começam com um .)
-h
Exibe o tamanho num formato legível (combine com -l)
-R
Lista também os subdiretórios encontrados
Exemplo de uma listagem detalhada:
$ ls -l
total 9916
drwxrwxr-x   5 hugo hugo    1302 Aug 16 10:15 diretorio
-rw-r--r--   1 hugo hugo  122631 Jul 12 08:20 Database.pdf
-rw-r--r--   1 hugo hugo 2172065 Jul 12 08:20 MySQL.pdf
-rw-r--r--   1 hugo hugo 2023315 Jul 12 08:20 PHP.pdf
No exemplo acima, os arquivos e diretórios são listados com outras informações antes de seus nomes. Estas informações são separadas por um ou mais espaços (para uma melhor formatação) e apresentam os seguintes dados: tipo de arquivo e permissões, número de hard links, usuário dono, grupo dono, tamanho, data de modificação e por último o nome do arquivo.
Podemos ver acima que a segunda linha (diretorio) inicia com a letra d, o que significa que ele é um diretório, ao contrário dos outros arquivos que não contém nenhuma letra (-) e por isso são arquivos comuns. É possível identificar o tipo de arquivo desta maneira e as letras podem ser: b para arquivo especial de bloco, c para arquivo especial de caracter, d para diretório, l para link simbólico, p para um FIFO, s para socket.
Podemos também usar no ls o que chamamos de wildcards (caracteres coringa), ou seja, caracteres que substituem outros.
Exemplo, listar todos os arquivos que têm a extensão .txt:
$ ls *.txt
debian-install.txt  manualito.txt  named.txt           plip.txt  seguranca.txt
ipfw.txt            mouse.txt      placa_de_video.txt  rede.txt  sis.txt
O wildcard neste caso é o “*”, que representa “tudo”.txt. Existem outros wildcards, como por exemplo o ponto de interrogação “?”, que substitui apenas 1 caractere. Exemplo:
$ ls manual?.txt
manual1.txt  manual2.txt  manual3.txt  manualx.txt  manualP.txt
Ou ainda os colchetes, que substituem uma faixa de caracteres:
$ ls manual[3-7].txt
manual3.txt  manual4.txt  manual6.txt  manual7.txt
mkdir – Cria um diretório
Sintaxe: $ mkdir <nome_do_diretório>
Cria um diretório. Exemplo, criar um diretório dentro do HOME do usuário:
$ mkdir ~/paginas
rmdir – Remove um diretório vazio
Sintaxe: $ rmdir <nome_do_diretorio>
Apaga um diretório que esteja vazio.
Exemplo, apagando o diretório /tmp/lixo apenas se ele estiver vazio:
$ rmdir /tmp/lixo
Para apagar um diretório com seu conteúdo, usa-se o comando rm.
cp – Cópia de arquivos e diretórios
Sintaxe: $ cp [opções] <arquivo_origem> <arquivo_destino>
Copia arquivos e diretórios. Como parâmetros, temos:
-i
Modo interativo. Pergunta se você quer sobrescrever ou não (confirmações)
-v
Mostra o que está sendo copiado.
-R
Copia recursivamente (diretórios e subdiretórios)
Exemplo, copiando o arquivo brasil.txt para livro.txt, com a opção de modo interativo:
$ cp -i brasil.txt livro.txt
cp: sobrescrever `livro.txt'?
Como o arquivo livro.txt já existia, o comando pergunta se quer sobrescrever, responda y (sim) ou n (não).
Copiar o diretório /home/ftp e todo seu conteúdo (incluindo seus subdiretórios) para /home/ftp2:
$ cp -R /home/ftp /home/ftp2
mv – Move arquivos e diretórios
Sintaxe: $mv <arquivo_origem> <arquivo_destino>
Move um arquivo para outro lugar. Ele também é usado para renomear um arquivo.
Exemplo, renomear o arquivo industria.txt para fabrica.txt:
$ mv industria.txt fabrica.txt
Mover o arquivo industria.txt para /home/usuario com o mesmo nome:
$ mv industria.txt /home/usuario
rm – Remove arquivos e diretórios
Sintaxe: $ rm [opções] <arquivo>
Este comando apaga definitivamente o arquivo ou diretório. Exemplo:
$ rm arquivo.bin
Para apagar um diretório com todo seu conteúdo, usa-se a opção -r:
$ rm -r /tmp/lixo
Cuidado! O comando “rm -rf” é muito perigoso, use-o com cuidado. Ele remove um diretório e todo seu conteúdo sem perguntar. Por exemplo, fazer isso na raiz não seria uma boa idéia.
find – Procura arquivos
Sintaxe: $ find <diretorio> [-name nomedoarquivo]
Procura por arquivos no diretório especificado. Em seu uso mais simples, ele procura pelos nomes dos arquivos, mas pode também procurar por tipos, permissões, última modificação, entre outros.
Exemplo, procurar o arquivo nota.txt dentro do diretório /home/eitch:
$ find /home/eitch -name nota.txt -print
Procurar por todos os diretórios dentro do /etc:
$ find /etc -type d -print
Procurar por todos os arquivos que foram modificados nos últimos 2 dias:
$ find / -mtime 2 -print
Procurar por arquivos que podem ser escritos por todo mundo:
$ find / -perm -222
Os wildcards também podem ser usados, por exemplo, procurar por todos os arquivos que começam com o nome de documento e terminam com .odp:
$ find /home/eitch -name documento*.odp
O find também conta com uma opção muito útil, a opção -exec. Através desta opção você pode executar comandos para cada um dos arquivos encontrados. Combinando com as outras opções, se torna um poderoso utilitário! Por exemplo, para definir permissões “755″ para todos os diretórios:
$ find /home/eitch -type d -exec chmod 755 {} \;
Neste exemplo, para cada diretório encontrado (-type d) dentro do /home/eitch, foi executado o comando chmod 755 <arquivo encontrado>. O “{}” no comando é substituído por cada arquivo ou diretório encontrado. O \; é apenas o “terminador” para o comando do -exec. O mesmo exemplo, agora para definir permissões “644″ para arquivos:
$ find /home/eitch -type f -exec chmod 644 {} \;
Ou então, eu quero remover todos os arquivos que terminam com a extensão .exe:
$ find /home/eitch -type f -name *.exe -exec rm -f {} \;
Ou até remover os diretórios que tem .svn como nome:
$ find /home/eitch/projeto -type d -name .svn -exec rm -rf {} \;
ln – Cria links entre arquivos
Sintaxe: $ ln -s <arquivo_origem> [link simbólico]
Usado para gerar links simbólicos, ou seja, links que se comportam como um arquivo ou diretório, mas são apenas redirecionadores que mandam seu comando para outro arquivo ou diretório.
Exemplo: Criar um link em /tmp/apostila-linux, apontando para o diretório /apostila:
$ ln -s /apostila /tmp/apostila-linux
Também é utilizado para criar links físicos (hard-links). Um link físico funciona não como um atalho, mas como um arquivo apontando para um mesmo lugar no disco e funciona apenas em arquivos. Por depender de uma posição física no disco, só pode ser utilizado em uma mesma partição. Exemplo:
$ ln arquivo linkdoarquivo
cat – Exibe o conteúdo de um arquivo
Sintaxe: $ cat <arquivo>
Mostra o conteúdo de um arquivo, ou faz uma cópia deste arquivo, ou uma junção.
Exemplo: Mostrar o conteúdo de /home/eitch/contato:
$ cat /home/eitch/contato

Hugo Cisneiros
hugo@devin.com.br

http://www.devin.com.br
O cat também pode servir como redirecionador para outro arquivo. Os caracteres especiais de redirecionadores são utilizados para este fim.
O “>” redireciona a saída de um comando para um arquivo. Como o comando cat mostra exatamente o conteúdo de um arquivo, isso seria equivalente a fazer uma cópia do arquivo:
$ cat contato1 > contato2
O “>>” acrescenta a saída de um comando à um arquivo, mantendo seu conteúdo anterior:
$ cat contato1 >> contato3
Um outro exemplo divertido é tocar sons com o cat. Redirecionando o conteúdo de um arquivo para o dispositivo de som reproduz o som pelos alto-falantes e vice-versa. Para testar este caso, primeiro gravamos com um microfone o som:
$ cat gravacao.au < /dev/audio
O comando acima direcionou o dispositivo de som “no caso, a captura por microfone” para o arquivo gravacao.au. Agora escute o som gravado com o comando:
$ cat gravacao.au > /dev/audio
Os redirecionadores podem ser utilizados em todos os outros comandos na shell.
head, tail – Mostra o começo e fim do arquivo
Sintaxe: $ head [opções] <arquivo>
Sintaxe: $ tail [opções] <arquivo>
Talvez pelo arquivo poder ser muito grande, as vezes é necessário apenas visualizar parte dele. Em arquivos de log por exemplo, visualizar o final para ver os últimos acontecimentos é uma prática comum.
O comando head, como o nome diz (cabeçalho), mostra o começo de um arquivo. O comando tail (calda) mostra o final de um arquivo. Por padrão, ambos comandos mostram as 10 linhas correspondentes.
Por exemplo, exibindo as 10 últimas linhas do arquivo /var/log/messages:
# tail /var/log/messages
Ou as 10 primeiras linhas do /etc/profile:
$ head /etc/profile
Quando utilizado o parâmetro -n, podemos especificar a quantidade de linhas, ao invés de 10. O comando a seguir mostrará as 50 últimas linhas do arquivo /var/log/messages:
# tail -n 50 /var/log/messages
Quanto utilizado com o parâmetro -f, o comando tail mostra as linhas mas não para, continua mostrando as linhas na medida que o arquivo é atualizado. Útil para visualizar logs em constante atualização. Exemplo:
# tail -f /var/log/httpd/access_log
more, less – Visualiza arquivos por páginas
Sintaxe: $ more <arquivo>
Sintaxe: $ less <arquivo>
Parecidos com o cat, mas ao invés de jogarem todo o conteúdo na tela de uma vez só, criam uma espécie de paginação.
No comando more, a tecla ESPAÇO vai passando as páginas, até quando o fim do arquivo chega e o o comando finaliza.
No less, a paginação funciona como em uma página de manual (na verdade, a visualização das páginas de manual é feita com o less): é possível utilizar as setas para navegar no documento para cima e para baixo, utilizar as teclas PgUp e PgDown para paginar, o comando /pesquisa para pesquisar por uma palavra no documento e a tecla q para sair.
file – Indica o tipo de arquivo
Sintaxe: $ file <arquivo>
Identifica o tipo de arquivo ou diretório indicado pelo usuário conforme os padrões do sistema operacional.
Há varios tipos de retorno, exemplos: ASCII text, C Program source, directory, ELF-Executable, data, Bourn-again shell-script, JPEG Image File, entre outros.
Exemplo:
$ file linux.txt
ASCII Text
touch – Muda timestamps
Sintaxe: $ touch [opções] <arquivo>
Quando um arquivo é criado, o sistema de arquivos reserva para ele algumas informações que chamamos de timestamps: hora do último acesso e hora da última modificação. O comando touch muda estes valores.
Sem argumentos, o touch muda os dois atributos para a hora atual. Quando não existe o arquivo, o comando cria um novo arquivo vazio. Este parece ser o método preferido de criação de arquivos vazios.