La mayoría de mis alias son de esta forma: alias p='pwd'
Quiero alias git commit
para que lo hagagit commit -v
Pero intentar crear un alias con un espacio da un error:
$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name
git config
nogit-config
git
comandos existentes con alias, con solo un poco de script de shell. (.! No estoy publicar este comentario como una crítica, por cierto Esa respuesta fue publicada casi un año después de la suya sólo estoy publicar con la esperanza de que la gente pueda encontrar útil.)Estás hablando de un comando que incluye un espacio, pero aquí está el comando
git
y no hay espacio allí.Para llamar a un comando git commit , deberías escribirlo
En general, los comandos no tienen espacio en sus nombres por esa razón por la cual es engorroso llamarlos en un shell, por lo que no creo que encuentres dicho comando en tu sistema.
csh, tcsh o zsh le permitirán alias cualquiera de los anteriores, pero no bash o ksh (aunque pdksh le permitirá pero no le permitirá usarlos). En zsh:
Hará que el
git command
comando (cuando se llame como'git command'
(solo con comillas simples)) sea un alias para elgit
comando con los argumentoscommit
y-v
. Aunque no es lo que estabas buscando, supongo.Debido a
alias
que solo puede alias de comandos , todo lo que puede alias aquí es elgit
comando, y necesitaría alias a algo que inserte un "-v" después de "commit" en su lista de argumentos. Lo mejor sería ir con la solución de @ jw013, pero si por alguna razón no puedes o no quieres, en lugar de usar un alias, puedes usar una función para hacer el trabajo:fuente
En Bash no puede crear un alias para un comando con ningún espacio en blanco.
Sin embargo, uso la siguiente función en mi .bashrc como solución alternativa.
Cómo funciona esto: comienza con el comando al que desea llamar. En mi caso lo es
sudo
.Luego, mencionas qué parámetros tomaría. En este caso
pacman -Syu
,.Si, activado, ¿qué comando debe ejecutar? En la declaración anterior es
pacup.sh
.Si no, lo que es comando a ser ejecutado,
sudo $@
.$@
es, como habrás adivinado por, la lista de parámetros que toma el comando.Entonces, al hacer el comando para su caso particular, sería:
Sin embargo, esta solución es para el caso más general de cuando desea alias de comandos con espacios en blanco en ellos.
En su caso específico, le recomendaría que vaya con la solución de jw013 para alias sus comandos git usando
git-config
fuente
if [[ $1 == 'commit' ]]...
? La expansión de $ @ puede tener más argumentos para el compromiso que realmente desea mantener.Desde la página de manual de bash alias
Entonces, como solo se marca la primera palabra, no puede tener un alias con varias palabras. En esta pregunta de Superusuario, se proporciona una solución alternativa usando una función:
Se puede adaptar a
git
.fuente
\ls
omite un alias parals
.[_!%,@]
que se expandirá una palabra sin comillas que coincida con un nombre de alias válido (que es solo ASCII alnum + ). No prohíbe extensiones como el alias de zsh de '\ ls', o el alias de ksh / dash / bash / zsh de loa-b
contrario no existiría un único shell POSIX. Simplemente dice que un script portátil (no shell) no debería usar ningún alias.'git commit'
en la posición del comando en un shell POSIX, debe invocar una utilidad incorporada, una función o un comando externo.Aunque la solución correcta es usar alias como se sugiere jw013, para crear alias con espacios puede NESAR alias.
Por ejemplo, tengo un alias para eliminar la rama, tanto local como remotamente, pero me gustaría que el usuario especifique la rama siempre:
fuente
A partir de este ejemplo, esto debería funcionar:
Pero con tus comandos:
fuente