Blog do Zoltral

17/02/2010

Prompt do terminal personalizado II

Filed under: Linux, Tutorial — Tags:, , , , — Zoltral @ 01:57

Eu tinha o prompt do meu terminal personalizado, conforme este post.

No entanto, desde que migrei para o ArchLinux ele não funciona mais.

Assim, procurei e encontrei outro bash script que personaliza o prompt.

O prompt ficou assim agora:

De Diversos

Usei a dica daqui: http://bbs.archlinux.org/viewtopic.php?id=84386

Editado em 22/06/2010:

Apesar do link acima, achei por bem colocar o passo a passo aqui também.

1 – Salve o código no final deste post com o nome de .zer0prompt no seu diretório home.
2 – edite o arquivo .bashrc, comentando a linha PS1 e insira o código a seguir:

source ~/.zer0prompt
zer0prompt
unset zer0prompt

Código do arquivo .zer0prompt:
#!/bin/bash
#
# zer0prompt
# By: Wes Brewer [zer0]
# Last updated: Nov 8, 2009
#
# Credit for ideas/info: Phil!'s ZSH Prompt, Bashish, TERMWIDE prompt
# Bash Prompt Howto
#
# Usage: Add the follwing lines to your ~/.bashrc file
# source ~/.zer0prompt
# zer0prompt
# unset zer0prompt
#
#### user config ####
#
## set colour theme
# options -- cyan, blue, green, red, purple, yellow, black, white, none
zpcl="cyan"
#
## set info colours
# colour ref -- http://www.gilesorr.com/bashprompt/howto/c333.html#AEN335
zi1="\[33[1;32m\]" # user@host:tty
zi2="\[33[1;35m\]" # current path
zi3="\[33[1;33m\]" # time
zi4="\[33[1;31m\]" # exit status
zi5="\[33[1;32m\]" # user identifier ($ or #)
#
## set time format
# options -- 12, 24, 12s, 24s
zptm="12"
#
## set line graphics to use
zg1="─"; zg2="┌"; zg3="└"; zg4="┤"; zg5="├"; zg6=">"; zg7="|"
#zg1="-"; zg2="+"; zg3="+"; zg4="|"; zg5="|"; zg6=">"; zg7="|"
#
#
#### code ####
# Use bash builtin checkwinsize option for terminals which fail to properly
# set the $COLUMNS variable. (bug workaround)
shopt -s checkwinsize
#
# if root user then colour user@host info and user identifier red.
[ "${UID}" = 0 ] && zi1="\[33[1;31m\]" && zi5="\[33[1;31m\]"
#
# This function is run at every prompt update, keeping our variables updated.
# Bash's PROMPT_COMMAND option handles this (see end of this function).
function pre_prompt {
# show exit code of last failed command
ZEXIT="${?}"
[ "$ZEXIT" = "0" ] && ZEXIT=""
#
ZPWD=${PWD/#$HOME/\~} # sorten home dir to ~
#
# set length of our important info
local infolength="$(whoami)@$(hostname):$(basename $(tty))$ZPWD"
# set length of our graphics
local gfxlength=23
#
# construct ZFILL size to fill terminal width (minus info/gfx lengths).
local fillsize
let fillsize=${COLUMNS}-${gfxlength}-${#infolength}
ZFILL=""
while [ "$fillsize" -gt "0" ]; do
ZFILL="$ZFILL$zg1"
let fillsize=${fillsize}-1
done
#
# determine how much to truncate ZPWD, if ZFILL can't shrink anymore.
if [ "$fillsize" -lt "0" ]; then
local cut=3-${fillsize} # some tricky math, 3-(-number)=+number
ZPWD="...${ZPWD:${cut}}"
fi
}
PROMPT_COMMAND=pre_prompt
#
# This function tells bash how to draw our prompt
function zer0prompt {
local zc0="\[33[0m\]" # clear all colors
local zc1="\[33[1;37m\]"
local zc2="\[33[0;37m\]"
#
# set colour theme
if [ "$zpcl" = "cyan" ]; then
local zc3="\[33[1;36m\]"; local zc4="\[33[0;36m\]"
elif [ "$zpcl" = "blue" ]; then
local zc3="\[33[1;34m\]"; local zc4="\[33[0;34m\]"
elif [ "$zpcl" = "green" ]; then
local zc3="\[33[1;32m\]"; local zc4="\[33[0;32m\]"
elif [ "$zpcl" = "red" ]; then
local zc3="\[33[1;31m\]"; local zc4="\[33[0;31m\]"
elif [ "$zpcl" = "purple" ]; then
local zc3="\[33[1;35m\]"; local zc4="\[33[0;35m\]"
elif [ "$zpcl" = "yellow" ]; then
local zc3="\[33[1;33m\]"; local zc4="\[33[0;33m\]"
elif [ "$zpcl" = "black" ]; then
local zc3="\[33[1;30m\]"; local zc4="\[33[0;30m\]"
elif [ "$zpcl" = "white" ]; then
local zc3="\[33[1;37m\]"; local zc4="\[33[0;37m\]"
else # no colour
local zc3=""; local zc4=""; local zc1=""; local zc2=""
zi1=""; zi2=""; zi3=""; zi4=""; zi5=""
fi
#
# set time format
if [ "$zptm" = "24" ]; then
local ZTIME="\A"
elif [ "$zptm" = "12s" ]; then
local ZTIME="\T"
elif [ "$zptm" = "24s" ]; then
local ZTIME="\t"
else
local ZTIME="\@"
fi
#
# set titlebar info if xterm/rxvt
case $TERM in
xterm*|rxvt*)
local TITLEBAR='\[33]0;\u (\w) [${COLUMNS}x${LINES}]07\]';;
*)
local TITLEBAR="";;
esac
#
# prompt
PS1="${TITLEBAR}\
$zc1$zg2$zg1$zc3$zg1$zc4$zg1$zg4$zi1\u@\h:\l$zc4$zg5$zg1$zc2$zg1$zg1$zc4\
\$ZFILL$zc3$zg1$zg1$zg1$zg1$zc1$zg1$zg1$zg1$zc3$zg1$zg1$zc4$zg1$zg4$zi2\
\$ZPWD$zc4$zg5$zg1$zc2$zg1
$zc3$zg3$zc4$zg1$zg4$zi3$ZTIME$zc4$zg7$zi5\\\$$zc4$zg5$zi4\
\$ZEXIT$zc2$zg1$zc3$zg6$zc0 "
#
# continuation prompt
PS2="$zc3$zg3$zc4$zg1$zg4$zi5\\\$$zc4$zg5$zc2$zg1$zc3$zg6$zc0 "
}

08/10/2009

Prompt do terminal personalizado

Filed under: Linux, Tutorial — Tags:, , , , , , , — Zoltral @ 01:26

Edição em 17/02/2010: Este script parou de funcionar na migração para o ArchLinux. Agora uso este aqui.

Para quem usa Linux, uma hora ou outra acaba tendo que usar linha de comando em um terminal.

Infelizmente, por ser em modo texto, o uso do terminal pode provocar estragos no sistema, se você não souber oque está fazendo ou principalmente, onde está fazendo.

Já a alguns anos*, personalizei o prompt do meu terminal, para que o mesmo mostre o horário e o diretório presente.

O terminal fica assim:

De Diversos

O código para conseguir este efeito é o seguinte:
# Cores
Vermelho="\[\33[31m\]"
Verde="\[\33[32m\]"
Amarelo="\[\33[33m\]"
Ciano="\[\33[36m\]"
Branco="\[\33[37m\]"
Normal="\[\33[0m\]"
ColorBold="\[\33[1;39m\]"
# Prompt
export PS1="$ColorBold$Verde[\t]$Amarelo[\w]\n$Ciano\u@\h $Vermelho\$ $Normal"
export PS2="\h> "

Este código deve ser inserido no arquivo .bashrc no diretório do usuário.

* A primeira vez que disponibilizei este código foi em 2006, no Viva o Linux.

19/07/2008

Funções ZZ – uma coletânea com mini-aplicativos de utilidades diversas

Filed under: Diversos, Linux — Tags:, , , , , , — Zoltral @ 23:59

Hoje em dia já nos acostumamos a entrar na internet para procurar todo tipo de informações ou ferramentas necessárias para nossa vida. No entanto, mesmo com a ajuda dos sites de busca muitas vezes nossas pesquisas não retornam o esperado, principalmente pela infinidade de páginas que podem conter em seus textos os termos usados na busca.

Também temos o caso de que muitas vezes queremos um programa/ferramenta que faça uma pequena coisa para nós, mas acabamos encontrado apenas programas com vários e vários megas de tamanho.

Devido a essas dificuldades, muitos programadores, acabam criando pequenos scripts para agilizar suas atividades.

Exatamente dentro dessa filosofia, um programador da antiga Conectiva, Aurélio Marinho Jargas, criou em 2000 as Funções ZZ. Uma coleção de pequenos scripts, a princípio apenas para agilizar o trabalho da própria Conectiva. Em 2003 ele convidou o Thobias Salazar Trevisan, um colaborador assíduo para se tornar co-autor.

Hoje em dia, na sua versão 8.6, a Funções ZZ agrega 66 funções em apenas 125 kb e se tornou um utilitário que vale a pena ter instalado no seu computador.

Veja abaixo alguns exemplos.

    Resultado da megasena

paulo@tamoio $ zzloteria megasena
megasena:
08 - 17 - 46 - 48 - 56 - 60
Concurso 988 (19/07/2008 )
Acumulado em R$ 30.000.000,00 para 23/07/2008

Não foi desta vez. Continuo pobre. Melhor assim, prefiro ganhar os 30 milhões da quarta-feira que vem. :)

    Cotação do dólar

paulo@tamoio $ zzmoeda real
Sigla Compra Venda Var.% Hora Moeda
DOLCM - 1,5890 -0,68 18/07/2008 Real - Dólar comercial
DOLPR - 1,8100 0,00 18/07/2008 Real - Dólar paralelo
DOLPTAX - 1,5913 -0,29 00:58 Real - Dólar ptax - bacen
DOLTR - 1,7100 0,00 18/07/2008 Real - Dólar turismo

    Cálculo

paulo@tamoio $ zzcalcula 30000000 / 1,5890
18879798,61

O prêmio da megasena de quarta-feira convertido para dólar.

    Tradução

paulo@tamoio $ zzdicbabelfish pt_en rico
rich
paulo@tamoio $ zzdicbabelfish en_pt rich
rico
paulo@tamoio $ zzdicbabelfish pt_fr rico
riche

É oque eu serei quando eu ganhar na megasena. :) Otimismo sempre.

    Clima em Curitiba

paulo@tamoio $ zztempo Brazil SBCT

Curitiba Aeroporto , Brazil

(SBCT) 25-31S 049-10W 908M

Conditions at [Jul 19, 2008 - 10:00 PM EDT]
2008.07.20 0200 UTC
Wind from the NNE (020 degrees) at 2 MPH (2 KT)
Visibility 5 mile(s)
Sky conditions clear
Temperature 55 F (13 C)
Dew Point 51 F (11 C)
Relative Humidity 87%
Pressure (altimeter) 30.21 in. Hg (1023 hPa)
ob SBCT 200200Z 02002KT 9000 SKC 13/11 Q1023

13 °C – por isso que estou usando pantufas.

As Funções ZZ são uma ferramente que vale a pena ter instalado em seu computador. Se você usa Linux, é só seguir as instruções de instalação. Se você usa Windows, vai precisar instalar o Cygwin antes, para só depois poder instalar o Funções ZZ.

Funções ZZ:
Site
Download
Instalação
História

Tema: Silver is the New Black. Blog no WordPress.com.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.