Tema 1 Introdução a Linux - USCgamallo/aulas/Doutoramen... · GNU/LINUX 3 componentes: - kernel:...

32
Tema 1 Introdução a Linux Pablo Gamallo Otero http://gramatica.usc.es/~gamallo/

Transcript of Tema 1 Introdução a Linux - USCgamallo/aulas/Doutoramen... · GNU/LINUX 3 componentes: - kernel:...

Tema 1Introdução a Linux

Pablo Gamallo Oterohttp://gramatica.usc.es/~gamallo/

PLANO

Software livre

Alguns comandos do shell de GNU/LINUX

Bibliografia

Jordi Mas i Hernández (2007), Software Libre, Biblos, A Coruña.

http://aurelio.net/shell/

Software livre

código fonte = receita de cozinha

- Sem acesso ao código fonte, só podemos usar o software, não podemos ver como está feito ou introduzir melhoras.

- O software livre permite o acesso ao código fonte (receita)

- A filosofia do software livre provém da ética hacker: partilhar os resultados com o resto da comunidade

Software livre

- Aparece a microinformática (princípios dos 80)

- Aparecem as primeiras companhias de software

- Aparece o código fechado ou privativo(o software se vende sem o código fonte)

Software livre

- Em 1985, Richard Stallman funda a Free Software Foundation, com o objectivo de construir um sistema operativo Unix livre: GNU.

- Stallman promulga a liberdade de melhorar o software e fazer públicas as melhoras aos demais de modo que toda a comunidade se poda beneficiar.

- Stallman utiliza os termos “privativo” e “proprietário” para refererir-se aos programas que não são livres (Adobe Acrobat, Windows, ...)

Software livre

software livre NÃO É software gratuito

- free software / open source (código aberto)

- “free” significa livre e gratuito (as empresas não gostam)

- Open Software Iniciative: uso do termo “código aberto”

Gratuito Comercial

Código aberto Sofware livre Ex. navegador Firefox

Sofware comercialEx. Linux Mandriva

Código privativo Software privativoEx. Internet Explorer

Software privativo comercialEx. Microsoft Office

Software livre

- Em 1991, o estudante finlandês Linus Torvalds construi o núcleo do sistema operativo inspirado em Unix: Linux

- Aparecem as primeiras distribuições GNU/Linux que inserem no núcleo Linux as ferramenta do projecto GNU

- Stallman utiliza os termos “privativo” e “proprietário” para refererir-se aos programas que não são livres (Adobe Acrobat, Windows, ...)

Software livre

- Escritórios gráficos do sistema Linux: - KDE (liberou o código no 2000)- GNOME (sempre usou código aberto)

- Netscape / Mozilla / Firefoxem 1998, Netscape libera o seu navegador.

- OpenOffice.orgem 1999, Star Office é liberado e começa o projecto OpenOffice.

Outro software livre conhecido

- Apacheo 70% dos servidores web em 2005 usavam este software

Software livre

Tipos de licenças:

- GPL (General Public License): regula software com código aberto, de uso e distribuição gratuitos, mas impede que se redistribua numa versão comercial e/ou com código proprietário

- freeware: uso e distribuição gratuitos, mas o código não se pode modificar (não é código aberto)

- shareware: permite-se que o usuário use e avalie o software durante um período de tempo determinado antes de pedir ao usuário que se registre e pague.

Sistema operativo GNU/LINUX

3 componentes:

- kernel: o núcleo do sistema operativo (o Linux de Linus Tovald)

- shell: interface entre o usuário e o kernel

- aplicações: As diferentes distribuições de GNU/Linux diferenciam-se polo tipo de aplicações que incorporam ao sistema.

GNU/LINUXCaracterísticas

- multitarefa

- multiusuário: vários usuários podem utilizar o sistema ao mesmo tempo

- multiplataforma

- maior estabilidade em relação a Windows

- não precisa ser reiniciado devido à instalação de programas ou configuração de periféricos

- não existem vírus

- permite o acesso a discos formatados por outros sistemas operativos

GNU/LINUXAlguns comandos do shell

- ls (lista os ficheiros e subdirectórios do directório actual)

- pwd (rota actual)

- mkdir (criar um subdirectório)

- cd (câmbio de directório)

- echo “olá” > prova.txt (criar um ficheiro de texto)

- cp, mv (copiar, mover e renomear ficheiros)

- rm (borrar ficheiros)

- cat (ler o conteúdo de um ou vários ficheiros de entrada)

- wc (conta linhas, palavras e caracteres dos ficheiros de entrada)

GNU/LINUXPrimeira práctica

- cria o directório “meu_nome”

- coloca-te no directório meu_nome

- cria nesse directório dous subdirectorios: “scripts” e “corpus”

- cria dentro de corpus o ficheiro “prova.txt” com o texto “isto é uma prova”

- lê o conteúdo do ficheiro prova.txt

- conta as linhas, palavras e caracteres de “prova.txt”

- borra o ficheiro “prova.txt”

GNU/LINUXPrimeira práctica

Fai o mesmo utilizando ferramentas do sistema gráfico e editores de texto como

gedit e OpenOffice

- Para listar, mover-te na hierarquia de directórios e criar novos

subdirectórios, utiliza KONKEROR

- Para criar novos ficheiros, utiliza o editor gedit

- Para contar palavras e caracteres, utiliza OpenOffice

GNU/LINUXSegunda práctica

Objectivo:Procurade “El Quijote” por Internet,

guardade o ficheiro no directório “corpus”

visualizade o ficheiro na consola

e contade as palavras e caracteres do texto

- busca com Firefox no site http://www.gutenberg.org/

- borra o metatexto que não pertence ao livro de Cervantes

- fai a contagem com OpenOffice e com o comando wc

- fazede o mesmo com cat usando a técnica dos pipes “|”

- provade também o comando more

GNU/LINUXSegunda práctica

- visualizade o ficheiro: cat ElQuijote.txt

- visualizade o ficheiro pantalha a pantalha:more ElQuijote.txt

- Contade as linhas, palavras e bytes dum ficheiro:wc ElQuijote.txt

GNU/LINUXSegunda práctica

O shell permite a construção de comandos complexos através da combinação de vários comandos simples. O operador "|", conhecido como pipe, ou tubo, permite conectar a saída de um comando à entrada de outro.

cat ElQuijote.txt | more

cat ElQuijote.txt | wc

GNU/LINUXSegunda práctica

Como está codificado o ficheiro ElQuijote.txt ?

- Comprova a codificação com o camando file :

file ElQuijote.txt

Que devolve esta informação:“UTF-8 Unicode English text with CRLF line terminators”

- Isto significa que a codificação é Unicode UTF-8, mas tem saltos de linha CR e LF

GNU/LINUXSegunda práctica

Eliminar saltos de linha CR:

Dos2Unix.x ElQuijote.txt

Tira fora os saltos de linha CR, próprios de sistemas alheos a linux, e fica com LF

GNU/LINUXSegunda práctica

Unicode -> Latin

- lê o ficheiro com o comando cat - a codificação do ficheiro é Unicode (UTF-8).

- como vamos usar ferramentas que precissam ter texto codificado em

Latin (ISO-8859-1), então, devemos aprender a mudar a codificação:

cat ElQuijote.txt | iconv -f UTF-8 -t ISO-8859-1

Na seguinte práctica, simplificaremos o procedimento

GNU/LINUXTerceira práctica

Objectivo:Cria 2 ficheiros executáveis:

- de Unicode a Latin 1

- de Latin 1 a Unicode

1. Cria um ficheiro UnicodeToLatin.x contendo o seguinte comando:

iconv -f UTF-8 -t ISO-8859-1

2. Cria um ficheiro LatinToUnicode.x contendo o seguinte comando:

iconv -f ISO-8859-1 -t UTF-8

GNU/LINUXTerceira práctica

Podemos dar três tipos de permissões aos ficheiros:- Podem ser lidos,- Podem ser escritos- Podem ter código executável

chmod +r ficheiro (permite a leitura)

chmod +w ficheiro (permite a escrita)

chmod +x ficheiro (permite a execução)

GNU/LINUXTerceira práctica

Já podemos convertir o ficheiro codificado em Unicode a Latin:

cat ElQuijote.txt | ./UnicodeToLatin.x > ElQuijote_latin.txt

GNU/LINUXQuarta práctica

Objectivo: Conta o número de ocorrências das expressões:“Quijote”, “Don Quijote”, “Sancho”, “Sancho Panza”, “Dulcinea”, “Dulcinea del Toboso”, ...

cat ElQuijote.txt | grep “Quijote” | wc

Comando “grep”: selecciona as linhas do texto que contenham uma sequência de caracteres (ou string) específica

GNU/LINUXOutros comandos de interesse

head -N (escreve as primeiras N linhas do texto)

tail -N (escreve as últimas N linhas do texto)

head -N | tail -1 (escreve a N linha)

head -5 (escreve as primeiras 5 linhas do texto)

tail -11 (escreve as últimas 11 linhas do texto)

head -12 | tail -1 (escreve a linha 12)

GNU/LINUX Quinta práctica

Objectivo: Criar um ficheiro executável, chamado “linha.x”, que escreva a linha do texto que lhe digamos.

cat ElQuijote.txt | ./linha.x 5 (escreve a linha 5 do texto)

Solução:

head -$1 | tail -1

GNU/LINUX Sexta práctica

Objectivo: Criar um ficheiro executável, chamado “linhas.x”, que escreva as linhas do texto que lhe digamos.

cat ElQuijote.txt | ./linhas.x 10 3 escreve as 3 últimas linhas até chegar à linha 10 (de 8 a 10)cat ElQuijote.txt | ./linhas.x 33 10 escreve as 10 últimas linhas até chegar à linha 33 (de 24 a 33)

Solução:

head -$1 | tail -$2

GNU/LINUX Séptima práctica

Objectivo: melhorar o “linhas.x” para criar linhas2.x

cat ElQuijote.txt | ./linhas2.x 3 10 escreve da linha 3 à linha 10cat ElQuijote.txt | ./linhas2.x 10 33 escreve da linha 10 à linha 33

Solução:

((N = $2 - $1 + 1))head -$2 | tail -$N

GNU/LINUX Séptima práctica

Outra maneira de fazer linhas2.x

((N = $2 - $1 + 1))linhas.x $2 $N

Colocade “linhas.x” num directório /bin

GNU/LINUX Mais práticas

Podedes praticar mais em:

http://aurelio.net/shell/apostilha-introducao-shell.pdf

http://es.tldp.org/Manuales-LuCAS/AA_Linux_colegio-

1.1/AA_Linux_colegio-1.1-html/x3772.htm

http://www.ppgia.pucpr.br/~maziero/ensino/sei/shell-bash-basico.html

http://www.openslack.org/~piterpk/artigos/aposhell.ps

GNU/LINUX Comandos mais interessantes para processamento de texto

cat : concatena diversos arquivos.

tac : idem, mas inverte a ordem das linhas.

more : permite a paginação.

tr : troca de caracteres entre dois conjuntos.

head : seleciona as "n" linhas iniciais.

tail : seleciona as "n" linhas finais.

wc : conta o número de linhas, palavras e bytes.

sort : ordena as linhas segundo critérios ajustáveis.

uniq : elimina linhas repetidas, deixando uma soa linha.

sed : para operações complexas de strings (trocas, etc).

grep : selecciona linhas contendo uma determinada expressão.

cut : selecciona colunas do fluxo de entrada.

rev : reverte a ordem dos caracteres de cada linha.