GNU/Linux >> Tutoriales Linux >  >> Linux

¿Puede ',' tener un alias de '..'?

Los alias no están destinados a hacer esto, pero puede crear una función llamada cd eso es un envoltorio para el verdadero cd . ¡Esta funciona para mí! Solo ponlo en tu .bash_profile o el archivo de perfil de su elección.

cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }

O, con comentarios y un bonito formato:

cd ()
{
  if [ "$1" = ",," ]; then  # if first argument is ",,"...
    builtin cd ..           # call the builtin cd with ".." instead...
  else
    builtin cd "[email protected]"         # else call builtin cd with original arguments 
  fi
}

EDITAR

Gracias @derobert por señalar que if then else es mejor aquí que && || . Además, me acabo de dar cuenta (*facepalm *) que esta implementación solo funcionará si hay argumentos que no sean de ruta (es decir, -L -P ) no son el primer argumento. Así que ten cuidado, si tienes la mala costumbre de escribir cd -L ,, esto no te va a ayudar. Y eso no es trivial de manejar correctamente, creo.


ZSH:

Si estás usando zsh alias -g ,,=".." es lo que necesita, pero esto hará que "," se expanda en todas partes, no solo cuando se usa con cd .

Desde man zshbuiltins :

Si el -g la bandera está presente, defina un alias global; los alias globales se expanden incluso si no aparecen en la posición de comando.

BASH:

Si está restringido a bash (ya que la pregunta está etiquetada con bash), lea lo siguiente:

Esta es una solución de alias puro, según lo solicitado, sin embargo esto hará más de lo necesario posiblemente frustrando al usuario (vea la advertencia al final de mi publicación).

Citando man bash :

Si el último carácter del valor del alias está en blanco, la siguiente palabra de comando que sigue al alias también se comprueba para la expansión del alias.

Por lo tanto, es suficiente con alias cd con un espacio adicional (para permitir la expansión de su próximo argumento) y luego alias ,, a .. . Mira eso

alias cd='cd '
alias ,,='..'

da exactamente lo que necesitas.

Tenga en cuenta que esto es correcto no solo para bash (y su alias implementación), pero todos los shells compatibles con POSIX. Citando un ejemplo de man 1p alias (el manual no describe esta función explícitamente, solo a través de un ejemplo):

  1. Configure nohup para que pueda manejar un argumento que es en sí mismo un nombre de alias:

           alias nohup="nohup "
    

Advertencia: Como escribe @PeterCordes en su comentario, automáticamente causará otro alias para expandir cuando se escribe después de cd . Puede requerir que escribas cd \grep si desea cambiar el directorio a uno llamado grep pero tu grep es un alias para grep --color=auto . Sin la barra invertida, cd informará el error "demasiados argumentos" (no puede cd a dos directorios a la vez)!.


Los alias deben ser la primera palabra de un comando Además, el alias debe sustituirse por una palabra por lo tanto, sin espacios).

Manual de referencia de Bash:Alias

Los alias permiten sustituir una cadena por una palabra cuando se usa como la primera palabra de un simple comando.

Podrías alias tanto .. y ,, ser cd .. .

$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/

Linux
  1. ¿Cómo pasar parámetros a un alias?

  2. ¿Se puede conectar un script Bash a un archivo?

  3. ¿Ejecutar un comando que está sombreado por un alias?

  4. ¿Se puede personalizar el tamaño de fuente de Grub?

  5. ¿Cómo puedo usar comandos con alias con xargs?

Cómo crear alias de Bash

13 maneras en que puede ayudar a Linux

Cómo crear un alias SSH en Linux

Comando alias en Linux

Cómo crear un alias en Linux

Comando de alias de Linux