We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.
Eba! Obrigado :)
Caramba, só fui o ganhador na demonstração! Não tem prêmio de consolação? (sem trocadilhos, por favor)
Quer prêmio melhor do que aparecer num vídeo nerd que somente meia dúzia de gatos pingados assistirão? :)
E aquela linhazinha verde logo após os comandos, comofas?
Matheus e Aurélio:
Fiz um prompt bacana inspirado nesse do Verde:
array=("◤ " ">" "➔" "▶" "▷" ">")¬
42 export PS1="\[\e[0;35m\]⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯\n${array[$RANDOM % 5]} \[\e[0;37m\]"¬
Usa símbolos bacanas UTF-8 (aleatoriamente) e a barra horizontal é mais bonita que hífens concatenados.
Ficou tudo esculhambado aí em cima. Novamente:
array=("◤ " ">" "➔" "▶" "▷" ">")
export PS1="\[\e[0;35m\]⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯\n${array[$RANDOM % 5]} \[\e[0;37m\]"
Usa símbolos bacanas UTF-8 (aleatoriamente) e a barra horizontal é mais bonita que hífens concatenados.
Daniel, que ideia criativa, gostei! Porém, para uso no prompt, eu prefiro algo fixo, sempre igual.
Ah, eu também usei o emdash — em vez do hífen - na linha, mas naquela fonte que eu uso no Terminal, o emdash não é tão longo quando deveria ser, aí fica os intervalos entre eles :(
Matheus, basta colocar os hífens (ou qualquer outro caractere) diretamente na variável PS1, usando um \n pra quebrar a linha. A manha é colocar o número exato de hífens para caber no tamanho da janela. Se aumentar ou diminuir o tamanho da janela, a mágica acaba :)
Exemplo: PS1='------------------\nprompt$ '
Daria pra iterar os hifens de acordo com $COLUMNS. Como daria pra fazer isso dentro de PS1?
Dá pra fazer com esta técnica:
prompt$ linha="-----------------------"
prompt$ num=5
prompt$ echo ${linha:0:$num}
-----
prompt$
A ideia é ter uma variável com um número enorme de hífens e depois fazer o "corte" para o número desejado. No caso a $COLUMNS entraria no lugar da $num do exemplo. Basta colocar isso dentro do PS1 e pronto.
Ao mudar o tamanho da janela, tem que fazer um "source ~/.bashrc" ou similar pra atualizar o prompt conforme o tamanho novo.
Aurélio, como tu mudou o cursor de selecionar texto? Só substituiu o icone.tiff? Por que usar o circulo no lugar do I-Beam?
Ah, não mudei o cursor não, é uma opção do Quicktime que adiciona o círculo na hora que eu clico no mouse, pra identificar os cliques no vídeo.
muito prático, achei que ia ser um script complexo à começar a parte de extrair somente os nomes mas foi tudo muito simples e funcional.
bacana parabéns!
Prefiro as soluções mais simples, mesmo que não sejam elegantes. Assim é mais divertido :)
Aurélio,
É isso que faz dos seus vídeos os melhores que eu já assisti até aqui. É sério, tem gente como eu que aprende infinitamente mais assim do que com o livro. Nossa, seria demais se vc fizesse vários do tipo. Uma idéia:
Tem um professor da fatec que está usando a plataforma pingmind para ensinar lógica de programação através do python e a didática dele tb é muito boa. Seria o máximo vc lançar um curso lá oq acha?
Segue o link do que mencionei:
Massa Aurélio! Gostei e me identifiquei também, às vezes essas soluções não tão convencionais aos outros, acabam sendo verdadeiramente mais simples, naquele jeitinho verde de fazer as coisas.
Grande Verde!!!!
Só pra constar: eu também li até o fim… :-p
E o seu prompt ficou muito legal… tanto que me inspirou e agora o prompt do meu Mac ficou assim (ver captura em http://db.tt/ZkLf5dDT)
Obs. OK, eu copiei na cara dura a idéia da linha separando os comandos, mas o meu está feito de uma forma diferente… :-)
Veja abaixo a linha que define o meu PS1 (caso alguém queira usar como está ou apenas usar como “inspiração”)…
export PS1="\e[4;36m`for i in $(seq 1 $(tput cols)) ; do echo -n ' ' ; done`\e[0;1;7;36m\n \h ❯ \w \e[0;1;33;40m►\e[0m "
desse jeito ele "monta" a linha com a quantidade certa de caracteres antes do Enter.
Obs. P/ favor apague o outro comentário q eu postei no lugar errado... :-/
Abraços,
Cristiano
Deixa eu complementar o que eu tinha dito antes...
Na vdd, eu não chamei o comando diretamente no .bashrc...
Para resolver a questão do tamanho da janela x tamanho da "linha", eu fiz algumas coisas:
- coloquei o comando "export" dentro de uma função;
- chamei esta função para "setar" o PS1 inicial;
- usei o comando "trap" para chamar novamente a função cada vez que a janela for redimensionada.
O código todo ficou assim:
# função que configura o PS1
set_PS1 () {
if [[ "$LINES $COLUMNS" != "${previous_lines:-$(tput lines)} ${previous_columns:-$(tput cols)}" ]] ; then
export PS1="\e[4;36m`for i in $(seq 1 $(tput cols)) ; do echo -n ' ' ; done`\e[0;1;7;36m\n \h ❯ \w \e[0;1;33;40m►\e[0m "
fi
previous_lines=$LINES
previous_columns=$COLUMNS
}
# configurar o PS1 inicial
set_PS1
# fazer o PS1 ser configurado novamente se a janela for redimensionada
trap 'set_PS1' WINCH
Espero que seja útil pra alguém...
Abraço a todos.
Pô! esse WordPress é bobo, feio e chato, heim... tirou toda a indentação do meu código... :-/
Segue link para o código como eu escrevi mesmo... :-)
Flw
Caramba Cristiano, você foi fundo, nos confins do shell, pra resolver esse problema, hein? Parabéns pela solução!
CARAMBA!!!!! Ganhei o dia!!! (apesar de não ter ganho o sorteio...)
O meu guru de shellscript curtiu minha solução!!! :-D
Sinal que to começando a pegar o "jeito shell" de resolver problemas... :-)
Outra coisa: depois que já tinha postado, dei uma otimizada no código tirando a parte que verifica mudança na quantidade de linhas da janela, já que mudando só a altura da janela não tem necessidade de reconfigurar o PS1. Versão atualizada aqui: http://pastebin.com/ywJ86rsp
Depois tive a ideia de juntar o conceito de subshell que tinha usado com os comandos do teu vídeo. Aí temos um único comando que faz o sorteio já apresentando o nome do ganhador:
cat nomes.txt | sed -n $(echo $(( $RANDOM % 108 + 1 )))p
Claro que até onde vc explicou já dá pra fazer o sorteio sem problemas, mas achei legal brincar um pouco mais... :-)
Abraço
Meu amigo Aurélio, você é o cara que mais me ensinou shell script sem mesmo me conhecer. Tenho profunda admiração pelo seu talento, didática e tudo mais. Parabéns e muito obrigado!
Muito obrigado pelo retorno Vinícius! Teu aprendizado é a minha recompensa. É o que faz valer a pena.
Simplesmente show!! Pena que a frequência de vídeos é baixa.
Eu gostaria de fazer mais vídeos, mas invisto cerca de 10 horas de trabalho por vídeo, então é complicado achar esse tempo livre :/
Ei… eu li até o fim. Pode ficar contente agora.