Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[bashrc] - Trucos para bash
View unanswered posts
View posts from last 24 hours

Goto page 1, 2, 3, 4  Next  
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
i92guboj
Bodhisattva
Bodhisattva


Joined: 30 Nov 2004
Posts: 10315
Location: Córdoba (Spain)

PostPosted: Sat Jul 26, 2008 10:17 pm    Post subject: [bashrc] - Trucos para bash Reply with quote

Buenas.

Éste es uno de esos hilos para pasar el rato.

Me gustaría conocer que tipo de trucos usa la gente en sus ficheros de inicio de bash (~/.bahsrc, ~/.bash_profile, etc.). No estoy interesado en prompts porque es una materia bastante trillada y sobre la que existe muchísima información. Mayormente estoy interesado en alias, funciones y funcionalidades no tan evidentes de bash. Para comenzar pongo algunos de los míos, por si a alguien le sirven.

Alias

Code:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

Me gusta que los programas me pregunten antes de hacer algo irreversible. Si de verdad quiero sobre escribir sin confirmación siempre puedo usar -f o hacer algo como "yes | cp * /foo/".

Quote:

alias ls='ls -h'

Tamaños en formato legible para ls.

Code:

alias df='pydf'

Siempre lo uso en lugar de df. Su salida es más legible.

Code:

alias startx='startx \"$@\" & exit'

Lanza X con los parámetros suministrados y cierra el shell actual (por seguridad, más que nada).

Code:

alias nano="nano -w"

Lo típico. Para que nano no me corte las líneas. No se si esto es ahora lo predeterminado en su configuración.

Code:

alias dvdplay="mount /mnt/dvd; mplayer /mnt/dvd/*; umount /mnt/dvd"
alias vbox="sudo /sbin/modprobe vboxdrv; VirtualBox; sudo /sbin/rmmod vboxdrv"

No comment.

Code:

alias mc='mc -x'

Soporte para ratón en mc bajo X.

Code:

alias rcat='wget -q -O -'

Virtualmente, "remote cat". Es como hacer un cat a una url remota.

Historial

Algunos trucos que uso para manejar el historial de bash de forma más efectiva.

Code:

alias h='history'

Muestra el historial.

Code:

# Function to search on the bash history
function recal () {
  if [ -z "$1" ]; then
    echo "Uso: recal <cadena>, para buscar <cadena> en el historial de bash."
  else
    history | grep "$1" | grep -v recal
  fi
}

Muestra las líneas del historial que contengan la cadena suministrada.

Luego con ! puedes lanzar la entrada que quieras, por ejemplo:

Code:

$ recal eix
  105  eix libelf
  107  eix emul-
  300  eix svn
  301  eix subversion
  311  eix wine
  406  eix wesnoth
  412  eix ati-drivers
  496  eix rcat
$ !105
eix libelf
[I] dev-libs/libelf
     Available versions:  0.8.4 (~)0.8.6 (~)0.8.9 (~)0.8.10 {debug elibc_FreeBSD nls}
     Installed versions:  0.8.10(01:04:27 21/06/08)(nls -debug -elibc_FreeBSD)
     Homepage:            http://www.mr511.de/software/
     Description:         A ELF object file access library


Wine

Code:

# Function to run on wine
function winerun () {
  DIR="$PWD"
  cd "$1"
  wine "$2"
  cd "$DIR"
  xgamma -gamma 1.0
}

Algunos programas no corren bien si antes no entramos en un determinado directorio (cosas de librerías dll y todo eso). Esta función recibe un directorio y un nombre de programa, y lo ejecuta. Luego vuelve al directorio anterior, y además restaura el gamma (algunos juegos tienen la mala costumbre de cambiarlo sin ni siquiera preguntar). Luego defino alias usando esta función para cada programa, por ejemplo:

Code:

alias undying='winerun "$HOME/.wine/drive_c/Archivos de programa/EA Games/undying/System/" "../Undying.exe"'
alias cod2='winerun "$HOME/.wine/drive_c/Archivos de programa/Activision/Call of Duty 2/" "CoD2SP_s.exe"'
alias rune='winerun "$HOME/.wine/drive_c/Rune/System/" "Rune.exe"'
alias n2='winerun "$HOME/.wine/drive_c/Archivos de programa/Atari/Neverwinter Nights 2/" "nwn2.exe"'
alias gp5='winerun "$HOME/.wine/drive_c/Archivos de programa/Guitar Pro 5/" "GP5.exe"'


Muy práctico.

Concatenar videos

Code:

function avijoin () {
        local part1="$1"
        local part2="$2"
        local out_f="$3"
        mencoder -oac copy -ovc copy -idx "$1" "$2" -o "$3"
}


Esta función recibe dos ficheros de video y produce un tercero. Solo está diseñada para pegar ficheros de video que estén codificados exáctamente de la misma forma, ya que no recodifica nada, tan solo copia los streams y recalcula los índices.

Añadir paths de forma sencilla

Code:

# Function to add a path
# Usage: add_to_path <path>
add_path () {
  if [ "$PATH" == "${PATH/$1/}" ]
  then
    PATH="$1:$PATH"
    export PATH
  fi
}

Esta función añade paths de forma fácil, comprobando que no estén duplicados. Se añaden al principio, por lo cual tomarán precedencia sobre los antiguos. Se usa de esta forma:

Code:

# We want paths :P
add_path "/usr/local/bin"
add_path "$HOME/bin"


#THE END

Ahí queda eso. Saludos! 8)
Back to top
View user's profile Send private message
achaw
l33t
l33t


Joined: 09 Aug 2006
Posts: 689
Location: Argentina

PostPosted: Sat Jul 26, 2008 10:22 pm    Post subject: Reply with quote

Genial. Me quede con recal, me parecio muy util. Hay uno que tengo yo que elimina la muestra de entradas consecutivas duplicadas en el historial cuando buscamos con la flechita de "arriba" :D

Code:
export HISTIGNORE="&:l:ll:ls:pwd:[bf]g:exit:clear"


Saludos
_________________
Usuario GNU/Linux #398133
Fluxbox + ROX
NO al canon!
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sat Jul 26, 2008 11:09 pm    Post subject: Reply with quote

Pues yo voy a poner la chorrada de turno, la mascota para terminales :P

Monigote en ascii para el .bashrc

Code:
# Welcome the user
echo
echo '        (()__(()'
echo '        /       \'
echo '       ( /    \  \'
echo '        \ o o    /'
echo '        (_()_)__/ \'
echo '       / _.==.____ \'
echo '      (   |--|      )'
echo '      /\_,|__|--.__/\_'
echo '     / (        /     \'
echo '     \  \      (      /'
echo '      )  \._____)    /'
echo '   (((____.--(((____/'
echo


Otra forma de hacerlo es combinando fortune y cowsay, así tienes una mascota ascii que te dice chorrallidas nuevas cada vez, con algo como:
Code:
fortune | cowsay -f ~/themes/cows/osito.cow -W 55

Sustituir ~/themes/cows/osito.cow por las mascotas que se quiera de las incluidas en el paquete cowsay. Y el resultado tal que así.

Hala, ya he puesto mi pequeño y nada pero que nada practico pero sí lúdico aporte.
Back to top
View user's profile Send private message
Coghan
l33t
l33t


Joined: 25 Jul 2007
Posts: 789
Location: Gran Canaria (Spain)

PostPosted: Sat Jul 26, 2008 11:21 pm    Post subject: Re: [bashrc] - Trucos para bash Reply with quote

Gracias, me encanta cuando te aburres.

i92guboj wrote:
Code:

alias nano="nano -w"

Lo típico. Para que nano no me corte las líneas. No se si esto es ahora lo predeterminado en su configuración.


En /etc/nanorc puedes añadir la línea set nowrap y obtienes el mismo resultado.

Un alias tonto pero que me resulta muy útil:
Code:
alias ..='cd ..'

_________________
Salu2.
Alguien, muy acertadamente, dijo una vez wrote:
'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo'
Back to top
View user's profile Send private message
i92guboj
Bodhisattva
Bodhisattva


Joined: 30 Nov 2004
Posts: 10315
Location: Córdoba (Spain)

PostPosted: Sun Jul 27, 2008 12:26 am    Post subject: Re: [bashrc] - Trucos para bash Reply with quote

Coghan wrote:
Gracias, me encanta cuando te aburres.


:lol: :lol:


Quote:

i92guboj wrote:
Code:

alias nano="nano -w"

Lo típico. Para que nano no me corte las líneas. No se si esto es ahora lo predeterminado en su configuración.


En /etc/nanorc puedes añadir la línea set nowrap y obtienes el mismo resultado.


Gracias por confirmarlo. Me parecía haber visto la opción por ahí pero no tenía ganas de releer toda la configuración ahora.

Quote:
Un alias tonto pero que me resulta muy útil:
Code:
alias ..='cd ..'


Pues no se me había ocurrido. Simple y efectivo, me lo quedo :)
Back to top
View user's profile Send private message
ekz
l33t
l33t


Joined: 21 Jun 2006
Posts: 994
Location: Temuco - Chile

PostPosted: Sun Jul 27, 2008 1:55 am    Post subject: Reply with quote

Muy buenos tips, haber que tengo yo..
Code:

explainuseflag() {
        sed -n -e "s,^\([^ ]*:\)\?$1 - ,,p" \
                /usr/portage/profiles/use.desc \
                /usr/portage/profiles/use.local.desc
}


Creo que Ferdy (o tal vez gringo) mencionó esta función, me parece que euse -i hace lo mismo, pero me gusta porque escribo "expl[TAB]" y la completación de bash hace lo suyo (hace poco anunciaron que ahora las USEs estarán en otros ficheros, tal vez no le quede mucho tiempo de vida a esta función).
Code:
ekz@localhost ~ $ explainuseflag gnome
Adds GNOME support


También tengo alias que me corrigen la escritura, como son:
Code:
alias eox='eix'
alias naon='nano'

:D


Saludos!
_________________
Mi tumblelog
Back to top
View user's profile Send private message
lanshor
Apprentice
Apprentice


Joined: 17 Mar 2005
Posts: 291
Location: Alicante

PostPosted: Sun Jul 27, 2008 2:04 am    Post subject: Reply with quote

Este creo que lo vi en Suse hace algunos años, y desde entonces siempre lo uso:

Code:
alias ll="ls -l"

_________________
Mi FoToBLoG
Back to top
View user's profile Send private message
gringo
Advocate
Advocate


Joined: 27 Apr 2003
Posts: 3793

PostPosted: Sun Jul 27, 2008 9:54 am    Post subject: Reply with quote

buena idea :)
añado un par de cosillas mas ( que en su mayoría no son mías, las he sacado de otros bashrc) :
Code:

start () {
         /etc/init.d/$1 start
}

stop () {
         /etc/init.d/$1 stop
}

restart () {
         /etc/init.d/$1 restart
}

zap () {
         /etc/init.d/$1 zap
}

rca () {
         /sbin/rc-update add $1 default
}

rcd () {
         /sbin/rc-update del $1 default
}

run () {
    nohup $@ &
}


con esto p.ej. en vez de ejecutar /etc/init.d/xdm start simplemente podéis ejecutar start xdm

Code:
alias more='less'
export PAGER=less
export LESSCHARSET='latin1'
export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-'
export LESS='-i -N -w  -z-4 -g -e -M -X -F -R -P%t?f%f \
:stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...'


un pager como dios manda ;)

Code:
alias klink="rm /usr/src/linux && ln -sf /usr/src/linux-$(uname -r) /usr/src/linux"
alias kmenu="cd /usr/src/linux;make menuconfig"
alias ckmake="make CC="distcc" -j10"
function modrebuild (){
emerge -av `grep -l /lib/modules /var/db/pkg/*/*/CONTENTS | sed -e 's/\/var\/db\/pkg\//=/' -e 's/\/CONTENTS//'`
}


útil pal kernel :

- actualiza el link /usr/src/linux acorde al kernel en ejecución
- abre el menu de configuración del kernel
- habilita la compilación sobre distcc
- recompila los módulos

Code:
alias stripcom="sed -e 's/#.*//;/^\s*$/d' "$@" "


para sacar los comentarios de un archivo de configuración.

Code:
function unpack() {
    if [ ! "$1" ] || [ "$2" ] ; then
       echo "Uso: unpack ARCHIVO"
       echo "donde ARCHIVO es gzip, bzip2, zip, rar"
    else
        TAR=$(which tar)
        UNZIP=$(which unzip)
        RAR=$(which rar)

        TYPE=$(file "$1" | cut -d " " -f 2)
        NOEXT=$(echo "$1" |cut -d "." -f 1)
        echo $TYPE

        if [ $TYPE == "gzip" ]; then
          $TAR -xzf "$1"
        elif [ $TYPE == "bzip2" ]; then
          $TAR -xjf "$1"
        elif [ $TYPE == "Zip" ]; then
          echo file is a .zip!
          unzip -d $NOEXT "$1"
        elif [ $TYPE == "RAR" ]; then
          echo file is a .rar!
          rar x "$1" $NOEXT
        fi

        unset TAR
        unset UNZIP
        unset RAR
        unset TYPE
        unset NOEXT
    fi
}


para descomprimir archivos rápidamente.

Code:
function mkcd() {
  mkdir -p "$*" && cd "$*" && pwd
}


crea un directorio y accede al mismo.

Code:
# find a given ebuild. based upon code by agriffis. does some fancy prediction,
# so it will find categories if necessary (eg efind sparc-dev-sources will find
# sys-kernel/sparc-dev-sources, and does partial name matching). prints the
# result in the form category/package .
efind() {
    local efinddir cat pkg
    efinddir=$(eportdir)

    case $1 in
        *-*/*)
            pkg=${1##*/}
            cat=${1%/*}
            ;;

        ?*)
            pkg=${1}
            cat=$(echo1 ${efinddir}/*-*/${pkg}/*.ebuild)
            [[ -f $cat ]] || cat=$(echo1 ${efinddir}/*-*/${pkg}*/*.ebuild)
            [[ -f $cat ]] || cat=$(echo1 ${efinddir}/*-*/*${pkg}/*.ebuild)
            [[ -f $cat ]] || cat=$(echo1 ${efinddir}/*-*/*${pkg}*/*.ebuild)
            if [[ ! -f $cat ]]; then
                return 1
            fi
            pkg=${cat%/*}
            pkg=${pkg##*/}
            cat=${cat#${efinddir}/}
            cat=${cat%%/*}
        ;;
    esac

    echo ${cat}/${pkg}
}
# find either a cvs co of gentoo's portage module or the portage directory, and
# echo the result.
eportdir() {
    # does fast cache magic. portageq in particular is really slow... this makes
    # subsequent calls to eportdir() pretty much instantaneous, as opposed to
    # taking several seconds.
    if [[ -n "${PORTDIR_CACHE}" ]] ; then
        echo "${PORTDIR_CACHE}"
    elif [[ -d ${HOME}/cvs/portage ]] ; then
        PORTDIR_CACHE="${HOME}/cvs/portage"
        eportdir
    elif [[ -d /usr/portage ]] ; then
        PORTDIR_CACHE="/usr/portage"
        eportdir
    else
        PORTDIR_CACHE="$(portageq portdir )"
        eportdir
    fi
}
# change to an ebuild's directory.
ecd() {
    local pc d

    pc=$(efind $*)
    d=$(eportdir)



    if [[ $pc == "" ]] ; then
        echo "nothing found for $*"
        return 1
    fi

    cd ${d}/${pc}
}

echo1() {
    echo "$1"
}


yo lo uso casi en exclusivo para meterme en el directorio de un ebuild., es decir, ecd baselayout os meterá en el direcorio del árbol de portage del paquete baselayout.

Code:
function edesc() {
cat *.ebuild | sed -ne 's-^DESCRIPTION="\(.*\)".*-\1-1p' | sort -u
}

function ewww() {
          cat *.ebuild | sed -ne 's-^HOMEPAGE="\(.*\)".*-\1-1p' | sort -u
}


sacan la descripción y la url de un ebuild.


los alias que mas debo usar :

Code:
alias distmon="DISTCC_DIR=/var/tmp/portage/.distcc distccmon-gnome &"
alias e="emerge -va"
alias ew="emerge -uaDv world"
alias esys="emerge -uavD system"
alias ey="emerge --sync && layman -s ALL && sync-cvs && ew"
alias crap="localepurge -v && repocacheman && purge-crap && dep -p -w "
alias enw="emerge -uaDN world"
alias unmerge="emerge --unmerge -av"
alias modrwx="chmod 744"
alias modrx="chmod 755"
alias modrw="chmod 644"
alias modr="chmod 444"
alias svu="svn update"
alias svs="svn status"
alias svc="svn commit"
alias sva="svn add"
alias mktar="tar -cvf"
alias mkbz2="tar -cvjf"
alias mkgz="tar -cvzf"
alias ncemerge="FEATURES="-distcc" MAKEOPTS="-j2" emerge -av"
alias r+="xset m 7 10"
alias r-="xset m default"
alias top="htop"
alias df="pydf"
alias x="startx"
alias Y="startx -- :1"
alias h="history"
alias free='free -m'
alias dmesg="dmesg | more"
alias netstat="netstat -ponatu"
alias 2vcd="ffmpeg -i $1.avi -target ntsc-svcd"
alias 1='fg %1'
alias 2='fg %2'
alias 3='fg %3'
alias 4='fg %4'
alias 5='fg %5'
alias 6='fg %6'
alias 11='bg %1'
alias 22='bg %2'
alias 33='bg %3'
alias 44='bg %4'
alias 55='bg %5'
alias 66='bg %6'
alias haziso="mkisofs -o $AlphaN.iso -b $WORK/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table $DEVDIR"


por si a alguien le sirven de algo.

saluetes
_________________
Error: Failing not supported by current locale
Back to top
View user's profile Send private message
Stolz
Moderator
Moderator


Joined: 19 Oct 2003
Posts: 3028
Location: Hong Kong

PostPosted: Sun Jul 27, 2008 12:22 pm    Post subject: Re: [bashrc] - Trucos para bash Reply with quote

Genial post, como siempre.

Mis alias
Code:
alias grep="grep --colour=auto"
alias ls="ls -lh --color"
alias la="ls -a"
alias top="htop"
alias l="locate -i"
alias man="/home/javi/scripts/man"

siendo /home/javi/scripts/man
Code:

#!/bin/bash
konqueror --profile webbrowsing man:$1


i92guboj wrote:

alias df='pydf

Lo añado a mis alias igual que hice en su día con htop.

i92guboj wrote:

Algunos trucos que uso para manejar el historial de bash de forma más efectiva.

Para hace algo parecido uso la combinación de teclas Crontrol+r en Bash. Busca (de forma insensible a mayúsculas) en el historial los comandos en los que aparezca lo que teclees a continuación de pulsar Crontrol+r. Sucesivas pulsaciones de Crontrol+r busca sucesivas concordancias. Si quieres refinar más la búsqueda continuas escribiendo y sin necesidad de pulsar nada continua apareciendo los comandos que cumplen con el nuevo patrón. Cuando ya tienes el comando que quieres, pulsas INTRO y se ejecuta.

achaw wrote:
Hay uno que tengo yo que elimina la muestra de entradas consecutivas duplicadas en el historial cuando buscamos con la flechita de "arriba" :D
Relacionado:
Code:
export HISTSIZE=1000
export HISTFILESIZE=1000
export HISTCONTROL="ignoredups"
Creo que por el nombre se sabe enseguida lo que hacen.


Coghan wrote:

Un alias tonto pero que me resulta muy útil:
Code:
alias ..='cd ..'
Tan simple y útil que es brillante. Gracias.

ekz wrote:
También tengo alias que me corrigen la escritura, como son:
Code:
alias eox='eix'
alias naon='nano'
Pensé que era el único!, yo también tengo alias jeo="joe"


gringo, me quedo con start(),stop(),... estaba haciendo algo para lo mismo pero con ncurses (dialog) pero lleva parado el tema meses.

Otro truco que recomiendo:
Code:
# emerge app-shells/bash-completion

y luego poner en .bashrc
Code:
[[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion

Ahora el tabulador no solo completa nombres de arhivos sin casi todo (parámetros, opciones,usarios, hosts,...)

Y para acabar, como se que a más de uno le va a gustar, un enalce que acabo de descubrir esta mañana y aun no he acabado de leer:
http://www.ibm.com/developerworks/linux/library/l-10sysadtips/index.html?ca=drs-tp3008

Saludozzzzzzzz
Back to top
View user's profile Send private message
Inodoro_Pereyra
Advocate
Advocate


Joined: 03 Nov 2006
Posts: 2631
Location: En la otra punta del cable

PostPosted: Mon Jul 28, 2008 4:16 am    Post subject: Reply with quote

WOW!!

Me han hecho perder un par de horas haciendo experimentos! :D

Tengo mas o menos lo mismo que todos ustedes salvo quizá por:
.bashrc wrote:
alias sr='screen -r'
alias ss='screen -S'
alias sd='screen -d'
alias sdd='screen -D'


No tenía ninguna función compleja ni nada fuera de algunos alias hasta hoy que me robé al menos el 99% de las ideas, gracias gente...

Salud!

**EDITO** Gracias por el link Stolz, acabo de aprender como 20 cosas nuevas :D
_________________
Mi Blog.

Si no fuera por C, estaríamos escribiendo programas en BASI, PASAL y OBOL.
Back to top
View user's profile Send private message
i92guboj
Bodhisattva
Bodhisattva


Joined: 30 Nov 2004
Posts: 10315
Location: Córdoba (Spain)

PostPosted: Mon Jul 28, 2008 8:42 am    Post subject: Reply with quote

Todo muy interesante. Más de uno de estos trocitos irá a mi bashrc, previa digestión jeje.

Aquí dejo un enlace a un script de descompresión que hicimos Cereza y yo hace tiempo, y que he vuelto a revisar para limpiarlo un poco. Soporta varios formatos y admite un único parámetro, que es el nombre del archivo a descomprimir. Descomprime en el directorio actual, más simple imposible:

http://jesgue.homelinux.org/scripts/u2
Back to top
View user's profile Send private message
Annagul
Apprentice
Apprentice


Joined: 05 Dec 2004
Posts: 156
Location: San Fernando, Cádiz (Spain)

PostPosted: Mon Jul 28, 2008 11:44 am    Post subject: Reply with quote

Un hilo excelente, muchas gracias por compartir vuestros bashrc's :wink:.

Sin duda, hay más de uno que va a caer y seguro que será de uso casi diario. Por mi parte, los que más uso ya se han comentado, así que me temo que no puedo aportar nada útil.

PS: Stolz, genial enlace, gracias.
_________________
Sapere aude
Back to top
View user's profile Send private message
piponazo
Tux's lil' helper
Tux's lil' helper


Joined: 09 Feb 2008
Posts: 102
Location: Córdoba - Spain

PostPosted: Mon Jul 28, 2008 1:35 pm    Post subject: Reply with quote

Me ha encantado la ídea de este post. A ver si me pongo a verlo detenidamente y le dedico un rato, ya que he visto algunas cosas que parecen muy interesantes.

Y para no irme de vacío hago un miniaporte jeje, el programa que lanza es trayer, un panel para los iconos de la bandeja del sistema (icontray) para aquellos escritorios que no traen el suyo (como enlightenment E17):

Code:
alias trayerd='nohup trayer --edge bottom --align right --widthtype request &'
Back to top
View user's profile Send private message
7th_sign
Apprentice
Apprentice


Joined: 18 Jan 2004
Posts: 176

PostPosted: Thu Jul 31, 2008 6:05 pm    Post subject: Reply with quote

buenos los comentarios, algunos de esos tambien los usé cuando tuve mi primera laptop y hay otros que me hubieran sido de mucha útilidad conocerlos antes, pero un tiempo use muchas máquinas linux que pues no contaban con esas personalizaciones y por eso se me quedé con la mala costumbre de escribir todo el comando :? , de hecho lo único que si hago es modificar el prompt del bash para diferenciarlo entre usuarios y/o máquinas, aunque no tiene nada que ver con alias se los pongo por que esto va en el bashrc

Quote:
C1="\[\033[0;30m\]" # Black
C2="\[\033[1;30m\]" # Dark Gray
C3="\[\033[0;31m\]" # Red
C4="\[\033[1;31m\]" # Light Red
C5="\[\033[0;32m\]" # Green
C6="\[\033[1;32m\]" # Light Green
C7="\[\033[0;33m\]" # Brown
C8="\[\033[1;33m\]" # Yellow
C9="\[\033[0;34m\]" # Blue

C10="\[\033[1;34m\]" # Light Blue
C11="\[\033[0;35m\]" # Purple
C12="\[\033[1;35m\]" # Light Purple
C13="\[\033[0;36m\]" # Cyan
C14="\[\033[1;36m\]" # Light Cyanias
C15="\[\033[0;37m\]" # Light Gray
C16="\[\033[1;37m\]" # White
C17="\[\033[1;39m\]" # Bright
P="\[\033[0m\]" # Neutral


y al final del archivo pongo esto

Quote:
PS1="$C3[$C6\@$C3] $C3[$C8\u$C2$C5$VTUSE$C15@$C16\h$C3]$C3[$C4\w$C3]\n#:$P"

para modificar el promt

aprovecho para hacer un comercial :D a mi página por si tienen cuoriosidad de saber como se vería el promt :

http://ivan.rico.org.mx/index.php/Blog/SingleView/id/Colorear-el-PROMPT-1

Saludos
_________________
Yo soy de los que aprovechan la firma para poner la URL de su página :)
7th Sign | http://ivan.rico.org.mx
Back to top
View user's profile Send private message
Coghan
l33t
l33t


Joined: 25 Jul 2007
Posts: 789
Location: Gran Canaria (Spain)

PostPosted: Fri Aug 08, 2008 10:35 pm    Post subject: Re: [bashrc] - Trucos para bash Reply with quote

Stolz wrote:
Code:
#!/bin/bash
konqueror --profile webbrowsing man:$1


No conocía que konqueror pudiese leer las man pages y me he tomado la libertad de cambiar algo tu forma de lanzarlo, para no tener que poner un script fuera del .bashrc y además que me detecte si estoy en la consola no gráfica y me lance el man tradicional en ese caso.
Code:
function man () {
  if [ $TERM != linux ] && [ -z $SSH_TTY ]; then
    konqueror man:$1 --profile webbrowsing &
  else
    /usr/bin/man $1
  fi
}

gringo wrote:
Code:
start () {
         /etc/init.d/$1 start
}

Siempre he buscado la forma de hacer esto a la manera que lo hace debian, por ejemplo rcxdm start, he probado tus funciones, pero les falta el completado, he intentado crearlo mediante bash_completion, pero me he liado. Seguiré estudiando un poco la forma de hacerlo, pues me he acostumbrado tanto a pulsar el tabulador que se echa en falta.

Con eselect también se pueden lanzar los scripts de inicio, por ejemplo eselect rc start xdm, pero son demasiados comandos, al final vuelvo al método tradicional.
_________________
Salu2.
Alguien, muy acertadamente, dijo una vez wrote:
'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo'
Back to top
View user's profile Send private message
Stolz
Moderator
Moderator


Joined: 19 Oct 2003
Posts: 3028
Location: Hong Kong

PostPosted: Sat Aug 09, 2008 12:19 am    Post subject: Re: [bashrc] - Trucos para bash Reply with quote

Coghan wrote:
No conocía que konqueror pudiese leer las man pages ..
También lee las páginas info :)
Coghan wrote:
...me he tomado la libertad de cambiar algo tu forma de lanzarlo
¡Genial!, la heredo ;)
Coghan wrote:
he probado tus funciones, pero les falta el completado, he intentado crearlo mediante bash_completion, pero me he liado. Seguiré estudiando un poco la forma de hacerlo, pues me he acostumbrado tanto a pulsar el tabulador que se echa en falta.
Me pasa exactamente lo mismo. Intenté documentarte sobre cómo hacer tus propios autocompeltados pero la documentación de la página oficial es inexistente. Al final opté por hacer un interfaz ncurses con "dialog" pero a los pocos días lo dejé parado.
Back to top
View user's profile Send private message
Coghan
l33t
l33t


Joined: 25 Jul 2007
Posts: 789
Location: Gran Canaria (Spain)

PostPosted: Sat Aug 09, 2008 1:38 pm    Post subject: Reply with quote

Bueno, pues he conseguido hacer que los scripts de inicio se gestionen de la forma rcxdm start con autocompletado, como lo hace Suse,y no Debían como había dicho antes.

Ahora escribiendo rc+[TAB] nos aparecen todos los servicios que cuelgan bajo /etc/init.d/ junto con el resto de comandos que empiecen con rc, claro. Luego seguimos con el ejemplo rcxdm +[TAB] y nos aparecen la listas de opciones para el script: broken ineed iuse needsme pause restart start status stop usesme zap

Code:
_rcgentoo_style_init()
{
    local TCOMP_WORDS=${COMP_WORDS#*rc}
    local script="/etc/init.d/${TCOMP_WORDS[0]}"
    local cur="${COMP_WORDS[$COMP_CWORD]}"

    if [[ ( -f "${script}" || -h "${script}" ) && -r "${script}" ]] \
        && [[ "${script}" != *.sh ]] \
        && [[ "$(head -n 1 "${script}")" = "#!/sbin/runscript" ]]
    then
        [[ $COMP_CWORD -gt 1 ]] && return 1
        COMPREPLY=($(opts="start stop status restart pause zap ineed needsme iuse usesme broken"; \
            eval "$(grep '^opts=' "${script}")"; echo "${opts}"))
        [[ -n "$COMPREPLY" ]] || COMPREPLY=(start stop restart zap)
        COMPREPLY=($(compgen -W "${COMPREPLY[*]}" -- "${cur}"))
    else
        COMPREPLY=($(compgen -o default -- "${cur}"))
    fi
    return 0
}

for DAEMON in /etc/init.d/* ; do
   RCDAEMON=rc${DAEMON##*/}
   alias $RCDAEMON=$DAEMON
   complete -F _rcgentoo_style_init $RCDAEMON
done
unset RCDAEMON DAEMON

Stolz wrote:
Me pasa exactamente lo mismo. Intenté documentarte sobre cómo hacer tus propios autocompeltados pero la documentación de la página oficial es inexistente. Al final opté por hacer un interfaz ncurses con "dialog" pero a los pocos días lo dejé parado.

Pues he seguido tu consejo y he mirado también en las páginas info y he encontrado algo de información aquí info:/bash/Programmable Completion Builtins, y estudiando un poco los scripts que hay en /etc/bash_completion y /etc/bash_completion.d/.

Stolz wrote:
También lee las páginas info :)

Pues naa, el script que lo lanza.

Code:
function info () {
  if [ $TERM != linux ] && [ -z $SSH_TTY ]; then
    konqueror info:$1 --profile webbrowsing &
  else
    /usr/bin/info $1
  fi
}

_________________
Salu2.
Alguien, muy acertadamente, dijo una vez wrote:
'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo'


Last edited by Coghan on Sat Aug 09, 2008 4:06 pm; edited 1 time in total
Back to top
View user's profile Send private message
Coghan
l33t
l33t


Joined: 25 Jul 2007
Posts: 789
Location: Gran Canaria (Spain)

PostPosted: Sat Aug 09, 2008 3:51 pm    Post subject: Reply with quote

Buscando porqué los aliases y las funciones no me funcionaban con el comando sudo, he encontrado esta función y asunto resuelto:

Code:

# Wrap sudo to handle aliases and functions
# Wout.Mertens@gmail.com
#
# Comments and improvements welcome

sudo ()
{
        local c o t parse

        # Parse sudo args
        OPTIND=1
        while getopts xVhlLvkKsHPSb:p:c:a:u: t; do
                if [ "$t" = x ]; then
                        parse=true
                else
                        o="$o -$t"
                        [ "$OPTARG" ] && o="$o $OPTARG"
                fi
        done
        shift $(( $OPTIND - 1 ))

        # If no arguments are left, it's a simple call to sudo
        if [ $# -ge 1 ]; then
                c="$1";
                shift;
                case $(type -t "$c") in
                "")
                        echo No such command "$c"
                        return 127
                        ;;
                alias)
                        c="$(type "$c"|sed "s/^.* to \`//;s/.$//")"
                        ;;
                function)
                        c=$(type "$c"|sed 1d)";\"$c\""
                        ;;
                *)
                        c="\"$c\""
                        ;;
                esac
                if [ -n "$parse" ]; then
                        # Quote the rest once, so it gets processed by bash.
                        # Done this way so variables can get expanded.
                        while [ -n "$1" ]; do
                                c="$c \"$1\""
                                shift
                        done
                else
                        # Otherwise, quote the arguments. The echo gets an extra
                        # space to prevent echo from parsing arguments like -n
                        # Note the lovely interactions between " and ' ;-)
                        while [ -n "$1" ]; do
                                c="$c '$(echo " $1"|sed -e "s/^ //" -e "s/'/'\"'\"'/")'"
                                shift
                        done
                fi
                # Run the command with verbose options
                echo Executing sudo $o -- bash -x -v -c "$c" >&2
                command sudo $o bash -xvc "$c"
        else
                echo sudo $o >&2
                command sudo $o
        fi
}

_________________
Salu2.
Alguien, muy acertadamente, dijo una vez wrote:
'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo'
Back to top
View user's profile Send private message
pcmaster
Advocate
Advocate


Joined: 04 Dec 2003
Posts: 2218
Location: Barcelona

PostPosted: Sun Aug 10, 2008 8:42 am    Post subject: Reply with quote

Hablando de truquitos para bash, hace algún tiempo publiqué por estos lares un par de scripts de bash bastante útiles, cuyos enlaces ya están puestos en el hilo de "recopilación de los mejores mensajes y guías".

Son estos:

https://forums.gentoo.org/viewtopic-t-574118.html

https://forums.gentoo.org/viewtopic-p-4164740.html
_________________
pcmaster
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sun Aug 10, 2008 7:27 pm    Post subject: Reply with quote

Cuantas cosas chulas estoy sacando de este hilo, gracias a todos :)

Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
Code:
alias cdd='cd ~"


Saludos.
Back to top
View user's profile Send private message
Coghan
l33t
l33t


Joined: 25 Jul 2007
Posts: 789
Location: Gran Canaria (Spain)

PostPosted: Sun Aug 10, 2008 7:33 pm    Post subject: Reply with quote

Cereza wrote:
Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
Code:
alias cdd='cd ~"

Para eso ya existe el comando cd a secas.
_________________
Salu2.
Alguien, muy acertadamente, dijo una vez wrote:
'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo'
Back to top
View user's profile Send private message
achaw
l33t
l33t


Joined: 09 Aug 2006
Posts: 689
Location: Argentina

PostPosted: Sun Aug 10, 2008 8:20 pm    Post subject: Reply with quote

Algunos simples de portage:

Code:
alias instalados='cd /var/db/pkg/ && for i in */*; do ls -d $i; done'
alias p.keywords='geany /etc/portage/package.keywords'
alias p.use='geany /etc/portage/package.use'
alias p.mask='geany /etc/portage/package.mask'
alias p.unmask='geany /etc/portage/package.unmask'
alias make.conf='geany /etc/make.conf'
alias usemerge='emerge -pv'
alias upmerge='emerge --update --deep --newuse'
alias demerge='emerge --sync && layman -S && update-eix'


Saludos
_________________
Usuario GNU/Linux #398133
Fluxbox + ROX
NO al canon!
Back to top
View user's profile Send private message
i92guboj
Bodhisattva
Bodhisattva


Joined: 30 Nov 2004
Posts: 10315
Location: Córdoba (Spain)

PostPosted: Sun Aug 10, 2008 8:50 pm    Post subject: Reply with quote

Stolz wrote:
Coghan wrote:
No conocía que konqueror pudiese leer las man pages ..
También lee las páginas info :)


Milagros de los kio-slaves. Cosas como kio-slaves y kparts son las que hacen de kdelibs una de las infraestructuras mejores (si no la mejor) que conozco. Son funcionalidades no tan conocidas pero realmente potentes, info:/, man:/ fish:/, etc. etc. También se puede usar konqueror como un frontend para la configuración de kcontrol: settings:/, o bien para acceder a los recursos de almacenamiento del sistema en una forma más "a la windows", con system:/ o cosas como trash:/ o finger:/

Es un sistema fácilmente extensible y hay montones de kio-slaves para muchas propósitos distintos.

Perdón por el off-topic, no pude resistirme :P
Back to top
View user's profile Send private message
Cereza
Guru
Guru


Joined: 14 Apr 2006
Posts: 428

PostPosted: Sun Aug 10, 2008 8:56 pm    Post subject: Reply with quote

Coghan wrote:
Cereza wrote:
Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
Code:
alias cdd='cd ~"

Para eso ya existe el comando cd a secas.

Fíjateeeeeeeeeee :oops: :lol:
Back to top
View user's profile Send private message
Inodoro_Pereyra
Advocate
Advocate


Joined: 03 Nov 2006
Posts: 2631
Location: En la otra punta del cable

PostPosted: Mon Aug 11, 2008 12:43 am    Post subject: Reply with quote

Cereza wrote:
Coghan wrote:
Cereza wrote:
Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
Code:
alias cdd='cd ~"

Para eso ya existe el comando cd a secas.

Fíjateeeeeeeeeee :oops: :lol:


Yo tampoco sabía :D

Salud!
_________________
Mi Blog.

Si no fuera por C, estaríamos escribiendo programas en BASI, PASAL y OBOL.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum