Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Apostila de programação orientada a Objeto em C++, Programação para Linux, Notas de estudo de Informática

Programação Linux

Tipologia: Notas de estudo

2016

Compartilhado em 01/03/2016

pedro-arns-junior-9
pedro-arns-junior-9 🇧🇷

5

(1)

1 documento

1 / 126

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
LABORATÓRIO DE MEIOS POROSOS E
PROPRIEDADES TERMOFÍSICAS
e
NÚCLEO DE PESQUISA EM CONSTRUÇÃO
Apostila de Programação Orientada a Objeto em C++
Parte V- Programação para Linux
André Duarte Bueno, UFSC-LMPT-NPC
http://www.lmpt.ufsc.br/~andre
Versão 0.4.5
12 de dezembro de 2002
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Apostila de programação orientada a Objeto em C++, Programação para Linux e outras Notas de estudo em PDF para Informática, somente na Docsity!

LABORATÓRIO DE MEIOS POROSOS E

PROPRIEDADES TERMOFÍSICAS

e

NÚCLEO DE PESQUISA EM CONSTRUÇÃO

Apostila de Programação Orientada a Objeto em C ++

Parte V- Programação para Linux

André Duarte Bueno, UFSC-LMPT-NPC

http://www.lmpt.ufsc.br/~andre

email: [email protected]

Versão 0.4.

12 de dezembro de 2002

Apostila de CVS. Versão 0.4. Distribuída na forma GFDL (http://www.gnu.org/licenses/licenses.html#TOCFDL). Copyright (C) 2002 - André Duarte Bueno. Esta apostila é “textbook” livre; você pode redistribuí-la e/ou modificá-la sob os termos da Licença Pública de Documentos da GNU (GFDL), conforme publicada pela Free Software Foundation; versão 1.2 da Licença como (a seu critério) qualquer versão mais nova; preservando as seções ¨no Invariant Sections no Front-Cover Texts, and no Back-Cover Texts¨. Uma cópia da licença é localizada no capítulo GNU Free Documentation License. Esta apostila é “software” livre; você pode redistribuí- la e/ou modificá-la sob os termos da Licença Pública Geral GNU, conforme publicada pela Free Software Foundation; tanto a versão 2 da Licença como (a seu critério) qualquer versão mais nova. Desenvolvida no Laboratório de Meios Porosos e Propriedades Termofísicas (http://www.lmpt.ufsc.br) e no Núcleo de Pesquisa em Construção (http://www.npc.ufsc.br), com apoio do Curso de Pós-Graduação em Engenharia Mecanica (http://www.posmec.ufsc.br) e da Universidade Federal de Santa Catarina (http://www.ufsc.br).

Lista de Tabelas

1.1 Diretórios importantes para o programador....................... 22 1.2 Programas úteis para desenvolvedores de software no ambiente GNU/Linux...... 24

6.1 Bibliotecas usuais.................................... 49

8.1 Comandos do gdb.................................... 61

12.1 Sequência executada pelo programador para montagem de programas multi-plataforma usando o padrão GNU.................................. 79 12.2 Sequência executada pelo usuário............................ 79

Parte I

Programação Para GNU/Linux, Unix

Capítulo 1

Introdução a Programação GNU/Linux, Unix

Esta parte da apostila contém dicas e instruções para montagem de programas usando o formato multiplataforma da GNU. Inicialmente apresenta-se uma lista de comandos do shell e de programas úteis no ambiente GNU/Linux. Descreve-se o programa, sua utilidade, os arquivos de configuração e os parâmetros opcionais. Quando conveniente apresenta-se um exemplo. A seguir descreve-se o uso dos editores emacs e vi, e os programas diff, patch e indent. Descreve- se o compilador gcc/g++ e o make para montagem de programas pequenos. Como montar bibliotecas, o uso do debuger e do profiler, como distribuir seu código, como documentar seus programas. Depois, apresenta-se um roteiro para montar programas completos usando o padrão GNU.

  • O texto aqui apresentado é um texto introdutório.
  • Um texto intermediário, que abrange diversos aspectos da programação para GNU/Linux (fer- ramentas da gnu, processos, sinais, device drives, programação em ambientes gráficos) é en- contrado no livro “ Linux Programming Unleashed ” de Kurt Wall et al. Em português existe o “ Programando com Ferramentas GNU ” (editado pela conectiva).
  • Textos avançados são os manuais disponibilizados na internet, isto é, para aprender em detalhes o autoconf, baixe o manual do autoconf, o mesmo é válido para os demais tópicos apresentados nesta apostila.

Este resumo tem como base as páginas man e os manuais públicos do make (3.78), egcs (1.1.2), egcs++ (1.1.2), aucotonf (2.13), automake (1.4), libttol^1 , o manual do doxygen e artigos da revista do GNU/Linux (http://www.revistadolinux.com.br). Também foram consultadas as referências [13, 9, 12, 11, 3] [2, 10, 1, 4] [8] [7, 5].

(^1) Estes manuais são encontrados, em inglês, no site da gnu (http://www.gnu.org).

CAPÍTULO 1. INTRODUÇÃO A PROGRAMAÇÃO GNU/LINUX, UNIX 12

questões de clareza técnica e por questões de crédito ao projeto GNU que forneceu o seu sistema operacional para ser adaptado ao kernel Linux. Sempre que você quiser falar do sistema operacional use o termo GNU/Linux. Desta forma você estará levando adiante os ideais do software livre que estão representados no projeto GNU.

1.2 O básico do GNU/Linux, Unix

Apresenta-se a seguir um guia com alguns comandos de shell do GNU/Linux, Unix, MacOS X, e que são úteis para programadores.

1.2.1 Comandos do shell úteis^3

Lista-se a seguir alguns comandos de shell úteis para programadores. Uma descrição mais de- talhada dos mesmo pode ser encontrada em apostilas/livros sobre o GNU/Linux, Unix. Você pode obter informações simplificadas sobre estes comandos usando o programa man (de manual). Use o comando man nomeDoPrograma para ver um manual simples do programa. Versões mais atuali- zadas dos manuais destes programas são obtidos com info nomeDoPrograma. Você também pode obter um help resumido usando nomeDoPrograma - -help. Nos exemplos apresentados a seguir, os comentários após o sinal # não devem ser digitados. Se você já é um usuário experiente do GNU/Linux pode pular esta parte.

Diretórios

. Diretório atual. .. Diretório pai (Ex: cd ..). ~ Diretório HOME do usuário (Ex: cd ~).

cd Muda diretório corrente

cd /home/philippi #Caminho completo cd ../../usr #Caminho relativo cd - #Alterna para diretório anterior

pwd Mostra a path do diretório corrente.

ls Lista o conteúdo do diretório.

-l Lista detalhada. -a Mostra executável e ocultos. -b Número de links do arquivo. -m Mostra tudo em uma linha. -F Mostra \ dos diretórios. -x Mostra em colunas. (^3) Uma excelente apostila de referência sobre o GNU/Linux é encontrada em http://www.cipsga.org.br.

Apostila de Programação Para Linux/Unix www.lmpt.ufsc.br - Eng. André Duarte Bueno

CAPÍTULO 1. INTRODUÇÃO A PROGRAMAÇÃO GNU/LINUX, UNIX 13

ls -F | egrep / #mostra diretórios

tree Lista em árvore.

tree -d #Lista somente os diretórios

mkdir Cria diretório.

mkdir test mkdir d1 d2 #Cria diretórios d1 e d mkdir d1/d2 #Cria d1 e o filho d mkdir -p d3/d31/d32 #Cria os diretórios d3 d3/d31 d3/d31/d

mvdir Move ou renomeia um diretório.

rmdir Remove o diretório.

-R #Recursivo, elimina subdiretórios (usar com cuidado).

rmdir -p d3/d31/d32 #Remove todos os diretórios rm -R diretorio #Remove o diretório e seus sub-diretórios

Arquivos

cp a1 a2 Cópia arquivos e diretórios.

-b Cria backup de a2. -i Copia iterativa. -r Cópia recursiva. -P Cópia arquivo e estrutura de diretório. -p Preserva as permissões e horas. -v Modo verbose. -b Cria backup.

cp a1 a

mv Move arquivos (renomeia arquivos).

-b Cria backup. -v Modo verbose. -i Iterativa.

mv a1 a2 #Renomeia arq a1 para a mv d1 d2 #Renomeia dir d1 para d mv -b a1 a2 #Renomeia com backup

Apostila de Programação Para Linux/Unix www.lmpt.ufsc.br - Eng. André Duarte Bueno

CAPÍTULO 1. INTRODUÇÃO A PROGRAMAÇÃO GNU/LINUX, UNIX 15

head n Mostrar as primeiras n linhas de um arquivo.

head -5 nome.txt

tail n Exibe arquivo a partir de uma linha.

tail -20 nome.txt

nl Número de linhas do arquivo.

wc Número de linhas, de palavras e de bytes do arquivo.

cat arq1 Mostra conteúdo do arquivo arq1.

cat a1 a2 Mostra arquivos a1 e depois a

cat -n a2 Mostra conteúdo de a2 com numeração

cat f1 #Mostra arquivo f #Cria novo arquivo: cat > texto.txt ...digita o texto... contrl+d #Finaliza arquivo cat a1 a2 > a3 #Concatena a1 e a2 e armazena em a cat a > > b #Acrescenta ao final do arquivo b o arquivo a ls -la | cat -n

less arq Mostra conteúdo do arquivo (+completo)

#/str para localizar a string str no texto visualizado less arq #q para sair

file arq Informa o tipo de arquivo.

file * file * | egrep directory

tr Converte cadeias de caracteres em arquivos.

ls | tr a-z A-Z #de minúsculas para maiúsculas

xargs Facilita passagem de parâmetros para outro comando. xargs [opções][comando [opções]]

#Procura e deleta arquivos *.cpp

find /tmp -name "*.cpp" | xargs rm

Apostila de Programação Para Linux/Unix www.lmpt.ufsc.br - Eng. André Duarte Bueno

CAPÍTULO 1. INTRODUÇÃO A PROGRAMAÇÃO GNU/LINUX, UNIX 16

Pesquisa dentro de arquivos

grep O grep é usado para pesquisar o que tem dentro de um arquivo.

-n Mostra número da linha. -F O grep funciona como o fgrep. -c Retorna número de coincidências. -i Desconsidera maiúsculas/minúsculas. -s Desconsidera mensagens de erro. -v Modo verbose. -A n Lista também as n linhas posteriores. -B n Lista também as n linhas anteriores. -r Ordem inversa. -f Usa arquivo auxiliar.

man grep #Mostra detalhes do grep greep -v buble sort.c ls -l | egrep "Julia" #Lista diretório e pesquisa pelo arquivo julia ls -la | egrep "Sofia" grep ^[0-9] guide.txt grep "(b)" guide.txt grep arqAux guide.txt # Pesquisa em guide.txt usando arqAux

sort Ordena arquivos.

-c Verifica arquivo. -o Especifica nome arquivo saída. -d Ordem dicionário. -f Despreza diferença maiúscula/minúscula. -t Atualiza data e hora. -s Modo silencioso.

sort -r arquivo ls | sort -r #Ordem invertida #Ordena a listagem de diretório a partir da 4 coluna,considerando número ls -l |egrep rwx | sort +4n

Compactação e backup

zip Compatível com pkzip/pkunzip do DOS.

unzip Unzipa arquivos zip.

Apostila de Programação Para Linux/Unix www.lmpt.ufsc.br - Eng. André Duarte Bueno

CAPÍTULO 1. INTRODUÇÃO A PROGRAMAÇÃO GNU/LINUX, UNIX 18

tar O tar permite a você agrupar um conjunto de arquivos em um único, facilitando o backup (ou o envio pela internet). Pode-se ainda compactar os arquivos agrupados com o gzip.

-c Cria novo arquivo. -v Modo verbose. -z Descompacta arquivos (*.tar.gz). -f NomeArquivo. -w Modo iterativo. -r Acrescenta no modo apende. -x Extrai arquivos. -A Concatena arquivos. -d Compara diferenças entre arquivos.

  • -delete Deleta arquivos. -t Lista o conteúdo do arquivo. -u Atualiza o arquivo. -N Após a data tal. -o Extrai arquivos para monitor. -w Iterativa. -C Muda o diretório. -G Backup incremental.

#Empacotando origem em destino tar -cf origem > destino.tar #Empacotando e já compactando tar -cvzf destino.tar.gz origem #Desempacotando tar -xf nome.tar tar -xzvf nome.tgz tar -xzvf nome.tar.gz tar -xvwf nome.tar #Backup completo no dispositivo /dev/fd tar cvfzM /dev/fd0 / #Backup tar xvfzM /dev/fd0 #Restauração

Diversos

[]* Metacaracter.

[?] Caracter coringa.

clear Limpa a tela.

date Mostra data e hora.

date -s ¨8:50¨ #Acerta hora para 8:

Apostila de Programação Para Linux/Unix www.lmpt.ufsc.br - Eng. André Duarte Bueno

CAPÍTULO 1. INTRODUÇÃO A PROGRAMAÇÃO GNU/LINUX, UNIX 19

1.2.2 Expressões regulares^3

Alguns programas do GNU/Linux aceitam o uso de expressões regulares (principalmente os da GNU). O uso de expressões regulares é útil nas pesquisas de arquivos com find, no uso do emacs, entre outros. Alguns caracteres são usados para passar parâmetros para o interpretador das expressões regulares, para usá-los na pesquisa, deve-se preceder o caracter com /. Veja abaixo alguns exemplos de expressões regulares.

[xyz] Qualquer das letras dentro do colchete.

[^xy] Exceto x e y.

[t-z] De t até z (tuvwxyz).

[a-zA-Z] Qualquer letra.

[0-9] Qualquer número.

^ No início do parágrafo.

$ No fim do parágrafo.

< No início da palavra.

<search Palavra que inicia com search.

> No fim da palavra.

>search Palavra que termina com search.

z* Letra z, 0 ou mais vezes: z,zz,zzz,zzzz,...

Z+ Letra Z, 1 ou mais vezes.

A? Letra A pode ou não fazer parte.

revistas? revista ou revistas.

A{m} Letra A m vezes.

[0-9]{3} Número de 3 dígitos.

Z{3,5} Letra Z de 3 a 5 repetições zzz,zzzz,zzzzz

K{,7} Até 7 repetições de K.

K{3,} No mínimo 3 repetições de K.

{0,} O mesmo que *.

{1,} O mesmo que +.

{0,1} O mesmo que ?.

() Usado para deixar a expressão mais clara (precedências).

Apostila de Programação Para Linux/Unix www.lmpt.ufsc.br - Eng. André Duarte Bueno