2 votos

Crear un alias automático para cada carpeta en una carpeta específica en bash_profile o bash_alias

Usando macOS Sonoma 14.2.1

Creamos un alias en .bash_profile o .zsh_profile y agregamos el alias de esta forma:

alias dev='cd ~/Developer'

Ahora hay muchas carpetas dentro de esta y para cada proyecto tengo que crear un alias para acceder de forma rápida.

Ahora en la carpeta Developer hay 3 carpetas de proyectos:

.Developer
 apple
 canvas
 demo

Actualmente, he creado un alias separado para cada carpeta para acceder a ellas de la siguiente manera:

alias apple='cd ~/Developer/apple'
alias canvas='cd ~/Developer/canvas'
alias demo='cd ~/Developer/demo'

Esto funciona bien pero estoy buscando alguna solución óptima o un script de bash que genere automáticamente un alias para cada carpeta de una carpeta específica y lo añada al .bash_profile.

O cuando se crea una nueva carpeta en este directorio, que automáticamente añada un nuevo alias para la nueva carpeta.

6voto

Puede ser más fácil agregar ~/Developer a CDPATH (funciona tanto en bash como en zsh) y luego usar cd fancyproject para cambiar a ~/Developer/fancyproject.

Pero si prefieres usar alias, y suponiendo que estás utilizando tu shell para crear nuevos directorios de desarrollo, puedes incluir una función de shell en ~/.bash_profile para crear el directorio, un alias en el shell actual y una entrada en ~/.bash_profile de una sola vez ejecutando mkdevdir fancyproduct.

function mkdevdir() {
    [[ "$1" ]] || return 1

    local _dev=~/Developer
    [[ -e "${_dev}/$1" ]] && return 2

    mkdir "${_dev}/$1"
    alias $1="cd ${_dev}/$1"
    echo "alias $1=\"cd ${_dev}/$1\"" >> ~/.bash_profile
}

ADVERTENCIA: Si tu nuevo proyecto tiene el mismo nombre que un comando existente, el alias recién creado tomará precedencia. Usa \name para suprimir la expansión del alias.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X