Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 15 Sumário • Comandos externos; • Exercícios. 2 Comandos externos • Comandos básicos: – ls: lista o conteúdo de um diretório. Alguns parâmetros: -R lista os subdiretórios recursivamente; -S -t ordena pelo tamanho (-S) ou pela hora de modificação(-t); -a mostra arquivos ocultos (iniciados por .); -l uKliza formato longo para mostrar atributos de arquivos; – cat: envia o conteúdo do arquivo para a saída padrão. O parâmetro -n faz com que as linhas do arquivo sejam numeradas; – tac: similar ao cat, porém as linhas do arquivo são mostradas da úlKma para a primeira; – rev: envia o conteúdo do arquivo para a saída padrão. O conteúdo de cada linha é exibido de trás para frente, mas mantém a ordem das linhas; 3 Comandos externos • Comandos básicos (cont.): – cp: cópia de arquivos. Algumas opções: -R, -r copia diretórios recursivamente; -v mostra os arquivos que estão sendo copiados; – mv: move arquivos. Também uKlizado para renomear; – rm: remove arquivos. Alguns parâmetros: -R, -r remove diretórios recursivamente; -v mostra os arquivos que estão sendo removidos; – mkdir, rmdir: respec. cria e remove diretórios vazios; – chmod: muda os atributos de arquivos e diretórios; 4 Comandos externos • Comandos básicos (cont.): – man, info: fornecem informações sobre o funcionamento dos comandos externos; – history: lista o histórico de comandos executados; – find: localiza um arquivo ou diretório; • Exemplo: procura a parKr do diretório home ($HOME) arquivos que possuam a palavra aula15 no nome: find $HOME -name "*aula15*" 5 Comandos externos • Comandos para manipulação de data e hora: – date: mostra ou altera a data e a hora do sistema; • Exemplos: date –s "2021/01/31 21:21:21" echo `date +%d`/`date +%m`/`date +%Y` echo `date +%H`:`date +%M` date –d "2013/01/01" +%A – at: agenda um aplicaKvo para executar automaKcamente em determinada data/hora; • Exemplos: at 21:21 ./meu_script.sh at 1 /DELETE (apaga o job de id=1 da agenda) 6 Comandos externos • Comandos para manipulação de data e hora (cont.): – cal: mostra um calendário na tela; • Exemplos: cal (exibe o calendário do mês atual) cal –y 2013 (exibe o calendário do ano de 2013) – sleep: suspende a execução por uma dada quanKdade de segundos. • Exemplos: sleep 10 (aguarda 10s e conKnua...) sleep 10s (aguarda 10s e conKnua...) sleep 10m (aguarda 10 minutos e conKnua...) sleep 10h (aguarda 10 horas e conKnua...) sleep 10d (aguarda 10 dias e conKnua...) 7 Comandos externos • Comandos para processamento de texto: – sort: mostra um arquivo em ordem alfabéKca; • Exemplo: ordena o arquivo agenda.txt e salva no próprio arquivo sobrescrevendo o conteúdo anterior: sort agenda.txt –o agenda.txt – uniq: remove linhas duplicadas adjacentes; – head: envia as primeiras linhas de um arquivo para a saída padrão; • Exemplo: exibe na tela 5 primeiras linhas do arquivo agenda.txt head -n 5 agenda.txt 8 Comandos externos • Comandos para processamento de texto (cont): – tail: similar ao comando head. Envia as úlKmas linhas de um arquivo para a saída padrão. Com o parâmetro -f o comando conKnua exibindo novas linhas que são adicionadas ao arquivo (úKl para arquivos de log); • Exemplo: exibe na tela 8 úlKmas linhas do arquivo agenda.txt tail -n 8 agenda.txt – wc: conta a quanKdade de linhas (-l), palavras (-w) ou caracteres (-m) em um arquivo; – nl: exibe um arquivo na saída padrão com suas linhas numeradas. 9 Comandos internos • Exemplo head + tail: podemos uKlizar estes comandos em conjunto para listar um conjunto de linhas que se encontra no meio de um arquivo: – os comandos abaixo exibem as linhas 4, 5 e 6 de um arquivo chamado teste.txt: head –n 6 teste.txt | tail –n 3 10 Comandos externos • Comandos para arquivamento: – tar: agrupa vários arquivos em um único arquivo (pacote); –cf criar um novo pacote; –xf extrair arquivos de um pacote; –tvf listar arquivos de um pacote; • Exemplos: tar –cf pacote.tar arq1.txt arq2.txt tar –tvf pacote.tar tar –xf pacote.tar 11 Comandos externos • Comandos para arquivamento: – gzip: realiza a compressão de um arquivo. UKlizado em conjunto com tar quando é necessário fazer a compressão de vários arquivos; –z comprime o arquivo resultante; • Exemplos: tar –zcf pacote.tar arq1.txt arq2.txt tar –tvf pacote.tar tar –zxf pacote.tar 12 Comandos externos • Comandos do sistema: – uname: exibe informações sobre o sistema; – free: mostra o total de memória RAM e swap uKlizada pelo sistema; – du: mostra o total de espaço em disco uKlizado (recursivamente) por arquivos e/ou diretórios; – df: mostra a uKlização dos discos/parKções; 13 Exercício resolvido • Escrever um script que receba como argumentos duas datas (inicio e fim do semestre leKvo) e imprima na tela todas datas com respecKvos dias dasemana em que temos aulas de programação para servidores, ou seja, segundas e terças. Exemplo: ./diasLetivos.sh "2013-02-04" "2013-07-01" 2013-02-04 segunda-feira 2013-02-05 terça-feira 2013-02-11 segunda-feira 2013-02-12 terça-feira ... ... 2013-06-18 terça-feira 2013-06-24 segunda-feira 2013-06-25 terça-feira 14 Exercício resolvido if [ $# -ne 2 ]; then echo "Número inválido de parâmetros" exit 1 fi if ! date -d $1 > /dev/null 2> /dev/null; then echo "Data inválida: $1" exit 1 fi if ! date -d $2 > /dev/null 2> /dev/null; then echo "Data inválida: $2" exit 1 fi 15 Exercício resolvido d1=`date -d $1 +%d` m1=`date -d $1 +%m` a1=`date -d $1 +%Y` d2=`date -d $2 +%d` m2=`date -d $2 +%m` a2=`date -d $2 +%Y` if [[ $a2 -lt $a1 || ($a2 -eq $a1 && $m2 -lt $m1) || ($a2 -eq $a1 && $m2 -eq $m1 && $d2 -le $d1) ]]; then echo "Data $2 deveria ser posterior à data $1" exit 1 fi 16 Exercício resolvido currDate=$1 while ! [ $currDate = $2 ]; do ds=`date -d $currDate '+%A'` if [ $ds = "segunda-feira" ] || [ $ds = "terça- feira" ]; then echo -e "$currDate \t $ds" fi currDate=`date -d "$currDate + 1 day" '+%F'` done 17 Exercícios • Fazer os seguintes scripts: 1. Que receba um nome de arquivo como parâmetro e exiba seu conteúdo na tela completamente de trás para frente, como no exemplo: 18 cat agenda.txt ./script_ex01.sh agenda.txt Alex 321-1231 rua y Bruna 9805-1134 rua kkk Daniel 1341-1234 rua z Jorgete 1233-1121 rua h Zuleica 1231-9999 rua x x aur 9999-1321 acieluZ h aur 1211-3321 etegroJ z aur 4321-1431 leinaD kkk aur 4311-5089 anurB y aur 1321-123 xelA Exercícios 2. Elaborar um script que: a) Apresente ao usuário um menu com as seguintes opções: 1 – Exibir status da uKlização das parKções do sistema; (comando df -h) 2 – Exibir a relação de usuário logados; (comando who) 3 – Exibir a data no formato dd/mm/aaaa; (comando date) 4 – Exibir a hora no formato hh:mm; (comando date) 5 – Sair (comando exit). b) Em seguida, leia a opção escolhida pelo usuário; c) Execute o que for pedido; d) Imprima a mensagem “Digite <ENTER> para conKnuar...”; e) Aguarde o usuário pressionar <ENTER>; f) Volte ao passo a). 19 Exercícios 3. Faça um script que liste o conteúdo de todos os diretórios passados como parâmetros através da linha de comando. Antes de cada listagem, o script deve imprimir o seguinte cabeçalho, onde XXXX é o nome da pasta que será listada: --------------------------------------- Listagem da pasta XXXX --------------------------------------- 4. Use o comando tail para monitorar as atualizações em um arquivo. • Para isso, abra duas janelas do Shell. Em uma delas digite o comando tail –f teste.txt. O arquivo deve exisKr. Na outra janela, digite echo "qq coisa" >> teste.txt para adicionar conteúdo ao arquivo que está sendo monitorado e veja o que ocorre na primeira janela. 20
Compartilhar