View previous topic :: View next topic |
Author |
Message |
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Sat Jul 26, 2008 10:17 pm Post subject: [bashrc] - Trucos para bash |
|
|
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/".
Tamaños en formato legible para ls.
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.
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.
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! |
|
Back to top |
|
|
achaw l33t
Joined: 09 Aug 2006 Posts: 689 Location: Argentina
|
Posted: Sat Jul 26, 2008 10:22 pm Post subject: |
|
|
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"
Code: | export HISTIGNORE="&:l:ll:ls:pwd:[bf]g:exit:clear" |
Saludos _________________ Usuario GNU/Linux #398133
Fluxbox + ROX
NO al canon! |
|
Back to top |
|
|
Cereza Guru
Joined: 14 Apr 2006 Posts: 428
|
Posted: Sat Jul 26, 2008 11:09 pm Post subject: |
|
|
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 |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Sat Jul 26, 2008 11:21 pm Post subject: Re: [bashrc] - Trucos para bash |
|
|
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: _________________ 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 |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Sun Jul 27, 2008 12:26 am Post subject: Re: [bashrc] - Trucos para bash |
|
|
Coghan wrote: | Gracias, me encanta cuando te aburres. |
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: |
Pues no se me había ocurrido. Simple y efectivo, me lo quedo |
|
Back to top |
|
|
ekz l33t
Joined: 21 Jun 2006 Posts: 994 Location: Temuco - Chile
|
Posted: Sun Jul 27, 2008 1:55 am Post subject: |
|
|
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' |
Saludos! _________________ Mi tumblelog |
|
Back to top |
|
|
lanshor Apprentice
Joined: 17 Mar 2005 Posts: 291 Location: Alicante
|
Posted: Sun Jul 27, 2008 2:04 am Post subject: |
|
|
Este creo que lo vi en Suse hace algunos años, y desde entonces siempre lo uso:
_________________ Mi FoToBLoG |
|
Back to top |
|
|
gringo Advocate
Joined: 27 Apr 2003 Posts: 3793
|
Posted: Sun Jul 27, 2008 9:54 am Post subject: |
|
|
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 |
|
|
Stolz Moderator
Joined: 19 Oct 2003 Posts: 3028 Location: Hong Kong
|
Posted: Sun Jul 27, 2008 12:22 pm Post subject: Re: [bashrc] - Trucos para bash |
|
|
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" | 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: | 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 |
|
|
Inodoro_Pereyra Advocate
Joined: 03 Nov 2006 Posts: 2631 Location: En la otra punta del cable
|
Posted: Mon Jul 28, 2008 4:16 am Post subject: |
|
|
WOW!!
Me han hecho perder un par de horas haciendo experimentos!
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 _________________ Mi Blog.
Si no fuera por C, estaríamos escribiendo programas en BASI, PASAL y OBOL. |
|
Back to top |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Mon Jul 28, 2008 8:42 am Post subject: |
|
|
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 |
|
|
Annagul Apprentice
Joined: 05 Dec 2004 Posts: 156 Location: San Fernando, Cádiz (Spain)
|
Posted: Mon Jul 28, 2008 11:44 am Post subject: |
|
|
Un hilo excelente, muchas gracias por compartir vuestros bashrc's .
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 |
|
|
piponazo Tux's lil' helper
Joined: 09 Feb 2008 Posts: 102 Location: Córdoba - Spain
|
Posted: Mon Jul 28, 2008 1:35 pm Post subject: |
|
|
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 |
|
|
7th_sign Apprentice
Joined: 18 Jan 2004 Posts: 176
|
Posted: Thu Jul 31, 2008 6:05 pm Post subject: |
|
|
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 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 |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Fri Aug 08, 2008 10:35 pm Post subject: Re: [bashrc] - Trucos para bash |
|
|
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 |
|
|
Stolz Moderator
Joined: 19 Oct 2003 Posts: 3028 Location: Hong Kong
|
Posted: Sat Aug 09, 2008 12:19 am Post subject: Re: [bashrc] - Trucos para bash |
|
|
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 |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Sat Aug 09, 2008 1:38 pm Post subject: |
|
|
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 |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Sat Aug 09, 2008 3:51 pm Post subject: |
|
|
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 |
|
|
pcmaster Advocate
Joined: 04 Dec 2003 Posts: 2234 Location: Barcelona
|
|
Back to top |
|
|
Cereza Guru
Joined: 14 Apr 2006 Posts: 428
|
Posted: Sun Aug 10, 2008 7:27 pm Post subject: |
|
|
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:
Saludos. |
|
Back to top |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Sun Aug 10, 2008 7:33 pm Post subject: |
|
|
Cereza wrote: | Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
|
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 |
|
|
achaw l33t
Joined: 09 Aug 2006 Posts: 689 Location: Argentina
|
Posted: Sun Aug 10, 2008 8:20 pm Post subject: |
|
|
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 |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Sun Aug 10, 2008 8:50 pm Post subject: |
|
|
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 |
|
Back to top |
|
|
Cereza Guru
Joined: 14 Apr 2006 Posts: 428
|
Posted: Sun Aug 10, 2008 8:56 pm Post subject: |
|
|
Coghan wrote: | Cereza wrote: | Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
|
Para eso ya existe el comando cd a secas. |
Fíjateeeeeeeeeee :oops: :lol: |
|
Back to top |
|
|
Inodoro_Pereyra Advocate
Joined: 03 Nov 2006 Posts: 2631 Location: En la otra punta del cable
|
Posted: Mon Aug 11, 2008 12:43 am Post subject: |
|
|
Cereza wrote: | Coghan wrote: | Cereza wrote: | Se me acaba de ocurrir de casualidad un alias muy sencillito y muy chorras:
|
Para eso ya existe el comando cd a secas. |
Fíjateeeeeeeeeee |
Yo tampoco sabía
Salud! _________________ Mi Blog.
Si no fuera por C, estaríamos escribiendo programas en BASI, PASAL y OBOL. |
|
Back to top |
|
|
|