Aumente su productividad utilizando alias
Al que inventó el cero… gracias por nada. 😂
Bueno, en serio, el cero es muy importante y los alias también, y por eso te voy a explicar cómo puedes añadirlos a tu flujo de trabajo, si aún no los estás usando, para aumentar tu productividad.
Qué es un alias
Es sólo un atajo, pero importante. Tómate un segundo para pensar en un comando que utilices a diario, por ejemplo, cd un básico para cambiar el directorio.
Supongamos que estás en este directorio:
~/projects/2021/technologies/react/my-project/src/Components
Ahora, ¿cuáles son sus opciones para volver al directorio projects? Bueno, puedes hacer algo básico como esto:
cd ../
cd ../
cd ../
cd ../
cd ../
cd ../
# o
cd ../../../../../../
# o
cd $HOME/projects
# o
cd ~/projects
una forma fácil podría ser algo como
projects
internamente el comando real podría definirse como:
alias projects='cd ~/projects'
Como se puede ver en los ejemplos el uso de alias es útil porque se puede ahorrar tiempo y evitar errores tipográficos al ejecutar un comando. Sí, el uso de un alias puede parecer complicado, no te preocupes una vez que termines de leer buscarás un comando para crear tu propio alias.
Crear un alias
Hay varias maneras de crear un alias, pero mi recomendación es trabajar en un archivo aislado en lugar de editar varias veces el .bashrc o .zshrc. Además, si mantienes tus alias en un archivo separado lo puedes versionar en un gist o algún repositorio dedicado para tus configuraciones, ahora vamos a ver cómo hacerlo.
- Dirígite a tu directorio personal:
cd $HOME - Crea un archivo oculto fácil de identificar:
touch .custom_alias - Utiliza
vi,nano,vimo el editor que quieras para abrir el archivo. - Añade estos alias (algo básico para entender el uso):
alias h='cd $HOME' alias r='reset' alias c='clear' - Guarda los cambios
- Ahora tienes que editar tu
.bashrco.zshrcpara cargar el alias al iniciar la terminal, en mi caso estoy usando Oh My ZSH! así que tengo que ejecutar:vim .zshrc. - En tu archivo desplazate hacia abajo y añade algo como:
[ -f $HOME/.custom_aliases] && . $HOME/.custom_aliases - Para “recargar” los alias es necesario abrir una nueva terminal o en la actual ejecutar:
source .zshrcosource .bashrcpor supuesto, depende de tus preferencias. - Eso es todo, ahora si te mueves a algún directorio como:
~/projects/2021/technologies/react/my-project/src/Componentssólo necesitas ejecutarhpara volver a la ruta de inicio.
Modo avanzado
Vamos a pasar a algo más complejo sólo para cubrir las funciones como un alias. Por supuesto, puedes ejecutar comandos en línea, pero para casos específicos es mejor crear una función que ejecute varios comandos.
En un escenario imaginario donde estás trabajando con React y siempre usas la misma estructura de componentes tal vez vas a usar tu editor para agregar cada archivo manualmente pero sería mucho más fácil simplemente ejecutar un comando para generar la estructura, entonces, podrías agregar una función como esta:
# constantes para definir los colores de salida para advertencias o errores
ERROR='\033[0;31m'
WARNING='\033[1;33m'
SRC='src'
function rcomponent() {
if [ -z $1 ]
then
echo -e "${ERROR}You need specify the component name!"
else
if [[ -d $SRC ]]
then
if [[ -d "${SRC}/components/${1}" ]]
then
echo -e "${WARNING}${1} component already exists!"
else
CURRENT_DIRECTORY=$(pwd)
cd "${SRC}/components" && mkdir $1 && cd $1
touch index.js $1.js useStyles.js actions.js reducer.js
cd $CURRENT_DIRECTORY
fi
else
echo -e "${ERROR}${SRC} directory does not exists"
fi
fi
}
Ahora cuando necesites crear un nuevo componente sólo tienes que ejecutar: rcomponent, ¿aún es un alias demasiado largo?, bien, hagámoslo más corto añadiendo una línea al final alias rc=rcomponent y ahora puedes ejecutar rc en tu terminal 🤯.
Después del cambio en
.custom_alias,.zshrco.bashrces necesario cerrar la terminal o ejecutarsource .zshrcosource .bashrc, claro que ahora puedes añadir un alias para hacer eso 😂.
Mis alias
Te confiaré mis alias, tal vez alguno de ellos pueda serte útil.
# constants to define the output colors for warnings or errors
ERROR='\033[0;31m'
WARNING='\033[1;33m'
SRC='src'
function rcomponent() {
if [ -z $1 ]
then
echo -e "${ERROR}You need specify the component name!"
else
if [[ -d $SRC ]]
then
if [[ -d "${SRC}/components/${1}" ]]
then
echo -e "${WARNING}${1} component already exists!"
else
CURRENT_DIRECTORY=$(pwd)
cd "${SRC}/components" && mkdir $1 && cd $1
touch index.js $1.js useStyles.js actions.js reducer.js
cd $CURRENT_DIRECTORY
fi
else
echo -e "${ERROR}${SRC} directory does not exists"
fi
fi
}
# allows editing my .zshrc file no care the current path
function my_zsh_edit() {
vim ~/.zshrc
}
# allows reloading my .zshrc file no care the current path
function my_zsh_reload() {
source ~/.zshrc
}
# create a git branch prefixed as "feature/" : feature login -> feature/login
function feature() {
git checkout -b "feature/"$1
}
# create a git branch prefixed as "hotfix/" : hotfix invalid-token -> hotfix/invalid-token
function hotfix() {
git checkout -b "hotfix/"$1
}
alias develop='git checkout develop' # move directly to develop branch
alias master='git checkout master' # move directly to master branch
alias here='git rev-parse --abbrev-ref HEAD && git rev-parse --abbrev-ref HEAD | pbcopy' # show and copy the current branch to clipboard
alias commit='git commit -m $@' # creates a commit: commit "initial commit"
alias delete='git branch -D $@' # deletes a branch: delete hotfix/invalid-login
alias undo='git reset --soft HEAD^' # revert the last commit keeping the changes
alias amend_msg='git commit --amend -m $@' # update the commit message: amend_msg "this is a new message"
alias amend_date='git commit --amend --date "$(date -R)" --no-edit' # update the commit timestamp: amend_date
alias amend_files='git commit --amend --no-edit' # add missing files to last commit without change the message: add . then amend_files
alias amend_author='git commit --amend --reset-author --no-edit' # change the author after change the git configuration: git config --global user.email example@email.com then amend_author
alias change='git checkout $@' # allows change branch: change feature/login
alias status='git status' # pretty clear just shorter
alias logtree='git log --graph --oneline --decorate --all'
alias log='git log'
alias pull='git pull'
alias push='git push -u origin $(git rev-parse --abbrev-ref HEAD)' # allow push the current branch directly, instead git push -u origin login just push
alias tc='git rev-list --count $(git rev-parse --abbrev-ref HEAD)' # count all commits in the current branch
alias branch='git checkout -b $@' # creates custom named branch: branch my-feature
alias feature='feature' # function alias
alias merge='git merge $@' # shortcut
alias rebase='git rebase $@' # shortcut
alias add='git add $@' # shortcut
alias rename='git branch -m $@' # allows renaming the current branch: my-feature -> rename my-renamed-feature
alias diff='git diff $@' # shortcut
alias stash='git stash' # shortcut
alias drop_stash='git stash drop $@' # drops specified stash: drop_stash 0
alias stash_file='git stash push -m $@ .' # stash files with a custom message: stash_file "my staged files"
alias pop='git stash pop' # drop the last stash
alias checkout='git checkout $@' # moves to specified branch: checkout feature/Login
alias pick='git cherry-pick $@' #takes the changes from a specified hash commit: pick 86ee11cdfd932a8e858e802f8f6d9367c6f607d5
alias commited='git diff-tree --no-commit-id --name-only -r $(git rev-parse --short HEAD)' #show the commited files
alias clean_repo='git branch | grep -v "release/" | grep -v "master" | xargs git branch -D' # runs a repo clean up just keeping the specified branches
alias c='clear'
alias r='reset'
alias h='cd ~/'
alias rcomponent='rcomponent'
alias ys='yarn start'
alias yb='yarn build'
alias ns='npm run start'
Consejo: Puedes listar todos tus alias ejecutando
aliasen tu terminal.
Esta es una lista con los colores básicos (códigos ANSI) para personalizar sus salidas de texto, hay más configuraciones pero eso es otro tema.
# Reset
ORIGINAL_COLOR='\033[0m' # Text Reset
# Regular Colors
BLACK='\033[0;30m' # Black
RED='\033[0;31m' # Red
GREEN='\033[0;32m' # Green
YELLOW='\033[0;33m' # Yellow
BLUE='\033[0;34m' # Blue
PURPLE='\033[0;35m' # Purple
CYAN='\033[0;36m' # Cyan
WHITE='\033[0;37m' # White
Reflexiones finales
¿Podrían decir que eres un vago por usar alias? Tal vez, pero es una forma de ser más inteligente y aprovechar mejor tu tiempo. Como recomendación, no hagas alias de comandos que aún no entiendas del todo. Cuando los entiendas del todo, estarás listo para empezar a ahorrarte algunas teclas. No le tengas miedo a los alias 😄