Introdução ao Linux (Comandos básicos) Agosto/2013 Introdução Foi desenvolvido por Linus Torvalds, com o propósito de ser uma alternativa barata e funcional. O Linux está dividido em diversas distribuições, para serem baixadas e instaladas em sua máquina. Caracteristicas - Multitarefa - Multiusuário - Suporte a nomes extensos (255 caracteres) - Sistema operacional de código aberto - Licenças para utilização - Implementação de servidores com um baixo custo e alta performance Contas • Conta é a maneira pela qual o usuário se identifica no sistema operacional O sistema de contas e usuários já vem junto com o Linux desde a sua concepção, uma vez que trata-se de um sistema voltado para ambientes em rede. Além do fator segurança, que garante que cada usuário faça somente aquilo que tem permissão de fazer (e não danifique o sistema), tem-se o fator de identificação que garante que só o usuário poderá alterar seus documentos/arquivos. Iniciando uma seção Linux • Nome de usuário e senha são criadas pelo administrador do sistema. Login: seu_login Senha: sua_senha Seção Linux: Iniciando e Finalizando • Abrir terminal Clique em: Aplicativos -> Acessórios -> Terminal • Para sair: Usa -se o comando “exit” Armazenamento da informação • Os arquivos e diretórios se organizam com uma estrutura hierárquica, em forma de árvore Caracteres coringas Para nos referirmos a múltiplos arquivos de nomes similares usamos os caracteres coringas: • “?” substitue qualquer caracter Exemplo: ls te??e.txt • “*”substitue uma sequência de caracteres Exemplo: ls *.txt Permissões de Acesso Quando um usuário lista as informações detalhadas de um arquivo (ls -ltr) ou diretório, a informação retornada inclui as permissões de acesso: -rwxrwxrwx Ex: drwxrw-r-- 2 -rwxrw-r-- 1 curso curso curso curso 4096 4096 Jan Dec 29 16 10:30 10:41 Arquivos notas.txt - ou d - Indica se o objeto listado é um arquivo(-) ou diretório(d) rwx - Permissões do usuário rw- - Permissões do grupo r-- - Permissões de outros Permissões de Acesso Modo Valor Cada modo de acesso tem um valor numérico associado a ele conforme a tabela : Octal Escrita 777 rwxrwxrwx 755 rwxr-xr-x 700 rwx-----666 rw-rw-rw- Dono rwx rwx rwx rw- Descrição - 0 Nenhuma permissão x 1 Execução w 2 Gravação wx 3 Gravação e Execução r 4 Leitura rx 5 Leitura e Execução rw 6 Leitura e Gravação rwx 7 Leitura,Gravação e Execução Grupo Outros rwx rwx r-x r-x ----rwrw- Principais Comandos do Sistema Operacional • alias Permite criar um atalho ou um apelido a um comando que você usa constantemente Ex: alias home=/home2/doc/figuras • at Agenda um comando, um script ou um programa a ser executado em data e hora específica. Também é possível usar este comando para exibir as tarefas agendadas existentes. Ex: echo ls /var/log | at 10am today Ex: at -f commands.txt +3 minutes Todas as tarefas agendadas são armazenadas em arquivos dentro do diretório /var/spool/cron/atjobs. Para ver as tarefas, digite: => atq Para remover uma tarefa, use comando "atrm" seguido do número da tarefa obtida pelo atq. Principais Comandos do Sistema Operacional • apropos word Pesquisa nas páginas de manuais exitentes no sistema, e lista os comandos/programas que atendem a consulta. Ex: apropos alias • basename pathname/file Remove os diretórios, mostrando somente o nome do arquivo. Outra aplicação interessante é o uso deste comando para remoção da extensão. Ex: basename /home2/doc/teste.txt Ex: basename /home2/doc/teste.txt .txt Principais Comandos do Sistema Operacional • cd <pathname> Muda o diretório de trabalho Ex: cd curso/linux Ex: cd ../.. • chmod <nU><nG><nO> <file> Muda a permissão de um arquivo ou diretório nU=usuario nG=grupo nO=outros Ex: chmod 777 teste.txt nU nG nO • clear Limpa a tela Ex: clear Principais Comandos do Sistema Operacional • cp <file1 file2> Copia arquivos ou diretórios Ex: cp teste.txt teste2.txt Ex: cp -R dir1 dir2 (-R opção para copiar diretórios) Ex: cp ../twin.doc . c • cmp <file1 file2> Compara dois arquivos Ex: cmp fort.20 fort.100 fort.20 e fort.10 são diferentes: byte 4, linha 1 Principais Comandos do Sistema Operacional • cat [opções] [files] e – imprimi $ no final de cada linha Lê um ou mais arquivos e imprime -os com uma saída padrão. Ex: cat ch1 Podemos usar: • O operador > para combinar muitos arquivos dentro de um novo arquivo ; Ex: cat ch1 ch2 ch3 > all.txt • O operador >> para anexar um arquivo em outro arquivo diferente; Ex: cat ch1 > > ch10.txt Principais Comandos do Sistema Operacional • crontab [opções] -e: edita o crontab ou cria um caso ainda não exista; -l: mostra o conteúdo do crontab; -r: remove o crontab; -v: mostra quando foi a última vez que o crontab foi editado (disponível em apenas alguns sistemas). Executa tarefas específicas em horários específicos: m h mês dia_semana e o programa Ex:00 3,4,5 * * * root /usr/local/sbin/backup.sh Ex:40 16 1 6-8 * /home/doc/script.sh Principais Comandos do Sistema Operacional • cut [opções] [files] -cn imprime uma lista com o caractere número -d usa com o parametro -f especificando o campo delimitador -fn imiprimi a coluna número Seleciona uma lista de colunas ou campos para um ou mais arquivos Ex: cut -d “:” f 1,5 /etc/passwd Ex: cut -c4 file.txt • cp <file1 file2> Copia arquivos ou diretórios Ex: cp teste.txt teste2.txt Ex: cp -R dir1 dir2 (-R opção para copiar diretórios) Ex: cp ../twin.doc . Principais Comandos do Sistema Operacional • date Mostra a data e hora corrente Ex: date • df Mostra informações de espaço em disco Ex: df -k . • du Mostra o espaço ocupado por um arquivo ou diretório Ex: du -ks Ex: du -sh Principais Comandos do Sistema Operacional • diff <file1> <file2> sdiff Faz uma comparação entre dois arquivos Ex: diff teste.txt twin.doc • dirname pathname Útil para extrair o nome real caminho Ex:diretório/texte.txt • echo <message> Exibe uma mensagem na tela Ex: echo Curso de Linux Principais Comandos do Sistema Operacional • file files Mostra o tipo do arquivo Ex: file ascii • find <pathname> -name <file> -print Mostra a localização de um arquivo Ex: find /home/curso/linux -name “teste.txt” -print Ex: find . -name “teste.txt” -print • finger [options] users Mostra informações sobre um ou mais usuários Ex: finger -s meta Principais Comandos do Sistema Operacional • grep [opções] <file> -i faz pesquisa sem diferenciar maiúscula de minúscula. -n mostra a linha que o texto esta no arquivo Procura textos e expressões dentro do arquivo Ex: grep Linux teste.txt • head [-n] files Imprimi as primeiras linhas de um ou mais arquivos. * -n : numero de linhas que quer imprimir. Ex: head -20 teste.txt Ex: grep '(15)' teste.txt | head Principais Comandos do Sistema Operacional • history Lista alguns dos últimos comandos que você digitou Ex: history 1064 cd dbs 1065 export CDPATH=/opt/oracle/product/11gR2/db1 1066 cd dbs 1067 pwd Tem a capacidade de reexecutar um comando sem digitá-lo novamente. • ! seguido pelo evento ou número do comando que precede o respectivo nome no histórico. # !1066 cd dbs • !! (dois pontos de exclamação) executa novamente o último comando aplicado. Principais Comandos do Sistema Operacional • history Lista alguns dos últimos comandos que você digitou Ex: history 1064 cd dbs 1065 export CDPATH=/opt/oracle/product/11gR2/db1 1066 cd dbs 1067 pwd Tem a capacidade de reexecutar um comando sem digitá-lo novamente. • ! seguido pelo evento ou número do comando que precede o respectivo nome no histórico. # !1066 cd dbs • !! (dois pontos de exclamação) executa novamente o último comando aplicado. Principais Comandos do Sistema Operacional • gzip <file> Compacta ou descompacta arquivos Ex: gzip texto (compacta) Ex: gzip -d texto.gz (descompacta) • ls [opções] Lista o conteúdo do diretório corrente Ex: ls -l Ex: ls –ltr • kill [opções] Ids Termina um processo específico e também reinicia um processo Ex: kill -9 122 Ex: kill -HUP 123 Principais Comandos do Sistema Operacional • killall name Termina um processo Ex: killall nome_do_processo • less [opções] [file] Faz a paginação de arquivos ou da entrada padrão. Ex: less teste Para ver o manual on-line sobre o comando ls , numerando as suas linhas e mostrando a partir da linha 20, basta digitar: man ls | less -N +20 Principais Comandos do Sistema Operacional • ln [opções] file1 file2 -n não sobrescreve arquivos existentes -f força a criação de um link mesmo que este já exista -s cria um link simbolico Cria um pseudonome (link) entre arquivos Ex: ln –fn name_origem name_destino • man <comando> Mostra na tela explicações sobre o comando Ex: man find Ex: man ls Principais Comandos do Sistema Operacional • mkdir <diretório> Cria um diretório Ex: mkdir hoje • more <file> Mostra o conteúdo do arquivo Ex: more teste.txt • mv <file1> < file2 > Move o arquivo1 para o arquivo2 e também move arquivos para outros diretórios Ex: mv teste.txt teste4.txt Ex: mv teste4.txt dir1 Ex: mv dir1 dir3 Principais Comandos do Sistema Operacional • nohup comando & Continua executando o comando, em segundo plano Ex: nohup comando_demorado & • ping [site/IP] Executa um teste de conexão para se descobrir se um determinado equipamento de rede está funcionando Ex: ping www.google.com.br Ex: ping -c 5 www.google.com.br • ps [opções] -e lista todos os processos -f mostra uma lista completa Mostra os processos ativos Ex: ps -ef Ex: ps -aux Principais Comandos do Sistema Operacional • ps [opções] -e lista todos os processos -f mostra uma lista completa Mostra os processos ativos Ex: ps -ef Ex: ps -aux • pwd Mostra o diretório corrente Ex: pwd • rm <file> Remove arquivos Ex: rm teste2.txt Principais Comandos do Sistema Operacional • rmdir <diretório > Remove diretórios (este diretório deve estar sem arquivos) Ex: rmdir dir2 hoje • sleep segundos Espera determinados segundos antes de executar outro comando. Ex: sleep 30 • sort [opções] [files] -b organiza em ordem numérica -f ignora a diferença entre maiúsculas e minúsculas -r organiza em ordem decrescente Organiza as linhas de um arquivo texto ou da entrada padrão Ex: sort twin.doc Principais Comandos do Sistema Operacional • tail [opções] [file] -n[N] mostra a N ultimas linhas -c mostra os ultimos caracteres Mostra as últimas 10 linhas(padrão) do arquivo Ex: tail -n 2 tail1.txt ou tail -2 tail1.txt Ex: tail -c 10 tail1.txt • time [comando] Mostra o resultado do comando e o tempo que levou para ser executado. Ex: time ls -ltr Principais Comandos do Sistema Operacional • touch [opções] [date] files -t datahora:muda a hora e a data para o datahora definidos. É usado para criar arquivos. Além disso ele ainda pode mudar a data e a hora de acesso e ou modificação de arquivos. Ex: touch file1.txt Ex: touch -t 201308181033.10 testando.txt • unlimit [opções] Permite controlar os recursos disponibilizados para o shell e pelos processos inicializados por ele. Ex: ulimit -a Ex: ulimit -f 300 ulimit -f 300 Principais Comandos do Sistema Operacional • tar -<cvf , xvf > <filename.tar> <files> tar -cvf (empacota arquivos) tar -xvf (faz a extração de arquivos empacotados) Ex: tar -cvf todos.tar * Ex: tar -xvf todos.tar • wc <file> Conta as linhas,palavras ou caracteres de um arquivo Ex: wc -l twin.doc (linhas) Ex: wc -w twin.doc (palavras) Ex: wc -c twin.doc (caracteres) • which <name> Mostra o caminho completo para os executáveis Ex: which grads Principais Comandos do Sistema Operacional • whoami Mostra o nome do usuário logado Ex: whoami • wget [opções] site/arquivo -r: baixa site de forma recursiva -F: força o arquivo de entrada a ser tratado como arquivo HTML -c: continua o download de onde ele parou Baixa páginas web e arquivos da mesma Ex: wget –r www.ositequesequerbaixar.dominio Ex: wget www.origem.dominio/arquivos um Comando sed – filtra e transforma conteúdo Sintaxe: sed <comando/expressão> <arquivo> O comando sed é um poderoso processador de texto que dentre muitas de suas ações, pode substituir ocorrências de texto por outros textos. Por exemplo: => more texto.txt Eu gosto de ler. Sem ler eu não seria nada, ficaria completamente triste, deprimida. Também acredito que todo ser humano precisa ler. Comando sed – filtra e transforma conteúdo Agora vamos substituir a palavra ler por Linux: sed "s/ler/Linux/g" texto.txt Eu gosto de Linux. Sem Linux eu não seria nada, ficaria completamente triste, deprimida. Também acredito que todo ser humano precisa de Linux. No exemplo acima: •(s) procura as ocorrências de ler e transformá-las para Linux. •(g) substitui todas as ocorrências da linha. Comando sed – filtra e transforma conteúdo Você também pode preferir substituir o texto e alterar o arquivo diretamente (ao invés de aparecer apenas na tela). Para fazer isso, use o parâmetro -i: $ sed -i "s/ler/Linux/g" texto.txt Cuidado: O -i vai sobrescrever o arquivo original e você não poderá usar o Ctrl+Z. Comando sed – filtra e transforma conteúdo Mas combinando o -i com uma extensão, ele cria um backup pra você antes de substituir: sed -i.backup "s/ler/Linux/g" texto.txt •Cria o arquivo texto.backup com o texto original, e o arquivo texto.txt estará modificado. •Inseri 5 espaços no incio de cada linha cat arquivo.txt | sed 's/^/ /' Comando sed – filtra e transforma conteúdo • Inclui texto no início da linha N cat arquivo.txt | sed '10s/^/textoinserido/' • Deleta a linha N sed '2d‘ • Imprimi somente entre as linha N e M cat arquivo.txt | sed '2,5!d' • Edita linha específica do texto. sed -i '3s/^/vento/' /home/arquivo.txt Comando awk • É possível gerenciar tarefas simples de "reformatar dados" com apenas algumas linhas de código. • Função básica do: awk é procurar por linhas (ou outras unidades de texto) em arquivos que possuem certos padrões especificados no programa. • Algumas opções do comando: -f : especifica o nome do arquivo que possui o conjunto de padrões a ser usado. -F : define quem é o separador de campos (o padrão é o espaço). Comando awk Exemplos: Vamos tomar como base o arquivo teste.txt, que tem o seguinte conteúdo: Comando awk Mostrar na tela a primeira coluna do arquivo teste.txt: cat teste.txt | awk '{print $1}' 52 102 202 Ou seja, print $1 -> Exibe a primeira coluna; print $2 -> Exibe a segunda coluna e assim por diante; print $NF ->Exibe a última coluna. Comando awk Suponha que eu necessite vasculhar esse arquivo texte.txt e mostrar as quatro primeiras palavras . Vou usar o comando cat para mostrar que o awk pode ser combinado com os comandos do shell: $ cat teste.txt | awk -F ":" '{print substr($3,1,4)}' COLO CALI PERU Comando awk {print substr($2,1,4)}' -> Exibe a segunda coluna do primeiro ao quarto caractere. Após mostrar esse resultado, filtrar um campo específico, por exemplo “Cali": $ cat texte.txt | awk -F ":" '{print substr($3,1,4)}' | grep Cali Comando awk Filtrar para descobrir todos os campos de 183202 até 183206 cat texte.txt | awk '{if (($1) >= "183202" && ($1) <= "183206") print}‘ 183202 183203 183204 183205 183206 Obs.: Neste último exemplo temos uma condição que deve ser atendida, se verdadeira, exibe o resultado encontrado. Caracteres Especiais • > Redireciona a saída do comando especificado Ex: ls -la * > lista.txt • < Redireciona a entrada para o comando especificado Ex: mail < conteudodoemail • >> Redireciona a saida do comando para o fim do arquivo Ex: ls -la dir3 >> lista.doc Caracteres Especiais • $variável Fornece o conteúdo da variável de ambiente Ex: $PATH • & Faz com que um processo seja executado em background Ex: nedit teste.txt & • \ Anula a função do metacaracter Ex: nedit \& • | Utiliza a saída do comando1 como entrada do comando2 Ex: ls -la * | wc -l Combinações de Teclas • Ctrl + a Move o cursor para o início da linha de comandos • Ctrl + e Move o cursor para o final da linha de comandos • Ctrl + c Suspende a execução de um comando • Ctrl + d Logout de uma sessão do shell • Ctrl + z Suspende um programa Edição de textos Existe uma grande variedade de editores de texto no Linux, os mais usados são: •nedit <filename> •gedit <filename> •kedit <filename> •vi Transferência de arquivos via SFTP • SFTP significa Security File Transfer Protocol, é uma forma bastante rápida e versátil de transferir arquivos de maneira segura. • sftp <user@machine> Ex: sftp gracielle@tupa Principais Comandos SFTP • get <file> Baixa os arquivos do servidor Ex: get teste.txt • put <file> Envia arquivos para o servidor Ex: put teste.txt • lcd <diretório> Acessa o diretório local Ex: lcd /home/curso Principais Comandos SFTP • cd <diretório> Acessa o diretório remoto Ex: cd /temp/prev • ls Lista os arquivos e diretorios dentro do servidor Ex: ls • lls Lista os arquivos e diretorios locais Ex: lls Principais Comandos SFTP • mget <files> Baixa múltiplos arquivos do servidor Ex: mget *.txt • mput <files> Envia múltiplos arquivos para o servidor Ex: mput *.txt • rm <file> Apaga arquivos do servidor Ex: rm teste.txt Principais Comandos SFTP • lrm <file> Apaga arquivos localmente Ex: lrm teste.txt • pwd Exibe o diretório corrente do servidor Ex: pwd • lpwd Exibe o diretório corrente local Ex: lpwd Principais Comandos SFTP • mkdir <diretório> Cria um diretório no servidor Ex: mkdir curso2 • lmkdir <diretório> Cria um diretório localmente Ex: lmkdir curso2 • quit Finaliza a conexão sftp Ex: quit Interpretador de comandos O Interpretador de Comandos(“Shell”) é responsável pela decodificação e execução de comandos inseridos pelo teclado do usuário Para conferir qual o interpretador padrão de seus comandos, em seu terminal digite: echo $SHELL O interpretador de comandos faz distinção entre letras maiúsculas e minúsculas Ex: (user User) Scripts em Shell Um Shell Script é um arquivo de texto simples composto por diversas linhas de comandos. Para se executar um script basta entrar com o nome dele no prompt. Principais tipos de shell: Bourn Shell - é o shell padrão para Unix, ou seja, a matriz dos outros shells, portanto é um dos mais utilizados. É representado por "sh". Korn Shell - este shell é o Bourne Shell evoluído, com a vantagem de ter mais opções. É representado por "ksh". C Shell - possui uma sintaxe muito parecida com a linguagem C. Este tipo de shell já se distancia mais do Bourne Shell, portanto quem programa em cshell terá problemas quanto a portabilidade em outros tipos. É representado por "csh". Exemplos de script Exemplos de script (contador) Exemplos de script • if then fi if [[ $value -eq 10 ]];then print "$value is 10" fi ou: if [[ $value -eq 10 ]] then print "$value is 10" fi Exemplos de script if [[ $value -eq 10 ]];then print "$value is 10";fi •if then else fi if [[ $name = "John" ]];then print "Your welcome, ${name}." else print "Good bye, ${name}!" fi Exemplos de script • if then elif then else fi if [[ $name = "John" ]];then print "Your welcome, ${name}." elif [[ $name = "Hanna" ]];then print "Hello, ${name}, who are you?" else print "Good bye, ${name}!" fi Executando Scripts Para executar um script basta digitar o nome do mesmo no prompt de comando cd scripts exemplo.sh exemplo2.ksh exemplo3.csh Lista de Exercícios 1 - Crie um diretório chamado exercicios. 2 - Entre no diretório exercicios e crie os diretorios exe1, exe2, exe3. 3 - Liste os diretórios. 4 - Dentro do diretório exe1, crie um script chamado documento.csh com o com o conteúdo: #! /bin/csh echo “Script do exercicio: Listando diretórios” ls -la ../../* > teste.txt exit 5 - Exiba o conteúdo do script documento.csh. Lista de Exercícios 6 - Configure a permissão do script documento.csh dando permissões de leitura,escrita e execução para o usuário e somente de leitura para grupo e outros. 7 - Execute o script documento.csh. 8 - Mova o script documento.csh para o diretório anterior. 9 - Remova o diretório exe1. 10 - Procure no script documento.csh pela ocorrência da expressão exercicio. 11 - Copie documento.csh para documento2.csh. 12 - Limpe a tela, exiba o tamanho em KB ocupado pelo diretório e o total de espaço disponível no disco. Lista de Exercícios 13- Faça um script que imprima quantos processos estão atualmente em execução na sua máqina. 1415- Crie um script que mostre o espaço utilizado pelos arquivos dentro do seu diretório da sua conta no sistema, colocando em ordem numérica o resultado. Use os comandos du e sort.