Estou usando o Windows e o Ubuntu em paralelo e faço coisas de console nos dois.
No Windows eu posso fazer uma
C:\Users\Thomas>cd..\..
C:\>
No entanto, no Linux, isso não funciona, nem com barras invertidas nem com barras invertidas.
21:17:10 $ cd../..
bash: cd../..: No such file or directory
Como muitas vezes cometi esse erro, tentei definir um alias .bash_aliases
para essa situação:
alias cd../..='cd ../..'
alias cd..\..='cd ../..'
Quando inicio uma nova festança, recebo
21:16:26 $ bash
bash: alias: `cd../..': invalid alias name
Como eu configuraria aliases para cd..\..
e cd../..
corretamente?
O cd..\..
parece ter problemas com o caractere de escape:
21:39:43 $ cd..\..
bash: cd....: command not found
Não funciona, mesmo se eu definir outro alias para cd....
.
/
caractere. A\
versão, por outro lado, deve funcionar bem.man bash
: os caracteres /, $, `e = e qualquer um dos metacaracteres do shell ou caracteres de citação listados acima podem não aparecer em um nome alternativo.man alias
e não existia. Se você der isso como resposta, eu aceito.Respostas:
/
e\
estão entre os caracteres que não podem aparecer no nome alternativo do Bash. Deman bash
:Como solução alternativa, você pode alternar para o Zsh, que permite:
fonte
Você não pode usar barras em um nome alternativo. No entanto, o Bash os permite nomes de funções, para que você possa transformar isso em uma função:
Você não pode usar barras invertidas em um alias ou nome de função. O caractere de barra invertida cita o próximo caractere, portanto,
cd..\..
é analisadocd....
também, muito antes da cadeia de caracteres ser procurada como um nome de comando. Se você quiser chamar um comando chamadocd..\..
, você precisa digitarcd..\\..
,'cd..\..'
ou algo equivalente. Além disso, um nome de comando que foi citado de qualquer forma não é considerado para pesquisa de alias, portanto, você nunca pode usar um nome de alias que contenha uma barra invertida. O Bash também não permite barras invertidas nos nomes das funções. Comocd..\..
é analisado comocd....
, você pode definir uma função chamadacd....
(como acima).Se você usar o
cd
comando, precisará digitar o espaço após ele, como qualquer outro comando. Mas você pode salvar a digitação não digitandocd
nada. Defina aautocd
opção com a seguinte linha em~/.bashrc
:Em seguida, você pode digitar um nome de diretório na linha de comando e "executar" esse diretório será alterado para ele.
fonte
shopt
coisa, eu provavelmente vou perder essa funcionalidade no Windows breve :-)autocd
foi uma das razões pelas quais mudei para o zsh, quando o bash não o possuía. A única maneira decente de usar o Windows é instalar o Cygwin de qualquer maneira, completo com o zsh."Você não pode usar barras em um apelido ou nome de função "? Isso é novidade para mim. Uso a seguinte função shell há anos no Linux e OS X bash e nunca tive nenhum problema:
Naturalmente, também
cd../..
é um bom nome de função. Uma barra pode ser usada em um nome de função de shell.Quanto à versão da barra invertida, você não pode incorporá-la em um apelido ou nome da função, mas não precisa: Quando você digita
cd..\..
, o bash interpreta a barra invertida como uma fuga e tenta executar o resultadocd....
. Então defina isso e você pode fazer tudo o que procurava. Você é bem vindo.fonte
Se você deseja manter os aliases, por que não fazer:
Ou, se você precisa ir caminho de volta:
Não faço ideia de como isso ajuda você a se manter mentalmente sincronizado com o cérebro do Windows, mas ainda parece um caminho simples. (Pelo menos para aqueles de nós que têm a sorte de não precisar se preocupar com a maneira como as coisas são feitas no Windows.)
fonte