Estoy usando Windows y Ubuntu en paralelo y hago cosas de consola en ambos.
En Windows puedo hacer un
C:\Users\Thomas>cd..\..
C:\>
Sin embargo, en Linux esto no funciona, ni con barras invertidas ni con barras diagonales.
21:17:10 $ cd../..
bash: cd../..: No such file or directory
Como a menudo cometo ese error, he tratado de definir un alias .bash_aliases
para esa situación:
alias cd../..='cd ../..'
alias cd..\..='cd ../..'
Cuando comienzo una nueva fiesta, me sale
21:16:26 $ bash
bash: alias: `cd../..': invalid alias name
¿Cómo configuraría alias cd..\..
y cd../..
correctamente?
El cd..\..
parece tener problemas con el personaje de escape:
21:39:43 $ cd..\..
bash: cd....: command not found
No funciona, incluso si defino otro alias para cd....
.
/
carácter. La\
versión, por otro lado, debería funcionar bien.man bash
: Los caracteres /, $, `y = y cualquiera de los metacaracteres de shell o los caracteres de comillas enumerados anteriormente pueden no aparecer en un nombre de alias.man alias
y no existía. Si das eso como respuesta, lo aceptaré.Respuestas:
/
y se\
encuentran entre los caracteres que no pueden aparecer en un nombre de alias Bash. Deman bash
:Como solución alternativa, puede cambiar a Zsh, que permite ambos:
fuente
No puedes usar barras en un nombre de alias. Sin embargo, Bash los permite en los nombres de funciones, por lo que puede hacer que sea una función:
No puede usar barras invertidas en un alias o nombre de función. El carácter de barra diagonal inversa cita el siguiente carácter, por lo que
cd..\..
se analiza comocd....
, mucho antes de que esa cadena se busque como un nombre de comando. Si desea llamar a un comando llamadocd..\..
, tiene que escribircd..\\..
,'cd..\..'
o algo equivalente. Además, un nombre de comando que se citó de alguna manera no se considera para la búsqueda de alias, por lo que nunca puede usar un nombre de alias que contenga una barra diagonal inversa. Bash tampoco permite barras invertidas en los nombres de las funciones. Comocd..\..
se analiza comocd....
, puede definir una función llamadacd....
(como arriba).Si usa el
cd
comando, tendrá que escribir el espacio después de él, como cualquier otro comando. Pero puede guardar la escritura al no escribircd
en absoluto. Establezca laautocd
opción con la siguiente línea en~/.bashrc
:Luego puede escribir un nombre de directorio en la línea de comando, y "ejecutar" ese directorio cambiará a él.
fuente
shopt
esto, probablemente extrañaré esa funcionalidad en Windows pronto :-)autocd
fue una de las razones por las que cambié a zsh, cuando bash no lo tenía. La única forma decente de usar Windows es instalar Cygwin de todos modos, completo con zsh."¿No puedes usar barras en un alias o nombre de función "? Eso es nuevo para mí. He estado usando la siguiente función de shell durante años en Linux y OS X bash, y nunca tuve ningún problema:
Naturalmente, también
cd../..
es un buen nombre de función. Se puede usar una barra oblicua en un nombre de función de shell.En cuanto a la versión de barra diagonal inversa, no puede incrustarla en un alias o nombre de función, pero no tiene que: Cuando escribe
cd..\..
, bash interpreta la barra diagonal inversa como un escape e intenta ejecutar el resultadocd....
. Así que defina eso y podrá hacer todo lo que buscaba. De nada.fuente
Si desea mantener los alias, ¿por qué no simplemente hacer lo siguiente?
O, si usted necesita ir camino de regreso:
No tengo idea de qué tan bien eso te ayuda a mantenerte mentalmente sincronizado con tu cerebro de Windows, pero esto todavía parece una manera simple de hacerlo. (Al menos para aquellos de nosotros que tenemos la suerte de no tener que preocuparnos por cómo se hacen las cosas en Windows).
fuente