Tabela de conteúdos

O "Command Line" e os filosofias do Unix

1 : Um Sistema de Arquivos

Unix armazena dados dentro um hierarquia de pastas (directories) e arquivos.

  pwd               - onde estou - mostra o caminho absoluto do path onde o usuário está
  
  ls                - lista o conteúdo do diretório 
      
  cd PATH           - navegar para um diretório diferente ex.: user@notebook:~$ cd /etc/apt 
  
  cd ..             - navegar para diretório acima
  
  cd -              - navegar ao penúltimo diretório 
  
  mkdir 'diretório' - criar novo subdiretório 
  

Opções :

  ls -l         - mostra todos as detalhas, incluindo as permissoes dos arquivos
  la -a         - mostra arquivos e directories ocluidos
  la -lat       - combinar opções, isso também ordenar as arquivos pela ultima data de editação
  
  

Ensaio #1 : Cria a seguinte arvore dos directories dentro sua computador

  calango 
      vants            
      musichacking
         ataripunk
         puredata
         processing
             sketches
      videohacking
         camera
      micro
         arduino
         beaglebone
         raspberrypi           
      linux
         commandline
          

1.2 : As arquivos

Ensaio #2 : Utilizando qualquer editor no sua computador, cria um arquivo de texto dentro uma destas directories.

  cp NOME1 NOME2        - fazer um copia de um arquivo para outra
  
  mv NOME1 NOME2        - mudar um arquivo de um lugar para outra (pode ser utilizada troca de nome)
  
  rm                    - deletar um arquivo. **Cuidado! Unix não tem lata de lixo ou desfazer deletar!**
  
  cat NOME              - mostra a conteúdo de um arquivo   
  

2 : Um sistema que ajuda

2.1 Teclas essenciais

2.2 "Wild cards"

  ls m*                 - mostra todos as arquivos e pastas que começam com 'm',

2.3 Manual

  man ls                - o manual do comande "ls"

Ensaio #3 : Pratica com estes poderes.

3 : Unix : um coleção de pequenas ferramentas

  echo "Todo Bem"       - imprimir o string "Todo Bem" 
  cat NOME              - mostrar o conteúdo do NOME
  
  grep PADRAO NOME      - mostrar só as linhas que contem PADRAO dentro o arquivo NOME
  
  find PATH             - mostrar todo a hierarquia abaixo do PATH
  
  apropos "TEXTO"       - buscar ferramentas com TEXTO no manual
  
  less NOME             - mostrar o conteúdo do NOME numa programa que permitir navegar
  

Uteis do less :

  
  /                     - procurar texto dentro o arquivo
  n                     - procurar o próximo texto 

3.2 : As pequenas ferramentas podem ser combinados

A parte genial do Unix 'e o “pipe” ou | que pode ser utilizada pra combinar as ferramentas

  cat NOME | less           - mostrar a conteúdo do NOME e encaminhar para o less
  
  ls -la   | less           - executar ls -la e encaminhar o resultado para o less
  
  ls -la   | grep "v"       - executar ls -la e encaminhar o resultado para o grep (o filtro) do carácter "v" 
  

Também temos operadores que encaminha para arquivos :

  ls -la > dir.txt          - executar ls -la e colocar o resultado em dir.txt
  
  echo "todo bem!" > a.txt  - criar arquivo a.txt com o texto "tudo bem!"
  
  echo "como vai?" >> a.txt - adicionar o texto "como vai?" ao a.txt
  

Ensaio #4 : Criar alguns arquivos grandes com as ferramentas ls, echo, cat, |, > e »

3.3 Ferramentas são programas normais

Um programa simples do Python :

  import random
  for i in range(100): 
      print random.random()
  

Colocar isso numa arquivo teste.py e executar com

  python teste.py
      

A programa só imprimir 100 números randômicos.

Mas podemos usar o | do Unix com as outras ferramentas. Por exemplo

 python teste.py | grep "123" 
 

ou colocar as resultados numa outra arquivo

 python teste.py | grep "123" > com123.txt
 
 

Isso e a filosofia do Unix. Escrever programas simples, com um proposta, que podem ser combinados pela os usuários no command line. É a maximização do flexibilidade.

4 O Unix é um sistema operacional "multi-tasking"

Mudar o programa em Python ao :

  import random
  while True :
      print random.random()

Agora, esse programa nunca termina.

Mas podemos continuar utilizar numa pipe.

  python teste.py | grep "1234"
  

Como é possível? As programas teste.py e grep são processos executas em paralelo.

Abrir um outra terminal.

  ps                - Mostra todas as processos / programas executando neste terminal.
  
  ps -e             - Mostra todas as processos / programas no maquina.
  

Provavalmente vou vir um lista grande dos processos no computador. Mas afinal seria um coisa como :

  8903 pts/25   00:00:02 python
  8904 pts/25   00:00:00 grep
  8905 pts/27   00:00:00 ps
  

Isso mostra um processo python esta executando, e um processo grep.

Vamos assassinar :-)

  kill -9 NUMERO    - Terminar o processo numero NUMERO. (tenta o numero da sua programa em python)