4 votos

Listar todos los alias que empiezan por una cadena determinada

Para mejorar los pasos que tengo que dar para completar algunas acciones en mi Mac, he creado muchos alias. Por ejemplo:

  1. Para abrir las Preferencias del Sistema, algo que tengo que hacer a menudo para gestionar varios monitores, he creado el siguiente alias en ~/.bash_profile :

    alias pref='open -a System\ Preferences'
  2. Para poner mi configuración en modo "Trabajo desde casa", tengo:

    alias wfh='code&rdc&smc&'

    que abre el código de Visual Studio, el escritorio remoto y el cliente de movilidad de Cisco.

  3. Para trabajar con los propios alias tengo:

    alias editbash='nano ~/.bash_profile;source ~/.bash_profile'

    que abre el ~/.bash_profile en el editor nano y luego, cuando termino, automáticamente me genera el contenido actualizado del archivo.


Pregunta:

Tengo numerosos alias que están todos relacionados con git. A menudo olvido el alias de algunas acciones. Sin embargo, la buena noticia es que todos mis alias de git empiezan por gt .

¿Cómo puedo listar sólo los alias que empiezan por una cadena determinada?

4voto

displayName Puntos 218

grep para ellos


  1. Mucho mejor sugerencia de los comentarios - grep en alias.

    Puedes listar todos tus alias, incluso los que no están escritos en ~/.bash_profile llamando a alias .

    grep el resultado para encontrar los alias a partir de gt como:

    alias | grep "^alias gt"

  1. Como los alias se crean escribiendo alias <alias_name>=... , para enumerar los alias que comienzan con, por ejemplo, gt que puedes hacer:

    grep "^alias gt" ~/.bash_profile

    El ^ en el argumento grep es un ancla. El signo de intercalación ^ y el signo del dólar $ son metacaracteres que coinciden respectivamente con la cadena vacía al principio y al final de una línea.

    En ^alias gt implica que sólo quiere las líneas que comienzan con "alias gt". En mi máquina, obtengo el siguiente resultado:

    alias gts="git status" 
    alias gtd="git diff" 
    alias gtpull="git pull"
    alias gtb="git branch"  
    alias gtpush="git push"  
    alias gtpullmk="gtpull;./make all"  
    alias gtst="git stash"  
    alias gtstash="gtst save"  
    alias gtstlist="gtst list"  
    alias gtctall="runformatter;git commit -a"

  1. Alternativamente, usted podría grep sin el ancla como:

    grep gt ~/.bash_profile

    Aquí, simplemente se busca cualquier línea que contenga la subcadena "gt", en cualquier lugar. Como resultado, puede obtener algunas líneas innecesarias, pero obtendrá todos los alias que utilicen cualquiera de sus alias git.

    En mi máquina, obtengo el siguiente resultado utilizando esta búsqueda. Nótese la línea extra en la parte superior, que no estaba presente en la salida anterior:

    alias debugmk="echows;gtb;${ws}/make ${DEBUG_OPTIONS}"  
    alias gts="git status"  
    alias gtd="git diff"  
    alias gtpull="git pull"  
    alias gtb="git branch"  
    alias gtpush="git push"  
    alias gtpullmk="gtpull;./make all"  
    alias gtst="git stash"  
    alias gtstash="gtst save"  
    alias gtstlist="gtst list"  
    alias gtctall="runformatter;git commit -a"

  1. Por último, dependiendo de qué comando te resulte más útil (o incluso de los dos si ambos son útiles), puedes crear un nuevo alias para listar todos los alias relacionados con git:

    alias allgit="alias | grep gt"

2 votos

Vaya... ¡excesivamente complejo! ¿Qué tal si simplemente haces alias | grep "^alias gt" en lugar de procesar su perfil bash. Esto cubrirá todos los alias, incluso los no establecido en .bash_profile

0 votos

@Allan: No lo sabía. Mucho mejor.

1 votos

Además, no es necesario cat en grep :-)

2voto

Michael Zhou Puntos 167

Puedes utilizar los Builtins de finalización programable compgen con el comando a opción. La sintaxis es así:

compgen [option] [word]

El a lista todos los aliases y word coincide con todos los alias que comienzan con esos caracteres. Así que, para responder a tu pregunta de listar todos los alias de git:

compgen -a gt

Puede encontrar más información con este comando:

help compgen

0 votos

compgen no está incorporado. Haciendo man compgen dice "No hay entrada manual para compgen".

1 votos

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