Aprendendo Shell / Bash
18 de Abril de 2013, 21:00 - sem comentários ainda
Em uma aula de Software Livre, abordei as questões da necessidade de uma certa fluência na utilização dos comandos mais conhecidos por linha de comando, ou CL (Command Line); Quando menciono certa fluência, o que quero dizer é o conhecimento básico para administração de um sistema, manipulação de arquivos de configuração, cópias de arquivos, uso de utilitários de atualização do sistema, como "aptitude", "apt-get", "dpkg" ou edição de textos com "vim".
Quem não conhece ou nunca utilizou os comandos presentes no shell, não imagina o ganho de produtividade e versatilidade em administrar Sistemas Linux. Naturalmente, o aprendizado não é somente memorização de comandos e suas sintaxes, mas no curto e médio prazo, ja é possível tirar bons proveitos do estudo de cada domando. Além disso, altamente recomendado como uma primeira linguagem para aprender os primeiros passos em programação de computadores conforme Jon "Maddog" Hall no seu blog em [1].
Então, o shell é um interpretador que está entre o usuário e o kernel do sistema operacional, fazendo todas as análises dos comandos, checando por exemplo sua sintaxe, se o comando é válido e enviando as requisições para execução. Costumo dizer que o shell é o ponto mais próximos que podemos estar do kernel de um sistema Linux e, lógicamente, o kernel é o ponto mais próximo dos dispositivos de hardware própriamente dito, como execução de comandos de leitura e gravação em disco ou comunicação com impressoras por exemplo. Como dito no paragráfo anterior, outra grande utilidade do shell é ser uma linguagem de programação, conhecida como "script shell" com objetivos de automatizar programas, configurações, instalações, etc.
Crédito imagem: http://apoie.org/JulioNeves/PapoI.htm
O Shell mais conhecido no mundo Linux é o bash − GNU Bourne-Again SHell. O Bash é um interpretador de comando compatível com sh capaz de executar comandos pela entrada padrão ou através de um arquivo. Também incorpora características úteis do ksh e csh, fielmente seguindo as especificações POSIX (IEEE Standard 1003.1).
Caso necessite informações sobre o bash, instale o bash-doc e vefifique sua documentação em /usr/share/doc/bash-doc ou sua man page (man bash);
Para trabalhar com eficácia no Shell, recomendo o estudo de alguns comandos simples e ter disciplina para aprender todo dia um pouco, por exemplo, iniciando por aqueles comandos mais simples, com manipulação de arquivos e diretórios; ao surgir dúvidas, a ferramenta mais acessível para ter informações sobre um comando é o próprio comando seguido do --help, como por exemplo ls --help, ou usando a man page (man ls); Abaixo vou listar comandos que julgo ser necessário seu estudo para uma utilização do estudante de Software Livre:
pwd mostra o diretório atual
ls lista arquivos no diretório corrente (ls -l, ls -lhat)
man exibe um manual do comando especificado (man ls)
mkdir cria um diretório
rm remove arquivo
rm -rf cuidado, remove diretório de forma recursiva
| pipe, concatena comandos
> cria arquivo
>> cria ou adiciona dados em um arquivo
/dev/null direciona a saida descartando os resultados
find comando útil para localização de arquivos
ps mostra os processos correntes, ex ps -aux
kill mata um processo pelo seu número
pkill mata um processo pelo seu nome
alias útil para dar "apelidos" a comandos, ex: alias cp='cp -i'
cal apresenda o calendário
chmod permite atribuir modos a um arquivo
less similar ao more, premite visualizar o conteúdo de um arquivo
chown permite alterar dono e grupo de um arquivo
clear (ctrl+l) limpa a tela
tar comando para backup
gzip comprime ou expande um arquivo
date mostra a data corrente, configura data no sistema
du disk user
df reporta o espaço usado no disco
file determina um tipo de arquivo
find procura por arquivos na hierarquia de diretórios
head mostra o inicio de um arquivo
ln cria links simbólicos
mail envia e-mail
more controla a saida de um comando
password cria, altera senha, bloqueio/desbloqueio de usuário
ping não conhece o ping?
hostname retorna ou configura o hostname de uma máquina
reboot reinicia o sistema
shutdown desliga o sistema
rmdir exclui um diretório
tail útil para checagem de logs
su sudo user
wc util para contar linhas, palavras de um arquivo
whereis mostra o local de um comando
who who am i
top mostra informações sobre o sistema, atividade, uptime, etc
uptime mostra tempo do sistema ligado
mount monta dispositivos de blocos, discos, etc
umount
Alguns comandos, podem necessitar de poderes de sudo ou ainda utilizar a conta de root! Sobre isto, veja mais em root, direitos, privilégios e segurança;
O domínio dos comandos acima, mesmo que básico, já ajuda o estudante a ter fluência na manipulação de dados via linha de comando; Aproveite as possibilidades de usar Linux e divirta-se.
[1] http://www.lpi.org/blog/shell-powerful-first-computer-language
Dia da Liberdade dos Documentos (27/03/2013)
26 de Março de 2013, 21:00 - sem comentários ainda#dfd |
Pensando no dia da liberdade dos documentos, lembro-me dos primeiros editores de textos e das primeiras planilhas eletrônicas. Por exemplo, no MSX (HotBIT Sharp) trabalhava muito bem com o HotCalc, um programa que era carregado de um cartucho inserido no Slot A; O programa para edição de textos, era carregado diretamente do tape recorder através de cabos na entrada "aux", após alguns minutos de leitura e um pouco com sorte. Neste cenário, minhas planilhas e documentos, incluindo coisas profissionais, eram salvos nestas fitas cassete. As coisas profissionais a que me refiro, também eram impressas em uma impressora eletro-mecânica, que era o caso da Praxis 20, uma Olivetti devidamente adaptada com uma interface paralela. Nos 1980-1990 era assim, todo mundo que aprendeu naquele tempo, tem conceitos. No anos 1990-2000, experimentamos diversas tecnologias para edição de documentos e planilhas, dentre estas tecnologias o Editor Fácil, para texots, EasyCalc para planilhas para citar somente alguns. Empresas com poder econômico e reserva de mercado, transformaram a Fácil Informática em sombra do passado!
Segundo Maiko Rafael Spiess / Marcos Antônio Mattedi [1] "Enquanto o Fácil para MS-DOS traduzia interesses com uma facilidade espantosa, por justamente “se deixar alistar” pelos interesses alheios, como a adequação à língua portuguesa, o Fácil para Windows encontrou um ambiente muito mais hostil. Enquanto o primeiro, em termos práticos, precisava apenas demonstrar ser um todo coerente e funcional para ser adotado, utilizado e incorporado por outros atores, o segundo precisou envolver-se em traduções de interesses cada vez mais tortuosas e menos favoráveis. Eventualmente, as bem-sucedidas estratégias de translação de interesses empregadas pela Microsoft, envolvendo um novo paradigma de sistema operacional, aplicativos integrados e a opinião especializada, fortaleceram ainda mais uma rede local coerente e estável, a ponto de ela atrair para si a força da grande maioria dos usuários de microcomputadores desde então. Os usuários foram convencidos pela Microsoft que a realização de seus interesses e o futuro da informática passavam necessariamente pelo Windows e pelo processador de textos Word. O Fácil, por outro lado, ainda um produto viável, mas progressivamente com menos destaque na mídia especializada, sem o aparato de marketing e pesquisa da gigante norte-americana, atraía cada vez menos aliados e consumidores. Conforme ele se enfraquecia, menos convincente se tornava em uma futura negociação de interesses. Com seus antigos compradores sendo convencidos pela Microsoft, a força dos processadores de textos Fácil foi rapidamente drenada em direção ao Microsoft Word e seus programas irmãos..."
Dito isto e torcendo muito que você tenha se interessado até aqui, lembro que as fitas citadas acima já não são mais possíveis de serem lidas e os arquivos não são mais recuperáveis. Então, da mesma forma que somos atores no cenário da tecnologia, somos impactados por ela enquanto cidadãos, empresas ou governos. A experiência, estudos e organizações mostram que cuidados devem ser tomados para que nossos documentos (no sentido amplo) devão ser tratados como um bem que precisa ser preservado. Iniciativas como Document Freedom Day [2] ou Dia da Liberdade dos Documentos [3] devem ser estimuladas como uma grande conquista, ou ainda, uma grande "construção social", mesmo que pressionada pelos formatos fechados;
Finalizo com o pensamento abaixo do Sr Charles-H. Schulz, Director da Document Foundation e Membro da administração do OASIS Consortium:
"Liberdade Documental é uma parte enorme da nossa liberdade digital, e no entanto a que se presta pouca atenção. Toda a gente devia poder usar, reutilizar e distribuir livremente documentos digitais e os dados contidos neles. Infelizmente formatos fechados e proprietários restringem a nossa liberdade de poder usufruir dessas liberdades e de interoperar bem com outros. Para que se possa permitir e garantir a liberdade documental precisamos de usar, promover e desenvolver verdadeiros standards abertos que não tenham problemas de patentes, e de usar software e tencologias inovativas e inclusivas. O Software Livre pode ter um papel para ajudar muito nestes assuntos." Fonte http://www.documentfreedom.org/testimonials.html
Referências:
[1](Maiko Rafael Spiess, Marcos Antônio Mattedi, pg 463 <http://www.scielo.br/pdf/mana/v16n2/08.pdf>, acesso em 27/03/2013)
[2] http://www.documentfreedom.org/index.pt.html[3] http://documentfreedom.org.br/
Google Reader
13 de Março de 2013, 21:00 - sem comentários ainda
Google Reader, assim como outros produtos do Google estão sendo descontinuados. Isto é normal e mostra que estamos passando por grandes transformações no uso da computação, geração e uso das informações. A única certeza é esta, a mudança. Mas o que o Google quer dizer nas entrelinhas, que se o Google Reader tinha a função de agregar informações para o usuário, este mesmo usuário que consumia o produto mudou seu hábito de acesso à informação demandado pela oferta de outros mecanismos, como as redes sociais que tem presença em diversos dispositivos, facilitando a vida para quem usa mais de um computador, dispositivos móveis, etc. Outra razão da morte do Google Reader, penso, é outra parcela de pessoas que efetivamente não leêm ou somente consomem notícias sem qualidade ou profundidade, ficando somente na pequena margem das redes sociais e com isto, também não gerão demanda por bons conteúdos gerados pelas pessoas, por seus blogs e até pelas redes sociais. O impacto disso, vamos perceber nas escolas, faculdades e na vida profissional, com pessoas cada vez mais sem conceitos e sem condições de avaliação das mudanças que estamos sofrendo; O Google argumenta também que está alinhando o foco e por isso "matar" alguns de seus produtos é inerente. Resta aprender com isso ajustar o nosso foco enquanto consumidor de informação e formador de opinião.
Imagem:
Screenshots pela linha de comando com Scrot
10 de Março de 2013, 21:00 - sem comentários ainda
SCRenn shOT, ou simplesmente "scrot".
Screenshot (foto da tela), é uma função básica para as necessidades diversas de computação, como documentação, mostrar um erro em um programa ou simplesmente exibir sua área de trabalho para os amigos; Particularmente, tenho usado para isso uma função do Gnome, o gnome-screenshot que possui funções muito diversas; O programa "scrot" tem a vantagem de poder ser chamado pela linha de comando pois este não depende de uma interface gráfica para rodar, pois utiliza a imlib2 para manipular imagens;
A instalação em sistemas GNU/Debian se dá pelo próprio nome do pacote, o qual já instala a imlib2:
aptitude install scrot
Dicas de uso:
Além da man page, o scrot quando chamado com argumento -h apresenta um help muito fácil de entender. Fiz alguns testes para selecionar alguns usos mais comuns os quais listo abaixo para os curiosos testarem:
scrot -s /tmp/scrot-s.png
A opção -s permite selecionar uma área para seu scrennshot; O scrot vai esperar até que seja "clicado" com o mouse uma área, aba, ou qualquer coisa no desktop; Note que neste caso, é indicado o nome para diretório que se deseja arquivar a imagem; Caso não seja indicado, os arquivos serão salvos na área de trabalho do usuário;
scrot -u /tmp/scrot-u.png
A opção -u vai usar o foco atual do seu terminal:
Uma opção interessante, é poder contar um certo tempo até que seja disparado a captura do Screenshot; por exemplo, você pode desejar chamar o scrot e procurar a tela ou aplicação que deseja capturar; isto pode ser feito da seguinte forma:
scrot -u -b -d 10 -c /tmp/scrot-border_count.png
Note, que aqui é exemplificado a possibilidade de colocar mais de um argumento na linha de comando, por exemplo, a opção -d (delay) e -c (count) que juntas permitem uma contagem de 10 segundos antes da gravação indicada por -u (focused);
Sendo um programa ao bom estilo de linha de comando (cl); seu uso fica por conta da criatividade de cada um, inclusive, podendo ser usado em um laço for, agendado, utilizado em conjunto Convert que é especialista em manipulação de imagens ou pelo Gimp, para edição etc; Gostou?
Referências:
man scrot
Uptime, porque tempo é dinheiro
7 de Março de 2013, 21:00 - sem comentários ainda
Uma das muitas virtudes do Linux é sua estabilidade e isto se reflete direto na questão de uptime da máquina, que, mesmo passando por atualizações, configurações, instalação de novos programas ou periféricos não exige reinicializações frequentes, exceto atualização de algumas questões ligadas ao kernel ou mesmo mudança no hardware (se este não for hotswap); além disso, sysadmin's se preocupa muito com questões de disponibilidade. Mas o que eu gostaria de mostrar aqui são algumas curiosidades a respeito dos programas que controlam, ou melhor dizendo, que permitem a visualização das informações de uptime;
O comando
uptime;
propriamente dito, com informações da hora atual, dias do sistema ligado, usuários conectados e carga do sistema:uptime |
Outro comando que trás informações, é o comando
w
que além do uptime, lista usuários, tarefas sendo realizadas, onde estão conectados entre outros detalhes:w |
O comando
top
, é mais completo quanto a isto, oferecendo informações úteis para administração de memória, swap, processos em execução, usuários ativos, entre outras informações:top |
O
htop
é outro comando interessante, muito similar ao top
e tem como diferencial mostrar o consumo de cpu por barras, indicando o consumo para cada núcleo presente no processador, da mesma forma, para memória e swap. Um outro detalhe no htop, como se fosse uma brincadeira dos desenvolvedores, estando o sistema a mais de 100 dias ligado, ao lado dos dias em uptime aparece um ponto de exclamação (!), como a mencionar, parabéns, seu sistema é bem administrado e tem um bom uptime. :)htop |
O comando
procinfo
é o único comando (que eu conheço) que mostra a data que o sistema foi ligado, "bootup" e o uptime é mostrado em meses, semanas, dias, horas, minutos, segundos e milesegundos:procinfo |
Os comandos citados,
uptime, w, top, htop, procinfo
são programas ncurses, muito especialistas em pequenas tarefas, assim como a maioria dos programas em linha de comando. Permitem, através das suas páginas man uma série de recursos informativos para administração do sistema, além de permitir o uso de informações em conjunto com o | (pipe), grep, awk, etc.
Referências:
man uptime
man w
man top
man htop
man procinfo