"El diseño es el embajador silencioso de tu marca"
- Paul Brand

Comienza a usar Oh-my-Zsh

Antes de hablaros del proyecto open source oh-my-zsh es necesario explicar que es Zsh y porqué merece la pena que comenzar a usarlo.

En primer lugar Zsh es la abreviatura de ZShell una terminal alternativa a la que traen muchas distribuciones de Linux.

Por ejemplo, Ubuntu viene configurado para ser usado con Bash, y aunque no esta nada mal, podríamos buscar por la razón que sea, un Shell más potente y configurable, si eso es lo que necesitas muy probablemente acabes llegando hasta Zsh.

Que nadie piense que por instalar Zsh pierdes Bash, al instalarlo simplemente tendrás disponibles ambos, y después tu decides cual usar (casi seguro que va a ser Zsh ya verás).

Zsh es una alternativa muy interesante al shell nativo de nuestra distribución de Linux/Unix/MacOs y esto no soy yo quien lo dice, solo el proyecto Oh-my-Zsh tiene alrededor de 67.000 estrellas en Github y ha sido forkeado más de 14.000 veces.

Para que os hagáis una idea de la dimensión de esto, jQuery tiene casi 50.000 estrellas, así que se trata de un proyecto que usa muchísima gente y algo bueno tendrá para que sea así.

¿Entonces que es oh-my-zsh?

Dicho de forma simple oh-my-zsh es un proyecto que sirve para configurar y añadirle plugins y temas al Shell Zsh

Para que nos hagamos una idea de porque son importante los plugins y los temas, simplemente pensemos en un editores como Sublime, Studio Code, Notepad++ y otros tantos, ¿que hariamos si nos quitaran los plugins y temas instalados que les tenemos?

Pues Zsh es lo mismo, por si solo es muy bueno y ya tiene características que lo hacen superior a otros shells, pero si le añadimos plugins y temas (que tiene muchísimos) aumentamos sus capacidades y conseguimos un terminal justo para lo que queremos.

Por esta razón el framework oh-my-zsh es casi imprescindible.

¿Que ventajas tiene oh-my-zsh?

Claro está que, solo porque tenga esa enorme cantidad de estrellas en Github, no es una razón válida para que convencer a nadie que lo instale en su máquina.

Como lo que realmente importa es el valor real que te aporta en el día a día, vamos a ver las razones por la que puede ser el mejor shell para ti, obviamente si de estas cosas que te cuento ninguna te va a resultar práctica no lo instales.

En primer lugar la integración que nos proporciona con git es espectacular, y un buen programador suele usar siempre algún tipo de control de versiones, siendo git la opción más popular hoy en día.

Entre las cosas que ganamos esta la información adicional que puede mostrarnos por consola, como la rama en la que estamos, ver si tenemos cambios por confirmar, ver cuantos commits estamos por encima o por debajo del remoto, número de stashes, el hash de nuestro commit actual…

La verdad es que tenemos a nuestra disposición prácticamente toda la información relevante de nuestro repo, ahora es decisión nuestra que queremos mostrar en nuestro tema.

Mucha información podría hacer poco legible nuestra consola, así que tenemos que decidir que necesitamos tener.

Además oh-my-zsh nos da un gran número de alias para casi todas las operaciones que necesitemos usar en git, y otras muchas que seguro no hemos usado nunca, si quieres ver cuales son te los dejo aquí debajo.

Alias Comando
g git
ga git add
gaa git add –all
gapa git add –patch
gb git branch
gba git branch -a
gbd git branch -d
gbl git blame -b -w
gbnm git branch –no-merged
gbr git branch –remote
gbs git bisect
gbsb git bisect bad
gbsg git bisect good
gbsr git bisect reset
gbss git bisect start
gc git commit -v
gc! git commit -v –amend
gca git commit -v -a
gca! git commit -v -a –amend
gcan! git commit -v -a –no-edit –amend
gcans! git commit -v -a -s –no-edit –amend
gcam git commit -a -m
gcsm git commit -s -m
gcb git checkout -b
gcf git config –list
gcl git clone –recursive
gclean git clean -fd
gpristine git reset –hard && git clean -dfx
gcm git checkout master
gcd git checkout develop
gcmsg git commit -m
gco git checkout
gcount git shortlog -sn
gcp git cherry-pick
gcpa git cherry-pick –abort
gcpc git cherry-pick –continue
gcs git commit -S
gd git diff
gdca git diff –cached
gdct git describe –tags `git rev-list –tags –max-count=1`
gdt git diff-tree –no-commit-id –name-only -r
gdw git diff –word-diff
gf git fetch
gfa git fetch –all –prune
gfo git fetch origin
gg git gui citool
gga git gui citool –amend
ggpnp git pull origin $(current_branch) && git push origin $(current_branch)
ggpull git pull origin $(current_branch)
ggl git pull origin $(current_branch)
ggpur git pull –rebase origin $(current_branch)
glum git pull upstream master
ggpush git push origin $(current_branch)
ggp git push origin $(current_branch)
ggsup git branch –set-upstream-to=origin/$(current_branch)
gignore git update-index –assume-unchanged
gignored git ls-files -v | grep «^:lower:«
git-svn-dcommit-push git svn dcommit && git push github master:svntrunk
gk gitk –all –branches
gl git pull
glg git log –stat –max-count = 10
glgg git log –graph –max-count = 10
glgga git log –graph –decorate –all
glo git log –oneline –decorate –color
glog git log –oneline –decorate –color –graph
glp _git_log_prettily (git log –pretty=$1)
gm git merge
gmt git mergetool –no-prompt
gp git push
gpoat git push origin –all && git push origin –tags
gr git remote
grba git rebase –abort
grbc git rebase –continue
grbs git rebase –skip
grbi git rebase -i
grh git reset HEAD
grhh git reset HEAD –hard
grmv git remote rename
grrm git remote remove
grset git remote set-url
grt cd $(git rev-parse –show-toplevel || echo «.»)
grup git remote update
grv git remote -v
gsd git svn dcommit
gsps git show –pretty = short –show-signature
gsr git svn rebase
gss git status -s
gst git status
gsta git stash save
gstaa git stash apply
gstd git stash drop
gstl git stash list
gstp git stash pop
gsts git stash show –text
gts git tag -s
gunignore git update-index –no-assume-unchanged
gunwip git log -n 1 | grep -q -c «–wip–» && git reset HEAD~1
gup git pull –rebase
gvt git verify-tag
gwch git whatchanged -p –abbrev-commit –pretty = medium
gwip git add -A; git ls-files –deleted -z | xargs -r0 git rm; git commit -m «–wip–«

 

Otro de los puntos fuertes que tiene es la navegación entre directorios, y considero que es muy interesante porque si usamos mucho la linea de comandos seguro que lo usamos. Veamos algun ejemplo:

  1. Solo con escribir cd y tabular nos muestra todos los directorios que cuelgan del punto donde estamos, podemos movernos por ellos luego tanto con el tabularor como con las flechas.
  2. Escribiendo ‘..’ navega al directorio superior, con ‘…’ navega dos niveles por encima, con ‘….’ ya son tres niveles, y así sucesivamente.
  3. No es necesario escribir cd para navegar, si pones solo el nombre de la carpeta ya es suficiente.
  4. Ni es necesario escribir todo el nombre de la carpeta para navegar, si pones cd y comienzas a escribir el nombre, el intenta adivinarlo, de manera que autocompleta si solo hay una opcion o te muestra los coincidentes si hay varias.

A mayores existen plugins como autojump o Z que aun mejoran más la navegación, para cosas como navegar automáticamente al directorio que mas utilizamos (hay un historial de directorios) solo con escribir porque letra o letras empieza.

También mejora la búsqueda en el historial de comandos, si no sabes de lo que hablo, tu en Bash por ejemplo pulsando la tecla de flecha arriba/abajo podías navegar entre los últimos comandos que fuiste usando.

En Zsh se va un paso más allá y si comienzas a escribir un comando y luego pulsas las teclas de flecha arriba/abajo muestra los últimos comandos usados que coincidan con lo que has puesto.

Esta caraterística es como hacer una búsqueda inversa solo que es más rápido.

A mayores como decíamos, podemos usar algunos de los muchos plugins que la comunidad desarrolla para hacerlo aun más completo.

Por citar algunos…

  • Zsh-autosuggestions para el autocompletado de comandos
  • Sudo que como bien indica sirve para añadir sudo al comando que este escrito o si no hay ninguno al que escribieramos antes.
  • Zsh-syntax-highlighting para que resalte la sintaxis en el terminal
  • Extract que nos provee de un comando para descomprimir la mayoría de archivos desde el terminal.

¿Como instalo oh-my-zsh?

Si llegados a este punto no estás seguro de si instalar o no Zsh deja que te haga una recomendación, instalalo igual y pruebalo unos dias que es la mejor manera de que te convenzas si merece la pena, total como deciamos al principio no tienes que desinstalar Bash, ni tan si quiera tienes que hacer de Zsh tu shell por defecto, si decides quitarlo no hay ningun problema.

En primer lugar instalamos Zsh con este comando:

sudo apt-get install zsh

Y listo, tenemos la base, ahora instalamos el framework oh-my-zsh para gestionar de forma sencilla todo:

// CON CURL
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

//CON WGET
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Ya tenemos todo listo, más fácil imposible.

Y si no te gusta lo puedes desinstalar con este comando:

uninstall_oh_my_zsh

En un próximo tutorial os explicaré como añadir o quitar plugins y temas, un saludo!

The following two tabs change content below.
Especialista en diseño web responsive, programador html5, css3, jquery, php y java.

Latest posts by Óscar Lijó (see all)