Autor: Alexandre Dehon de Almeida Lima | Publicado: 2010-06-24T11:15:00-03:00

Voltando...Estive fora por alguns meses.Retomei meus estudos, desta vez, na graduação em análise de sistemas.Estou fazendo, também, um curso de Linux System Administrator, preparatório pra Certificação Linux LPI 101.Encontrei, nesse curso, uma possibilidade de desenvolvimento e, no que abrange os sistemas operacionais, soluções mais baratas em TI.Irei postar sempre o que foi abordado nas aulas e o que há de novidade em sistemas Open Source.As aulas.Comandos LinuxTodo o caminho do sistema começa no / (diretório principal do sistema)Comandos de manipulação de diretórioComando lsComandos para manipulação de arquivos e diretórios.1. Comando ls (lista informações sobre os arquivos e conteúdo dos diretórios)Exibe apenas os diretórios (ambos os comandos abaixo):$ ls -l | grep ^d$ls -d */Exibe os arquivos ocultos, iniciados com ".":$ ls -a ou ls --allExibe os arquivos no formato longo$ ls -l / ou ls --format=long /O formato longo exibe o diretório dividido em 7 (sete) colunas.1a. colunaExibe o tipo de arquivo e as permissões.d = dirtetorio- = arquivob = blococ = caractere - mouse, fita, modem(comunicação serial)p = pipe (comunicação enter processos)s = socket ( comunicação entre processos que rodam em maquinas diferentes )l = link sibólico ( que aponta outro arquivo )2a. colunaExibe um númeroSe for um arquivo (quantos nomes ele tem )Se for um diretório ( quantos diretórios ele tem )3a. colunaQuem é o proprietário ( Exemplo: dehon )4a. colunaQuem é o grupo ( Exemplo: dehon )Exemplo:dehon@dehon-desktop:~$ ls --format=longtotal 284drwx------ 2 dehon dehon 4096 2010-05-16 16:36 amsn_receiveddrwxr-xr-x 2 dehon dehon 4096 2010-05-16 12:57 Área de Trabalhodrwxr-xr-x 2 dehon dehon 4096 2010-05-16 12:57 Documentosdrwxr-xr-x 6 dehon dehon 4096 2010-06-20 23:25 DownloadExibe os arquivos ocultos, exceto o "." e "..":$ ls -AExibe as informações referentes aos arquivos e diretórios em colunas:$ ls -lPara exibir os arquivos com seus tamanhos em KB, MB e GB, basta adicionar o h:$ ls -lhExibe os arquivos na ordem inversa (alfabeticamente):$ ls -rExibe o diretório e seus respectivos subdiretórios (adicionando o "| more", ajuda na melhor visualização):$ ls -R | moreExibe o número do *inode (identificador único que cada um arquivo recebe) de cada arquivo/diretório:*inodeinode por exemplo, dono, grupo, tipo e permissões de acesso.O inode é exclusivo somente para o dispositivo (partição) dentro do qual ele está contido. Portanto, para identificar unicamente um arquivo, o kernel deve ter o número de dispositivo e o inode do arquivo.Um arquivo possui um único inode, não importa por quantos nomes este arquivo é identificado no sistema. Logo, é o conjunto de inodes que indica o número de arquivos/diretórios que o sistema possui.$ ls -iExibe o UID (Identificador do usuário) e GID (Identificador do grupo) do arquivo:$ ls -nlExibe além de outras informações, o dono do arquivo/diretório:$ ls -oExibe "/" no final de cada diretório, "*" para executáveis e "@" para os links:$ ls -FExibe uma lista de arquivos/diretórios ordenados pela data de criação:$ ls -FltrExibe todos os arquivos com a extensão "txt":$ ls -l *.txtExibe todos os arquivos com a extensão "txt" que contenham a palavra "ubuntu":$ ls -l *.txt | grep ubuntuExibe o número de quantos arquivos existem num diretório:$ ls -A | wc -lExibe o número de quantos diretórios existem num diretório:$ ls -A -p | grep "/" | wc -lEssas foram algumas formas de se utilizar o comando ls. É sempre bom dar uma pesquisada no seu manual e/ou help através dos comandos:$ man lsou$ ls -helpComando cdO comando cd é usado para navegar por diretórios. É sem dúvida um dos comandos mais usados no Linux, este comando usado sem nenhuma diretiva volta diretamente para o diretorio raiz do usuário.Exemplos:1a. Formafernandopaiva@Tux:$ cd /homeNeste exemplo estou acessando o diretório /homefernandopaiva@Tux:$ cd /usr/localNeste exemplo estou acessando o diretório /usr/localfernandopaiva@Tux:/usr/local$ cd ..Neste exemplo estou deixando o diretório filho de nome local e voltando ao diretório pai de nome usr. O resultado é: fernandopaiva@Tux:/usr$Leia o man do comando para se divertir e aprender mais.2a. Formacd ..cd doc3a Formacd ../doccd - (volta sempre pro próximo diretorio anterior)cd ~ (volta ao diretório pessoal)Comando pwdpwd exibe o local do diretório atualComando touchO comando touch é usado atualizar as informações sobre as datas de último acesso e última modificação de um arquivo.Sintaxe:$ touch [opções] [arquivo]Se o arquivo não existir, ele é criado, por padrão. Isso faz o touch ser muito utilizado para criar arquivos vazios, através do comando touch [arquivo].Opções:-a: Modifica apenas a data do último acesso;-c: Não cria arquivos, caso eles não existam;-m: Modifica apenas a data de modificação;-t: A data e hora a ser utilizada para o último acesso ou última modificação. O formato utilizado é MMDDhhmm (mês, dia, hora e minuto);Comando mkdirO comando mkdir, abreviatura de make directory (criar diretório), é usado para criar um novo diretório.Sintaxe:$ mkdir [opções] [novo diretório]Opções:-m: Especifica as permissões que do novo diretório terá;-p: Cria todos os diretórios e subdiretórios necessários;-v: Exibe uma mensagem para cada diretório criado.Em [novo diretório] devemos colocar os diretórios que queremos criar. Não é necessário digitar o caminho completo, caso queiramos criar um diretório dentro do diretório atual. Podemos criar vários diretórios com um único comando, bastando separá-los com espaços. Se quiser que o nome do novo diretório tenha espaços em branco, escreva-o entre aspas duplas, dessa forma:$ mkdir /home/davidson/"diretório com espaços em branco"Se quisermos ter um diretório com vários subdiretórios e em cada subdiretórios outro subdiretorios, temos:Exemplo:mkdir -p relatorios/mes-{01,02,03,04,05,06,07,08,09,10,11,12}/semana-{01,02,03,04,05}Comando rmdirEsse comando é utilizado para apagar um diretório vazio.Sintaxe:$ rmdir [opções] [diretório]Opções:-p: Remove os diretórios-pai do diretório selecionado, se possível. Assim, o comando rmdir -p a/b/c/ vai apagar o diretório a/b/c/, depois o diretório a/b/ e por fim o diretório a/, se possível;-v: Mostra os detalhes da remoção dos diretórios.Podem ser especificados mais de um diretório por vez. O rmdir só remove diretório vazios.Comando cpO cp, abreviação de copy (copiar), é utilizado para copiar arquivos e diretórios de um local para outro, com o mesmo nome ou com nome diferente.Sintaxe:$ cp [opções] [origem] [destino]-b: Cria um arquivo dos arquivos de destino se eles estiverem para ser sobrescritos;-P: Quando tratar de links simbólicos, copia o link, e não o local para onde o link aponta;-f: Operação forçada. Se um dos arquivos de destino não puder ser aberto, apaga-o e repete a operação;-i: Pede confirmação antes de sobrescrever um arquivo;-L: Quando tratar de links simbólicos, copia o local para o onde o link aponta, e não o link;-p: Preserva as propriedades do arquivo (permissões, dono e datas);--preserve=[propriedade]: Escolhe quais propriedades preservar, separadas por vírgula. Podem ser:mode: Preserva as permissões;ownership: Preserva a informação de dono do arquivo;timestamp: Preserva as datas de acesso e modificação.--no-preserve=[propriedade]: Escolhe quais propriedades não devem ser preservadas. As opções são as mesmas que do parâmetro --preserve;-R ou -r: Modo recursivo, copia todos os arquivos e subdiretórios do diretório especificado. Esse parâmetro deve ser usado para copiar diretórios inteiros;--target-directory=[diretório]: Especifica para qual diretório devem ser copiados os arquivos/diretórios especificados;-u: Copia apenas os arquivos novos. Se um arquivo que estiver sendo copiado já existir no diretório de destino, sua cópia será ignorada;-v: Mostra os detalhes da cópia dos arquivos.Exemplos de uso:Para copiar o arquivo file.gz para o diretório /tmp/:$ cp file.gz /tmpPara para fazer uma cópia do arquivo file.gz com o nome file-copia.gz:$ cp file.gz file-copia.gzPara copiar os arquivos file1, file2 e file3 para o diretório /home/davidson/doc/:$ cp file1 file2 file3 /home/davidson/docPara copiar o diretório img/ para o diretório /tmp/upload/:$ cp -r img /tmp/uploadPara copiar os arquivos file1, file2 e file3 e o diretório img/ para o diretório /tmp/upload/:$ cp -r file1 file2 fil3 img /tmp/uploadComando mvUtilizamos o mv mover ou renomear arquivos.Sintaxe:$ mv [opções] [destino]Opções:-b: Cria um backup dos arquivos de destino, se eles forem sobrescritos;-f: Força as operações, sem fazer perguntas caso seja necessário sobrescrever arquivos e outros;-i: Modo interativo, pede confirmação para sobrescrever arquivos;--target-directory=[diretório]: especifica o diretório de destino para os arquivos;-u: Só move os arquivos novos. Se o arquivo que está sendo movido já estiver presente no diretório de destino, ele é ignorado;-v: Mostra os detalhes do processo de movimentação.Exemplos de uso:Para mover o arquivo file1 para o diretório /home/davidson/doc/:$ mv file1 /home/davidson/docPara mover o diretório /home/davidson/doc/ para /tmp/upload/:$ mv /home/davidson/doc /tmp/uploadPara renomear o arquivo package.tar.gz para pacote.tar.gz:$ mv package.tar.gz pacote.tar.gzPara mover o arquivo file1 e o diretório img/ para o diretório /tmp/upload/:$ mv file1 img /tmp/uploadCoamando rmO rm é utilizado para excluir arquivos.Sintaxe:$ rm [opções] [arquivo]Opções:-f: Modo forçado, não pede confirmação para realizar as operações;-i: Pede confirmação antes de remover qualquer arquivo;-R, -r: Exclui recursivamente todo o conteúdo do diretório e o próprio diretório. Quando quiser excluir um diretório que não está vazio, utilize esse parâmetro;-v: Mostra os detalhes das exclusões.Comando duEsse comando, sigla de disk usage (uso de disco), é usado para estimar o espaço em disco usado pelos arquivos. Em outras palavras, usamos o du para saber o tamanho dos arquivos.Sintaxe:$ du [opções] [arquivo] Opções:-a: Exibe o tamanho de todos os arquivos dentro dos subdiretórios do diretório especificado, e não somente dos arquivos imediatamente dentro do diretório;--aparent-size: Exibe o tamanho aparente, que pode ser maior ou menor que o tamanho real, dependendo de fatores com fragmentação, blocos indiretos e similares;-B [tamanho]: Exibe o tamanho dos arquivos em blocos do tamanho especificado;-b: Igual a -B 1;-c: Exibe uma linha com o tamanho total de todos os arquivos contabilizados;-D: Quando usado para links simbólicos, considera o local para onde o link aponta e não o link em si. Só considera arquivos;-h: Mostra os tamanhos de forma comprensível (2K, 32M, 1G);-H: O mesmo que -h, mas usa blocos de 1000 ao invés de 1024;-k: O mesmo que -B 1K;-L: O mesmo que -D, mas considera qualquer tipo de arquivo;-S: Não mostra o tamanho dos subdiretórios;-s: Mostra apenas o tamanho total de cada item (arquivo ou diretório);-x: Ignora arquivos que estejam em outro sistema de arquivos;-X [padrão]: Não contabiliza os arquivos que correspondam ao padrão informado;-m: O mesmo que -B 1M.Suponha que você esteja no diretório /home/davidson/, que contenha os seguintes arquivos e diretórios:$ lsarquivo de teste Desktop exe iso src tmpdeb doc img playlist.m3u testeSe quisermos ver o tamanho do arquivo playlist.m3u:$ du playlist.m3u8 playlist.m3uO tamanho é exibido em KB. No caso, o arquivo tem 8 KB.Se quisermos ver o tamanho do diretório img/:$ du img0 img/davidson0 img/wallpapers592 img/diagramacao484 img/partition_magic461 img/qtparted1132 img/programacao_visual4018 imgVeja que o tamanho em KB não é muito confortável. Usamos o parâmetro -h para que os valores sejam exibidos de uma forma compreensível:$ du -h img0 img/davidson0 img/wallpapers592K img/diagramacao484K img/partition_magic461K img/qtparted1,2M img/programacao_visual4,0M imgPodemos também querer que sejam contabilizados os arquivos dos subdiretórios img/davidson/ e img/wallpapers/. Nesse caso, usamo o parâmetros -a:$ du -h -a img673K img/bozo.bmp44K img/bozo.zip0 img/davidson0 img/wallpapers16K img/davidson_80x60.png52K img/davidson_cabeludo.jpg172K img/diagramacao/linux_magazine_distribuicoes.pdf136K img/diagramacao/linux_magazine_segurando_desktop.pdf284K img/diagramacao/linux_magazine_jogos.pdf592K img/diagramacao28K img/partition_magic/Thumbs.db84K img/partition_magic/pqmagic001.jpg92K img/partition_magic/pqmagic002.jpg28K img/partition_magic/pqmagic003.jpg96K img/partition_magic/pqmagic004.jpg28K img/partition_magic/pqmagic005.jpg100K img/partition_magic/pqmagic006.jpg28K img/partition_magic/pqmagic007.jpg484K img/partition_magic565K img/kacique01 .jpg16K img/qtparted/snapshot01.png20K img/qtparted/snapshot04.png16K img/qtparted/snapshot10.png12K img/qtparted/snapshot11.png12K img/qtparted/snapshot12.png12K img/qtparted/snapshot13.png32K img/qtparted/qtparted001.jpg40K img/qtparted/qtparted002.jpg32K img/qtparted/qtparted003.jpg24K img/qtparted/qtparted004.jpg28K img/qtparted/qtparted005.jpg48K img/qtparted/snapshot1.png16K img/qtparted/snapshot2.png16K img/qtparted/snapshot3.png52K img/qtparted/snapshot4.png16K img/qtparted/snapshot5.png16K img/qtparted/snapshot6.png20K img/qtparted/snapshot7.png16K img/qtparted/snapshot8.png16K img/qtparted/snapshot9.png461K img/qtparted280K img/programacao_visual/ferrari001.png284K img/programacao_visual/ferrari002.png272K img/programacao_visual/ferrari003.png28K img/programacao_visual/Thumbs.db268K img/programacao_visual/tux.png1,2M img/programacao_visual4,0M imgEssa lista ficou bem extensa. Se quisermos exibir somente o tamanho total de cada diretório, retiramos o parâmetro -a, acrescentamos o parâmetro -s, e nos referenciamos a img/* ao invés de img:$ du -h -s img/*673K img/bozo.bmp44K img/bozo.zip0 img/davidson16K img/davidson_80x60.png52K img/davidson_cabeludo.jpg592K img/diagramacao565K img/kacique01 .jpg484K img/partition_magic1,2M img/programacao_visual461K img/qtparted0 img/wallpapersDessa última forma, porém, o tamanho total do diretório não foi informado. Para isso, basta acrescentar o parâmetro -c:$ du -h -s -c img/*673K img/bozo.bmp44K img/bozo.zip0 img/davidson16K img/davidson_80x60.png52K img/davidson_cabeludo.jpg592K img/diagramacao565K img/kacique01 .jpg484K img/partition_magic1,2M img/programacao_visual461K img/qtparted0 img/wallpapers4,0M totalComando dfDisk freeEssa dica vai para o pessoal que está iniciando no Linux.O comando df mostra o espaço livre/ocupado de cada partição. Pode ser utilizado junto com várias opções, se for utilizado sozinho, mostrará o espaço usado e disponível de todos os sistemas de arquivos atualmente montados.A sintaxe é: df [opções]Exemplo:# df –aOpções:-a - inclui sistema de arquivos com 0 blocos-h - mostra o espaço livre/ocupado em MB, KB, GB em vez de bloco.-k - lista em Kbytes-l - somente lista sistema de arquivos locais-m - lista em Mbytes-T - lista o tipo de sistema de arquivos de cada partição.Comando freeO comando free veio pra ajudar quem está querendo saber a utilização de memória (RAM + SWAP) do seu Linux. É extremamente simples!$ free -m -t ou free -mtOnde o -m mostra quantidade de memória em MB pra ficar mais teta ainda e o -t faz um super cálculo de RAM + SWAP...dehon@dehon-desktop:~/Download$ free -mttotal used free shared buffers cachedMem: 937 892 45 0 86 375-/+ buffers/cache: 429 508Swap: 2079 1 2078Total: 3017 893 2124dehon@dehon-desktop:~/Download$Comando calO comando cal é utilizado para mostrar um calendário de um mês e/ou ano em específico.Onde mês é o numero do mês (01 a 12) e ano, é o ano no formato aaaa (4 algarismos).Exemplos:$ caldehon@dehon-desktop:~/Download$ calJunho 2010Do Se Te Qu Qu Se Sá1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30dehon@dehon-desktop:~/Download$$ cal 2010dehon@dehon-desktop:~/Download$ cal 20102010Janeiro Fevereiro MarçoDo Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá1 2 1 2 3 4 5 6 1 2 3 4 5 63 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 1310 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 2017 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 2724 25 26 27 28 29 30 28 28 29 30 3131Abril Maio JunhoDo Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá1 2 3 1 1 2 3 4 54 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 1211 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 1918 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 2625 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 3030 31Julho Agosto SetembroDo Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá1 2 3 1 2 3 4 5 6 7 1 2 3 44 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 1111 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 1818 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 2525 26 27 28 29 30 31 29 30 31 26 27 28 29 30Outubro Novembro DezembroDo Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá1 2 1 2 3 4 5 6 1 2 3 43 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 1110 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 1817 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 2524 25 26 27 28 29 30 28 29 30 26 27 28 29 30 3131dehon@dehon-desktop:~/Download$$ cal 01 2010dehon@dehon-desktop:~/Download$ cal 01 2010Janeiro 2010Do Se Te Qu Qu Se Sá1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 3031dehon@dehon-desktop:~/Download$$ cal 09 1752dehon@dehon-desktop:~/Download$ cal 09 1752Setembro 1752Do Se Te Qu Qu Se Sá1 2 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 30dehon@dehon-desktop:~/Download$Este último exemplo não esta errado. Assume-se que a Reforma Gregoriana ocorreu em 3 de Setembro de 1752. Nesta época, a maioria dos países reconheceu a reforma, assim os dez dias que a seguiram foram eliminados, por isso o formato do calendário para este mês é um tanto inusitado (mas não pense que outros calendários irão ter essa precisão, por exemplo: veja como é exibido o mês de Setembro de 1752 no calendário do Windows...).Comando datecomando date para:Exibir a data/hora do Sistema;Alterar a data/hora do Sistema;Exibir a data/hora Formatada;Efetuar cálculos com Data e Hora.Alterando a Data e Hora do Sistema:Toda vez que o sistema operacional Linux é inicializado, este busca no relógio da BIOS (também chamado de relógio de hardware) as configurações necessárias para configurar a data/hora do sistema. Ou seja, no Linux podemos ter a data/hora do sistema diferente da data/hora que temos no hardware, e essa informação é muito importante no momento de efetuar ajustes.Pode-se ajustar sua data e hora conforme necessário, porém a mesma não será mantida até o próximo boot, quando o sistema fará uma nova requisição ao relógio do hardware para ajustar-se.Se for executado apenas o comando date no shell do Linux será obtido um resultado com a seguinte formatação:dehon@dehon-desktop:~/Download$ dateTer Jun 22 15:18:53 BRT 2010dehon@dehon-desktop:~/Download$Para ajustar a data do sistema para o dia 11 de setembro de 2010 (meu aniversário ) poderia ser utilizado o seguinte comando:Sintaxe: date mês/dia/ano# date -s 09/11/2010Após ajustar a data do sistema é importante sincronizá-la com a data do hardware, para isso use o seguinte comando na seqüência:# hwclock -wDica: Para ajustar a data/hora do sistema e sincronizar com o hardware em um único comando é muito simples, basta seguir a seguinte sintaxe:mm (mês 00-12)dd (dia 00-31)HH (hora 00-23)MM (min 00-59)YYYY (0000-9999)date mmddHHMMYYYYExemplo 1: Ajustar a data para o dia 11 de setembro de 2010 e a hora para 18:00, por fim sincronizar com o relógio do hardware:# date 091118002010 | hwclock -wExemplo 2: Ajustar a data para o dia 10 de agosto de 1987 e a hora para 07:50, por fim sincronizar com o relógio do hardware:# date 081007501987 | hwclock -wParâmetros que podem ser utilizados para formatação de datas:%A : dia da semana (domingo,..., sábado).%B : nome do mês (janeiro,..., dezembro).%H : hora do dia (0 a 23).%M : minuto (0 a 59).%S : segundos (0 a 61).%T : hora no formato hh:mm:ss.%Y : ano.%a : dia da semana abreviado (dom,..., sab).%b : nome do mês abreviado (jan,..., dez).%c : dia da semana, data e hora.%d : dia do mês (00-31).%j : dia ano (1 a 366).%m : mês (1 a 12).%s : número de segundos desde das zero horas de 01/01/1970.%w : dia da semana, onde 0 = domingo, 1 = segunda,..., 6 = sábado.%x : representação da data local.%y : os dois últimos dígitos do ano.%r : formato de 12 horas completo (hh:mm:ss AM/PM)Exemplos de formatações de data/hora com o comando date no shell:Comando: # dateSaída: Ter Jun 22 15:18:53 BRT 2010Comando: # date +%d/%m/%ySaída: 22/06/10Comando: # date +%d/%m/%YSaída: 22/06/2010Comando: # date +%H:%M:%SSaída: 22:45:24Comando: # date "+%d %B %Y"Saída: 19 junho 2008Comando: # date "+%d %B %Y , %A"Saída: 19 junho 2008 , quintaExemplos de cálculos com Data/Hora no Linux.Qual a data de cinco dias atrás?Comando: # date +%d%m%y -d "5 days ago"Saída: 140608Que dia e hora serão, se adicionarmos 45 horas na hora atual?Comando: # date --date "45 hours"Saída: Sáb Jun 21 20:02:38 BRT 2008Que dia será daqui duas semanas?Comando: # date -d "2 week"Saída: Qui Jul 3 23:22:25 BRT 2008Que dia será daqui a 5 meses e 2 dia?Comando: # date -d "5 month 2 day"Saída: Sáb Nov 22 00:37:53 BRST 2008Outro exemplos:# dateQui Jun 19 23:56:28 BRT 2008# date --date=nowQui Jun 19 23:56:28 BRT 2008# date --date=today # Mesma CoisaQui Jun 19 23:56:28 BRT 2008# date --date='3 seconds'Qui Jun 19 23:56:31 BRT 2008# date --date='3 seconds ago'Qui Jun 19 23:56:25 BRT 2008# date --date='4 hours'Sex Jun 20 03:56:28 BRT 2008# date --date='tomorrow'Sex Jun 20 23:56:28 BRT 2008# date --date='1 day'Sex Jun 20 23:56:28 BRT 2008# date --date='1 days'Sex Jun 20 23:56:28 BRT 2008# date --date='yesterday'Qua Jun 18 23:56:28 BRT 2008# date --date='1 day ago'Qua Jun 18 23:56:28 BRT 2008# date --date='1 days ago'Qua Jun 18 23:56:28 BRT 2008# date --date='1 week'Qui Jun 26 23:56:28 BRT 2008# date --date='1 fortnight'Qui Jul 3 23:56:28 BRT 2008# date --date='1 month'Sáb Jul 19 23:56:28 BRT 2008# date --date='1 year'Sex Jun 19 23:56:28 BRT 2009Teclas de controle e atalhosTeclas AçãoCtrl + f Move o cursor uma palavra para frenteCtrl + b Move o cursor uma palavra para trásCtrl + a Para ir ao início da linha de comandoCtrl + e Para ir ao final da linha de comandoCtrl + t Inverte o caractere sob o cursor com o anteriorCtrl + u Limpa a linha de comando correnteCtrl + y Re-insere o último trecho de comando apagadoCtrl + r Faz uma busca incremental no histórico de comandos utilizadosCtrl + c Termina a execução do comando correnteCtrl + d Encerra entrada de dados pelo teclado fazendo logoutCtrl + m Equivalente a tecla EnterCtrl + l Limpa a tela, equivalente ao comando clearCtrl + s Inibe a exibição de informações na tela de saídaCtrl + q Ativa a exibição de informações na tela de saída, inibida pelo Ctrl + sCtrl + z Põe o processo corrente em background (segundo plano)Editor vi ou vimIntrodução"vi" é a sigla para "Visual Interface". A origem desse nome se deve ao seguinte fato: quando o vi foi criado (começo da década de 80), não era comum existirem editores de textos como nos dias de hoje. Naquela época, você digitava um texto mas não podia vê-lo! Isso mesmo! Em 1992, foi criado o vim (Vi IMitator), um clone fiel ao vi, porém com muitas outras funcionaliades, que só foram sendo adicionadas. Algum tempo depois, o vim passou a ser chamado de `Vi IMproved' (vi melhorado).O vim é um dos editores de textos mais utilizados no mundo Unix. Em alguns sistemas, existe um link simbólico (/bin/vi) apontando para o /usr/vim. Em outros, o /bin/vi é o executável, só que executa diretamente o vim. Muita gente acha que usa vi, mas na verdade utiliza o vim, e eles têm algumas diferenças. O que você verá abaixo fala sobre o vim.O vim é um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo, possui sistema de autocorreção, auto-identação, seleção visual, macros, seleção vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais. Ele não é exclusivo do Unix, ou seja, pode ser executado em outras plataformas, como Amiga, MacOS, Sun, Windows entre outras.Modo de inserção e de comandosPara identificar o modo (estado) do vim, basta visualizar o rodapé da tela.Agora, vamos à prática. Para executar o vim, utilize:$ vi => Abre o vim vazio, sem nenhum arquivo e exibe a tela de apresentação.$ vi arquivo => Abre o arquivo de nome "arquivo".$ vi arquivo + => Abre o arquivo de nome "arquivo", com o cursor no final do mesmo.$ vi arquivo +10 => Abre o arquivo de nome "arquivo", com o cursor na linha 10.$ vi arquivo +/Copag => Abre o arquivo de nome "arquivo", na primeira ocorrência da palavra "Copag".Ao executar o vim, ele inicia diretamente em modo de comando. Para comprovar, é só olhar na última linha (rodapé) e não vai haver nada lá. Isso quer dizer que você não conseguirá escrever nada, pode digitar a vontade que só vai ouvir beeps. Para começar a escrever, pressione "i" em seu teclado. O vim entra em modo de inserção, que você comprova (como falado anteriormente) pelo rodapé da tela, onde fica a seguinte marcação:- - -- INSERT --Suponha que você já digitou o bastante, e quer salvar, por segurança. Pressione a tecla ESC para voltar em modo de comandos. E veja os comandos para salvar/sair::w => Salva o arquivo que está sendo editado no momento.:q => Sai.:wq => Salva e sai.:x => Idem.ZZ => Idem.:w! => Salva forçado.:q! => Sai forçado.:wq! => Salva e sai forçado.Então, você editou uma boa quantidade de textos e quer salvar::wAgora, quer voltar a editar o texto:iLembre que utilizando o "i" para inserção, a mesma se inicia inserindo texto antes do cursor. Veja agora outros subcomandos de inserção de texto:A => Insere o texto no fim da linha onde se encontra o cursoro => Adiciona uma linha vazia abaixo da linha correnteO => Adiciona uma linha vazia acima da linha correnteCtrl + h => Apaga último caracter à esquerdaVoltando ao modo de comando:Veja agora subcomandos para movimentação pelo texto:Ctrl + f => Passa para a tela seguinte.Ctrl + b => Passa para a tela anterior.H => Move o cursor para a primeira linha da tela.M => Move o cursor para o meio da tela.L => Move o cursor para a última linha da tela.h => Move o cursor para caracter a esquerda.j => Move o cursor para linha abaixo.k => Move o cursor para linha acima.l => Move o cursor para caracter a direita.w => Move o cursor para o início da próxima palavra (não ignorando a pontuação).W => Move o cursor para o início da próxima palavra (ignorando a pontuação).b => Move o cursor para o início da palavra anterior (não ignorando a pontuação).B => Move o cursor para o início da palavra anterior (ignorando a pontuação).0 (zero) => Move o cursor para o início da linha corrente.^ => Move o cursor para o primeiro caracter não branco da linha.$ => Move o cursor para o fim da linha corrente.nG => Move o cursor para a linha de número "n"(susbstitua n pelo número da linha)..G => Move o cursor para a última linha do arquivo.Copiando e colando textos no vim (utilizando o mouse)Selecione o texto necessário com o botão esquerdo do mouse. Quando você for colar, saiba que o texto será colado a partir de onde se encontra o cursor (esse que aparece, às vezes piscando e às vezes não, quando você está digitando). Para colar, depois de ter selecionado o texto, você pode utilizar uma dessas opções:1) Pressionando o botão direito do mouse;2) Pressionando o botão direito + botão esquerdo juntos;3) Pressionando o botão do meio do mouse (mouse de 3 botões);Observação: Lembre-se que o vim deve estar no modo de inserção.Usando o modo visual do vimEntre no modo visual: vAgora, utilize as teclas direcionais (setas) do teclado, para selecionar o texto desejado.Pressione e cole, utilizando a tecla "p" (paste).Veja agora como apagar um determinado texto:Utilizando normalmente as teclas Backspace/Delete, ou entrando em modo visual (v) e pressionando a tecla Delete.Você pode remover até o final de uma palavra, utilizando: dwPode também remover até o final de uma frase: d$Desfazendo uma açãoÉ claro que você pode desfazer uma ação que você considera errado, ou que errou ao digitar o texto. É só utilizar: uSe você precisar voltar o texto na tela, utilize as teclas Ctrl + r.Subcomandos para localização de texto/palavra => Procura pela palavra ou caracter acima ou abaixo do texto.?palavra => Move para a ocorrência anterior da palavra (para repetir a busca use "n").n => Repete o último comando utilizando / ou ?.N => Repete o último comando / ou ? ao contrário (baixo para cima).Ctrl+g => Mostra o nome do arquivo, o número da linha corrente e o total de linhas.Mais opções para remoção de caracteresx => Apaga o caracter onde o cursor estiver.dd => Apaga a linha inteira onde o cursor estiveD => Apaga a linha a partir da posição do cursor até o fim.J => Une a linha corrente à próxima.:5dd => Removeas próximas 7 linhas a partir da posição do atual do cursor (qualquer número).Mais para copiar e colar:yy => Copia a linha onde o cursor se encontra.:5yy => Copia as próximas 5 linhas a partir da posição atual do cursor.:p => Cola o que foi copiado na linha abaixo do cursor atual.Opções para substituição de textosrCARACTER => Substitui o caracter onde o cursor se encontra pelo caracter especificado em CARACTER.RTEXTO => Substitui o texto corrente pelo texto digitado (sobrepõe).cw => Remove a palavra corrente para substituição.cc => Remove a linha corrente para substituição.C => Substitui o restante da linha corrente, esperando o texto logo após o comando.J => Une a linha corrente à próxima.:s/velho/novo => Substitui a primeira ocorrência de "velho" por "novo" na linha corrente.:% s/velho/novo => Substitui em todo o arquivo (%) a primeira ocorrência de "velho" por "novo" em cada linha.:% s/velho/novo/g => Substitui em todo o arquivo (%), todas (g) as ocorrências de "velho" por "novo".:% s/velho/novo/gc => Igual ao anterior, mas pedindo confirmação para cada substituição.:% s/^String[0-9]//gc => Expressões regulares também funcionam, como no sed.:% s/./\u&amp;/gc => Converte para maiúsculas (\u) o primeiro caracter (.) de cada linha.Abreviações:ab => Mostra todas as abbr.:abc[lear] => Remove todos.:iab => Apenas para modo de inserção.:iabc[lear] => Tira todos de inserção.:cab => Apenas p/modo de comando ( : ).:cabc[lear] => Tira todos os modos de comando.:una vc => Tira ab para vc.Observação: Pontuação, espaço ou o ENTER, disparam a expansão de uma abreviação. Porém, Ctrl+] também pode ser usado, para expandir sem adicionar caracteres.Opções para o comando SET:setautowrite aw => Salva a cada alteração.backspace bs => Comportamento backspace (1 ou 2).errorbell eb => Campainha de erro.expandtab et => Troca tab por espacos.fileformat=dos ff => Converte o arquivo para DOS.hidden hid => Preserva o buffer.hlsearch hls => Elumina a última procura.ignorecase ic => Case insensitive na busca.incsearch is => Ilumina procura enquanto digita.laststatus=2 => Mostra linha de estado.lazyredraw lz => Não redesenha em macros.lines=N => Múmero de linhas na tela.magic => Usar mágicas na procura de padrões.number nu => Mostra núm da linha.report=N => Mostra aviso quando N linhas mudaram (0=sempre).showcmd => Mostra o comando que se está fazendo.showmatch sm => Mostra o casamento de {},[],().smartcase scs => Assume "noic" quando tiver maiúsculas.textwidth=N => Quebra de linha do texto.undolevels ul=N => Guarde os N últimos comandos para desfazer (padrão=1000).vb t_vb= => Retira o "beep" de erro.Agora invertendo maiúsculas/minúsculas5~ => Inverte os 5 próximos caracteres.g~$ => Inverte todos os caracteres até o fim da linha.seleciona, u => Converte para minúsculas.seleciona, U => Converte para maiúsculas.seleciona, ~ => Inverte.Observação: Onde está escrito "seleciona", é para fazer utilizando o modo visual (v).Agora veja como definir coluna de quebra de linha (problema que eu tive quando iniciei no aprendizado do vim)::set textwidth=NSe você já estiver num arquivo pronto::set wm=5 => O número 5 aqui são as colunas que serão "cortadas".gqG => Até o final do arquivo.Vamos ver agora o que podemos fazer pressionando a tecla "Ctrl":É claro que é segurando Ctrl + .No modo de COMANDO:A => Incrementa um número (Add)X => Decrementa um númeroS => ScrollLockL => Redesenha telaV => Modo visual (Visual Vertical)G => Status do arquivoM => Início da próxima linhaE => Linha abaixo sem mover cursorY => Linha acima sem mover cursorN => Próxima linha (Next)P => Linha anterior (Previous)F => PageDown (Forward)B => PageUp (Backyard)U => PageUp / 2 (Up)D => PageDown / 2 (Down)Agora, no modo de INSERÇÃO:A => Insere o último texto inseridoI => TABS => ScrollLockH => BackSpaceT => 2 tab's no início da linha (Two Tabs)V => Anula expansão do próximo caractereJ => Enter - quebra de linhaM => Enter - quebra de linhaL => Redesenha telaR => Insere conteúdo do registrador [a-z] (Veja abaixo)K => Insere um dígrafo (Veja abaixo)N => Procura palavra no texto atual (Next)P => Procura palavra no texto atual (Previous)Y => Copia caractere que está acima (Yank)Veja os caracteres especiais:ga => Mostra o código da letra sobre o cursor.:dig => Mostra todos os dígrafos disponíveis (tabela).Exemplos: Para fazer um º, use Ctrl+K,-,o ("Ctrl"+"K"+"-"+"o").Para fazer um ½, use Ctrl+K,1,2 ("Ctrl"+"K"+"1"+"2").Trabalhando com arquivos e janelas múltiplasVocê pode abrir múltiplos arquivos, por exemplo:$ vim arquivo1 arquivo2E pode alternar entre as janelas. Veja::wn => Grava o atual e vai ao próximo.:wN => Grava o atual e vai ao anterior.:args => Mostra todos os arquivos atuais.:qa => Sai de todas as janelas de uma vez.:all => Abre todos os arquivos em janelas individuais.Tecla chave das janelas = Crtl+Wj, seta abaixo => Move para janela abaixo.k, seta acima => Move para janela acima.o => Apenas esta janela, fecha todas as outras (Only).+, - => Muda o tamanho da janela.= => Deixa todas as janelas com tamanhos iguais.Os registradores"[a-z] => Use o registrador [a-z] para o próximo delete, cópia ou cola.:reg => Mostra o conteúdo de todos os registradores.:reg [a-z] => Mostra o conteúdo do registradores [a-z].Observação: O [a-z] pode ser: 0-9a-z%#:.-="Marcas:m[a-z] => Marca em [a-z] a posição corrente do cursor.`[a-z] => Vai até a marca [a-z].`` => Vai até a posição anterior ao último pulo (alterna).:marks => Mostra as marcas ativas.Fazendo gravação de seqüência de comandosq[a-z] => Inicia a gravação de uma seqüência no registrador [a-z].q[A-Z] => Inicia a gravação, adicionando no registrador [a-z].q => Pára a gravação.@[a-z] => Executa a seqüência do registrador [a-z] (5 vezes? 5@a)Dica: Pode-se colocar o @[a-z] dentro da própria gravação do q[a-z]! Assim ele é executado recursivamente. Muito útil quando há uma procura de padrões na gravação. faz para todas as ocorrências.Mapeamentos:map :r!date => Mapeamento em modo de comando.:imap :r!date => Mapeamento em modo de inserção.:cmap r!date => Mapeamento em modo linha de comando.:vmap :r!date => Mapeamento em modo visual.Exemplos:"html: negrito no trecho selecionado:vmap d`pa # html: negrito no trecho selecionado"liga/desliga autoIndent:map ,si :set ai!:echo "autoIndent="&amp;ai"mostrar os espaços em branco no fim das linhas:map / *$^MAtravés dos mapeamentos é possível "encurtar" comandos, ou seja, abreviá-los. Conheça as sintaxes:Comment => CianoConstant => RoxoIdentifier => CianoPreProc => Azul escuroSpecial => VermelhoStatement => AmareloString => RoxoType => VerdeTodo => Preto, fundo marromError => Branco, fundo vermelhoIgnore => Preto, fundo preto! - escondeUtilizando o recurso de expandtabMas, o que isso faz? Transforma todos os TABs em espaços. Podemos ativar dentro do próprio vim, utilizando o comando::set expandtabPara desabilitar::set noexpandtabPodemos colocar também no arquivo ~/.vimrc a seguinte linha:set expandtabO arquivo ~/.vimrc pode ser usado para muitas configurações, e essa é uma delas. Existe ainda o arquivo ~/.exrc, mas não entraremos em detalhes.Podemos incluir a saída de um comando no vim, utilizando::r!comandoPor exemplo::r!rpm -q kernelIncluiria o seguinte resultado, dentro do seu texto (isso na minha máquina):kernel-2.4.18-3Dicas diversas do vim::xit => Igual :wq, mas só grava se tiver sido alterado algo no arquivo.:map N_ARQ ^R=expand("%:t:r")^MImprime no arquivo o próprio nome do arquivo editado quando N_ARQ é digitado.Agora, veja como alinhar o texto::left:right:centerE para fazer uma busca de 2 palavras ao mesmo tempo:/palavra1\|palavra2Comandos de DesligamentoDiscos e PartiçõesIdentificação de discos e partições em sistemas LinuxNo Linux, os dispositivos existentes em seu computador (como discos rígidos, disquetes, tela, portas de impressora, modem, etc) são identificados por um arquivo referente a este dispositivo no diretório /dev.A identificação de discos rígidos no Linux é feita da seguinte forma:/dev/hda1   |       |  | |   |       |  | |_Número que identifica o número da partição no disco rígido     |       |  |   |       |  |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...)   |       |   |       |_Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xd=XT).   |   |_Diretório onde são armazenados os dispositivos existentes no sistema.Abaixo algumas identificações de discos e partições em sistemas Linux:/dev/fd0 - Primeira unidade de disquetes/dev/fd1 - Segunda unidade de disquetes/dev/hda - Primeiro disco rígido na primeira controladora IDE do micro (primary master)/dev/hda1 - Primeira partição do primeiro disco rígido IDE./dev/hdb - Segundo disco rígido na primeira controladora IDE do micro (primary slave)/dev/hdb1 - Primeira partição do segundo disco rígido IDE/dev/sda - Primeiro disco rígido na primeira controladora SCSI/dev/sda1 - Primeira partição do primeiro disco rígido SCSI/dev/sdb - Segundo disco rígido na primeira controladora SCSI/dev/sdb1 - Primeira partição do segundo disco rígido SCSI/dev/sr0 - Primeiro CD-ROM SCSI/dev/sr1 - Segundo CD-ROM SCSI/dev/xda - Primeiro disco rígido XT/dev/xdb - Segundo disco rígido XTAs letras de identificação de discos rígidos podem ir além de hdb, em meu micro, por exemplo, a unidade de CD-ROM está localizada em /dev/hdg (Primeiro disco - quarta controladora IDE)