Alias variados

Tengo un fichero que pone las cosas a mi gusto en la línea de comandos. Lo llamo x para ejecutarlo poniendo . x (el punto equivale a source, para ejecutar en este mismo bash). Lo tengo enlazado (con un enlace simbólico ln -s x .bash_aliases) para que me lo ejecute al arrancar una consola.

En algunas cosas está un poco desordenado, pero me parece interesante ponerlo porque son detalles interesantes que he ido recopilando. Siento no haber apuntado de dónde he sacado todas, gracias a quienes han compartido sus hacks, sus ajustes.

 
 # If not running interactively, don't do anything
 [ -z "$PS1" ] && return

echo Empezamos personalización 180625

# set variable identifying the chroot you work in (used in the prompt below)
 if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
 debian_chroot=$(cat /etc/debian_chroot)
 fi

# Set a colored shell prompt

# Black 0;30 Dark Gray 1;30
 # Red 0;31 Bold Red 1;31
 # Green 0;32 Bold Green 1;32
 # Yellow 0;33 Bold Yellow 1;33
 # Blue 0;34 Bold Blue 1;34
 # Purple 0;35 Bold Purple 1;35
 # Cyan 0;36 Bold Cyan 1;36
 # Light Gray 0;37 White 1;37

# del .bash_prompt de HypriotOS
 # @gf3’s Sexy Bash Prompt, inspired by “Extravagant Zsh Prompt”
 # Shamelessly copied from https://github.com/gf3/dotfiles

default_username='unknown'
 PROMPTCHAR="\$"
 OSNAME="LinuxOS: "

if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
 export TERM=gnome-256color
 elif infocmp xterm-256color >/dev/null 2>&1; then
 export TERM=xterm-256color
 fi

if tput setaf 1 &> /dev/null; then
 tput sgr0
 if [[ $(tput colors) -ge 256 ]] 2>/dev/null; then
 BLUE=$(tput setaf 4)
 MAGENTA=$(tput setaf 9)
 ORANGE=$(tput setaf 172)
 GREEN=$(tput setaf 70)
 PURPLE=$(tput setaf 141)
 RED=$(tput setaf 1)
 else
 BLUE=$(tput setaf 4)
 MAGENTA=$(tput setaf 5)
 ORANGE=$(tput setaf 3)
 GREEN=$(tput setaf 2)
 PURPLE=$(tput setaf 1)

fi
 BOLD=$(tput bold)
 RESET=$(tput sgr0)
 else
 BLUE="\033[1;34m"
 MAGENTA="\033[1;31m"
 ORANGE="\033[1;33m"
 GREEN="\033[1;32m"
 PURPLE="\033[1;35m"
 BOLD=""
 RESET="\033[m"
 fi

CACHARRO=$ORANGE
 USERCOLOR=$GREEN # color de usuario
 CAMINO=$BLUE

if [ "$HOSTNAME" == "lsi-Latitude-E4300" ] ; then # portatil
 CACHARRO=$AZUL
 OSNAME="PortatilOS: "
 fi
 if [ "$HOSTNAME" == "Pi3" ] ; then
 CACHARRO=$BLUE
 CAMINO=$MAGENTA
 fi

function git_info() {
 # check if we're in a git repo
 git rev-parse --is-inside-work-tree &>/dev/null || return

# quickest check for what branch we're on
 branch=$(git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||')

# check if it's dirty (via github.com/sindresorhus/pure)
 dirty=$(git diff --quiet --ignore-submodules HEAD &>/dev/null; [ $? -eq 1 ]&& echo -e "*")

echo $RESET$BOLD" on "$PURPLE$branch$dirty
 }

# Only show username/host if not default
 function usernamehost() {
 # if [ $USER != $default_username ]; then
 echo "${BLUE}${OSNAME}${USERCOLOR}$USER${RESET}${BOLD}@${CACHARRO}$HOSTNAME${RESET}${BOLD} / ";
 # else
 # echo "${BLUE}${OSNAME}";
 # fi
 }

# iTerm Tab and Title Customization and prompt customization
 # http://sage.ucsc.edu/xtal/iterm_tab_customization.html

# Put the string " [bash] hostname::/full/directory/path"
 # in the title bar using the command sequence
 # \[\e]2;[bash] \h::\]$PWD\[\a\]

# Put the penultimate and current directory
 # in the iterm tab
 # \[\e]1;\]$(basename $(dirname $PWD))/\W\[\a\]

PS1="\[\e]2;$PWD\[\a\]\[\e]1;\]$(basename "$(dirname "$PWD")")/\W\[\a\]${BOLD}\$(usernamehost)\[$CAMINO\]\w\$(git_info)\[$RESET\]\[$BOLD\]\n${PROMPTCHAR} \[$RESET\]"

###################################################################3

# ver http://zipcon.net/~swhite/docs/computers/linux/colors.sh

USER=`whoami`

if [ $USER = 'root' ] ; then
 USERCOLOR=$MAGENTA
 fi

PS2="$USERCOLOR> \[\e[0m\]" # cuando la linea se termina con \ y salto
 ###### PS1="${debian_chroot:+($debian_chroot)}$USERCOLOR\u$NORMAL$CACHARRO@\h$NORMAL:$DIR\w\n:-$( [ $? == 0 ] && echo ") " || echo "( " ) \$ $NORMAL "

PS1="\[\e]2;$PWD\[\a\]\[\e]1;\]$(basename "$(dirname "$PWD")")/\W\[\a\]${BOLD}\$(usernamehost)\[$CAMINO\]\w\$(git_info)\[$RESET\]\[$BOLD\]\n${PROMPTCHAR} \[$RESET\]"

# enable color support of ls and also add handy aliases
 if [ "$TERM" != "dumb" ]; then
 eval "`dircolors -b`"
 alias ls='ls --color=auto'
 fi

# some more ls aliases
 alias lad='ls -ld .*(/)' # only show dot-directories
 alias laa='ls -lA .*(.)' # only show dot-files
 alias lld='ls -ld *(/)' # only show directories
 alias lae='ls -ld *(/^F)' # only show empty directories
 alias ll='ls -lAhF'
 alias la='ls -A'
 alias l='ls -ChlF'
 alias cd..='cd ..'
 alias hoy='date +%y%m%d'
 alias hora='date +%H%M%S'
 alias du1='ionice -c 3 nice du -h --max-depth=1'
 alias vi='vim'
 alias d='echo " S.ficheros Tipo Tamaño Usados Disp Uso% Montado en"; ionice -c 3 df -hT | grep "^/dev/";'
 alias s='ionice -c 3 sync &'
 if [ "$HOSTNAME" == "Proxmox" ] ; then #
 alias d='ionice -c 3 df -hT | grep "^/dev/"; qm list; pct list; ionice -c 3 sync &'
 fi
 alias h='history'
 alias grep='grep --colour -n -i'
 alias scp='scp -p' # preserva fecha
 alias majo='ionice -c 3 nice '
 alias pur='rm -f ./*~;rm -f ./*.synctex*;rm -f ./*.vrb;rm -f ./*backup;rm -f ./*aux;rm -f ./*idx;rm -f ./*log;rm -f ./*lot;rm -f ./*out;rm -f ./*toc;rm -f ./*bbl;rm -f ./*blg;rm -f ./*lof;rm -f ./*brf;rm -f ./*glo;rm -f ./*gls;rm -f ./*ilg;rm -f ./*ind;rm -f ./*snm;rm -f ./*nav'
 alias nuke=pur

if [ $USER = 'root' ] ; then
 alias ap='nice apt update ;ionice -c 3 nice apt upgrade' # ;ionice -c 3 nice apt-get clean'
 else
 alias ap='sudo nice apt update ;sudo ionice -c 3 nice apt upgrade' # ;sudo ionice -c 3 nice apt-get clean'
 fi

alias off='sudo poweroff'
 alias mi='sudo ionice -c 3 chown -R pablo.pablo'
 alias prt='ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | grep FF'

alias ssh='ssh -X'
 alias web='ssh root@$SERVIDOR'
 alias sss='alias| grep ssh; grep -A 1 "() {" ~/x'

alias kmp='kompare 2>/dev/null $1 $2/$1' # () { este comentario para que salga con el alias sss
 alias dif='diff -yEZbwB $1 $2/$1' # () {

alias mp='sudo lsof -i:' #lsof -i:22 mira puertos

alias paquetesbase='dpkg --get-selections | \grep "\binstall\$" | cut -f 1 | while read f ; do c=$(apt-cache rdepends "$f" --installed | wc -l) ; if (($c == 2)) ; then echo -e "$f" ; fi ; done'

alias mkdir='mkdir -pv'
 alias catt='grep -Ev '\''^(#|$)'\''' # cat sin comentarios
 alias kk='sudo $(history -p \!\!)'

7zd() { # 7z + fecha de un dir
 7za a "$@-v-`date +%y%m%d`" "$@"/ ;
 }
 mkcd() { # mkdir + cd
 mkdir "$@";
 cd "$@";
 }
 cdl() { # cd + ls
 cd "$@";
 ls -al;
 }
 rmd() { # rm -rf
 rm -rf "$@";
 }

bu() { # renombra recursivo con fecha
 cp -av $@ $@-v-`date +%y%m%d`; }

busca() { # find + ll
 find . -name "*$1*" -exec ls -ald {} \;
 }

#buscacad() { # find + grep
 # find . -size -$1k -exec grep $2 {} \;
 #}

buscacad() {
 grep --colour -n -i -R $1 $2
 }

svgtex() { # para svg en latex
 for i in *.svg
 do
 inkscape -z -D --file=$i --export-pdf=${i%.*}.pdf --export-latex
 done
 }

alias dd='dd status=progress '
 ddd () { #ddd /dev/sda /dev/sdb
 pv -tpreb "$1" | dd of="$2"
 }

alias doc='docker images; docker ps -a'
 alias nukerun='docker rm $(docker ps -aq)'
 alias nukeim='docker rmi $(docker images -aq)'

nukexit() { # borra contenedores
 docker ps -a | awk "/Exit/ {print $1}" | xargs docker rm
 }

# https://www.gnu.org/software/wget/manual/html_node/
 espejo() { # bajar web: espejo dominio pag
 wget \
 --mirror -p \
 --page-requisites --backup-converted \
 --html-extension --adjust-extension \
 --convert-links \
 --restrict-file-names=windows \
 --domains $1 \
 --no-parent \
 $2
 }

# sudo e4defrag -c /Datos # para desfragmentar

PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

# export CUDA_PATH=/usr/local/cuda
 # export GENN_PATH=/home/pablo/Dev/genn
 # PATH=$PATH:~/Dev/android-studio/gradle/gradle-2.2.1/bin:/home/pablo/ndk/
 # PATH=$PATH:/usr/local/cuda/bin:/home/pablo/android-sdk-linux/platform-tools:/home/pablo/android-sdk-linux/tools:$GENN_PATH/lib/bin
 # LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib

export PATH
 export LD_LIBRARY_PATH

# avoid duplicates..
 export HISTCONTROL=ignoredups:erasedups
 # append history entries..
 shopt -s histappend

# After each command, save and reload history
 #export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
 export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

export ROS_IP=$(LANG=us ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | \grep -Eo '([0-9]*\.){3}[0-9]*' | \grep '158')

if [ -e "/opt/ros/" ] ; then
 export ROS_DISTRO=$(ls /opt/ros/) && echo "Usando ROS $ROS_DISTRO con IP $ROS_IP"
 fi
 if [ -e "/opt/ros/$ROS_DISTRO/setup.bash" ] ; then
 source /opt/ros/$ROS_DISTRO/setup.bash
 fi
 if [ -e "~/Dev/catkin_ws/devel/setup.bash" ] ; then
 source ~/Dev/catkin_ws/devel/setup.bash
 fi
 if [ -e "~/catkin_ws/devel/setup.bash" ] ; then
 source ~/catkin_ws/devel/setup.bash
 fi

alias misip="LANG=us ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | \grep -Eo '([0-9]*\.){3}[0-9]*' | \grep -v '127' ; ip --color --brief addr sh
 "

alias inf='uname -a; /usr/bin/lsb_release -s -d ; lsblk; echo "sudo ubuntu-drivers devices"; misip'

# apt-get install lynis yasat rkhunter & lynis -c yasat --standard rkhunter -c

alias infodiscos='dstat -tdD total,sda,sdb 60'

Escritorio remoto al estilo X

Sesiones gráficas remotas. Tienen mucho interés, por lo menos para entender cómo funciona X2Go que no conocía y que me han “descubierto” los colegas de IZO-SGI HPC en Twitter.

¡Gracias! Continuar leyendo Escritorio remoto al estilo X

SVG en \Latex

Quería aligerar mis presentaciones en Beamer y aumentar la calidad gráfica en cualquier documento de \LaTeX. Evidentemente, la solución pasa por SVG. O se obtiene el gráfico directamente en el formato vectorial, o se convierte cualquier imagen con InkScape, con el menú Trayecto/Vectorizar mapas de bits.

Continuar leyendo SVG en \Latex

ProjectLibre en Ubuntu

Una pequeña entrada para contar cómo se instala ProjectLibre en Ubuntu. Bájate el fichero rpm y:

sudo rpm --rebuilddb #inicializa la BD de rpm si no la habías usado nunca.
sudo alien projectlibre-1.6.2-1.rpm
dpkg -i projectlibre_1.6.2-2_all.deb

Real Time Kernel for the Raspberry SBC

Logo de Hypriot

Hypriot blog

Lately I have been facing a challenge, consisting in the development of a real time kernel for the Raspberry Pi, with the aim of integrating it into the Hypriot Project.

See it in GitHub.

Download the debs for installing the RT kernel from RT (follow the README from Github to install).

 

Continuar leyendo Real Time Kernel for the Raspberry SBC

Kernel de Tiempo Real para Raspberry Pi

Logo de Hypriot

Blog de Hypriot

He estado atareado últimamente con un reto, que consiste en obtener un kernel de tiempo real para la Raspberry Pi que pueda ser integrado en el proyecto Hypriot.

Ver en GitHub.

Continuar leyendo Kernel de Tiempo Real para Raspberry Pi

Dockerfile

Interesante la página que explica los ficheros Dockerfile de theremotelab.io

Una explicación del origen de Docker se puede ver en mi entrada chroot, docker y virtualizaciones

containers

 

top atop htop iotop iftop nethogs powertop nmon

Para ver diferentes rendimientos del sistema tenemos estos comandos, todos a un apt de distancia:

  • top
  • atop
  • htop
  • iotop
  • iftop
  • nethogs
  • powertop
  • nmon
  • bmon
  • ncdu
  • glances

Alguno más hay, como se puede ver por ejemplo en

chroot, docker y virtualizaciones

Hasta hace unos días no había caído en la importancia que va a tener Docker en la futura informática (en mi opinión, claro). ¿Qué es Docker?

Antes vamos a ver chroot.

Continuar leyendo chroot, docker y virtualizaciones

Prácticas no remuneradas

Hace poco he visto el caso de una alumna de último curso que ha realizado prácticas en empresa. Las tareas que ha realizado no han sido simplemente aprender del trabajo de profesionales, sino que ha llevado la mayor parte del trabajo (unos dos tercios) de un proyecto informático real, cuyo cliente era un Organismo Público y con el que la empresa se ha llevado grandes beneficios, puesto que esta trabajadora encubierta no ha cobrado ni siquiera unos tristes gastos de desplazamiento. Lo único que ha ganado es currículo, ni ha cotizado ni tiene antigüedad.

Parece que va a seguir en la empresa con un contrato de trabajo, pero ni soñar con el mileurismo.

Así no vamos a ninguna parte. Luego hablan de que hace falta flexibilidad laboral.

La única forma de frenar esto es que el trabajo se haga en una Empresa Pública de Servicios Informáticos, que se desarrolle y se dé servicio para cualquier entidad pública, que se apueste totalmente por el Software Libre, y que haya una ética del Trabajo Justo.

Vi

Os pongo aquí un manual de Vi totalmente plagiado de http://www.catswhocode.com/blog/130-essential-vim-commands

¡Muchas gracias, Jean! Continuar leyendo Pequeño manual de Vi

Sonido en las X para Android

He usado un poco este servidor de X con Lil Debian, de forma que ejecutas una Debian usando chroot con interfaz gráfica. Se puede incluso enviar el flujo de sonido (streaming).

http://androidforums.com/threads/how-to-getting-audio-working-inside-a-chroot.924537/

Se busca (sysadmin)

El otro día tuve una agradable visita que me hizo revivir la confianza en la Universidad.
Un alumno de Letras necesitaba ayuda y puedo conseguirla difundiendo su petición.
Para hacer un trabajo de fin de carrera TFG también podéis contactar conmigo.
Vendrían bien conocimientos de programación web y de administración de sistemas. Pongo también alojamiento web.

Somos un grupo de jóvenes metidos en un programa de jóvenes
emprendedores con un proyecto de una página web para realizar
intercambios de idiomas (tanto online como presenciales) llamada
LagunTalk. Dado los beneficios que saber varios idiomas nos ofrece hoy
en día, queremos innovar la manera de hacer los intercambios de
idiomas, dirigiendo el proyecto al ámbito de las redes sociales.

Teniendo en cuenta que el proyecto es muy reciente buscamos
colaboradores para el equipo. Agradeceríamos que os pusieseis en
contacto con nosotros si tenéis conocimientos de programación y/o si
pudierais ejercer como administrador de sistemas. Si sois alumnos de
4. curso, incluso se podría encontrar la manera de relacionarlo con
vuestro TFG.
Si os ha gustado la iniciativa y queréis formar parte del equipo de
LagunTalk, no dudéis en buscarnos en Facebook, Twitter, o dirigiros a
la siguiente dirección de correo electrónico,

FB: www.facebook.com/LagunTalk
Twitter: @LagunTalk
e-mail: agonpe2008@gmail.com

P.D: aquí tenéis un par de ejemplos de lo que sería la idea de nuestra web:

www.interpals.net
www.cultusus.com

LagunTalk izeneko proiektu bat esku-artean daramaten gazte talde bat
gara, “emprendedore” gazteei bideratutako programa batean sartuta.
Proiektua hizkuntza trukaketan datza mintzalagunen ekintzak oinarri
bezala hartuz, hizkuntza asko jakiteak ekar ditzakeen onurei begira.
Horrela, hizkuntza trukaketak egiteko modua aldatu nahi dugu,
proiektua sare sozialei begira garatuz.

Proiektu hau oso berria denez, kolaboratzaile bila gabiltza.
Programazio edota sistema administrazioari buruzko ezagutzarik baduzu
eskertuko genuke gurekin kontaktuan jarriko bazina. 4. mailako
ikasleak bazarete, agian zeuen TFGarekin erlazionatzeko modua aurki
daiteke.

Ekimen hau gustatu bazaizue eta gure taldekide izan nahi baduzue, bila
gaitzazue Facebook, Twitter edota hemengo posta elektronikora.

FB: www.facebook.com/LagunTalk
Twitter: @LagunTalk
e-mail: agonpe2008@gmail.com

P.D: hemen duzue gure web orriaren ideiaren antzeko bi adibide:

www.interpals.net
www.cultusus.com

Scratch 2

Scratch es una forma divertida y fácil de aprender a programar, y es un buen camino para eliminar problemas que aparecen al programar en un lenguaje de programación “de verdad”. Vamos a usarlo en la asignatura de Fundamentos de Informática, para que no se les atragante tanto (espero).

Para esto he escrito un manual de Scratch 2 para la asignatura: Aprenda a programar con Scratch en un par de tardes

Se diferencia de los manuales habituales en que éste tiene como objetivo enseñar programación y las operaciones comunes a los lenguajes de programación, y no como los demás, que buscan la descripción de todo lo que se puede hacer con Scratch 2.

Instalación de Scratch 2:

Software interesante, filosofía interesante

Buscando un sistema de comunicación para Android, del tipo DDS, me he topado con éste otro. Hace un tiempo pensé que sería interesante, le dediqué media hora al OpenVPN y decidí que era complicado y que lo vería otro rato. Ahora veo que lo han hecho, muchas gracias NTOP.org y seguro que lo probaré.

Consiste en un sistema de VPN que sabe saltar entre dos dispositivos detrás de NAT y cortafuegos. Más información en

n2n: a Layer Two Peer-to-Peer VPN

Hay que agradecerles no sólo el hecho de que lo publiquen bajo la GPL3 sino la filosofía de la empresa, que se puede resumir en la cita de su página:

As we enjoy great advantages from inventions of others, we should be glad of an opportunity to serve others
by any invention of ours. And this we should do freely and generously.

Benjamin Franklin

 

GAUR e Internet Explorer

Sigo en mi cruzada por el uso de GAUR más allá del Internet Explorer.

Sí, avisas al Centro de Atención al Usuario de la UPV-EHU de que no se puede usar correctamente un sistema de gestión de la universidad desde Firefox y te justifican que sólo dan soporte a Internet Explorer, por lo tanto a Windows.

No sé qué más decir, pero es indignante.

Proxmox: servidores en máquinas virtuales

Me habló un colega de Proxmox, un sistema de virtualización cómodo y flexible. Lo que se complica un poco es saber cómo acceder a los servicios de las máquinas desde el exterior.

La mejor solución es tener todas las máquinas en una red privada 10.10.10.0/24  por ejemplo y redireccionar puertos con iptables desde el fichero /etc/network/interfaces de esta forma:

Continuar leyendo Proxmox: servidores en máquinas virtuales

bash lower case convert

Una entrada rapidita: estaba yo procesando listas de direcciones de correo electrónico y se me duplicaban direcciones a pesar del mágico

cat lista.txt | sort | uniq > listalimpia.txt

porque había alguna mayúscula que a ojo duplicaba direcciones. No era plan de mirar una a una las dos mil, así que me puse a buscar y encontré esta instrucción:

dd if=lista.txt of=listamins.txt conv=lcase

Casi me… me da un soponcio del gusto por no decir otra cosa. Y eso que lo he encontrado buscando “bash case convert”

Ubuntu y Android a la vez en tu móvil

Sabemos que ambos son dos Sistemas Operativos basados en el kernel Linux, pero cada uno de su padre y de su madre. El padre de Ubuntu es Mark Shuttleworth y su madre es la Comunidad de Debian.

Android en cambio tiene como padre a Google y madres adoptivas a NetBSD, Open Handset Alliance y una versión bastarda de Java. Continuar leyendo Ubuntu y Android a la vez en tu móvil

Repositorio de Software Libre-SwL en Android

Tratar sobre F-Droid, un Repositorio de Software Libre en Android era una tarea que tenía pendiente.

Son aplicaciones con licencia libre pueden estar o no en la Play Store de Google. Las aplicaciones tienen enlaces directos a páginas que describen sus características además del lugar de donde se puede obtener sus fuentes y por supuesto, colaborar en su desarrollo.

Esta posibilidad de colaborar en su desarrollo es especialmente interesante al plantearse los Trabajos Fin de Grado (TFG).

Continuar leyendo Repositorio de Software Libre en Android, fácil fácil…