Я использую Windows и Ubuntu параллельно и работаю с консолью на них обоих.
На Windows я могу сделать
C:\Users\Thomas>cd..\..
C:\>
Однако в Linux это не работает ни с обратной косой чертой, ни с прямой косой чертой.
21:17:10 $ cd../..
bash: cd../..: No such file or directory
Поскольку я часто допускаю эту ошибку, я попытался определить псевдоним .bash_aliases
для этой ситуации:
alias cd../..='cd ../..'
alias cd..\..='cd ../..'
Когда я начинаю новый Bash, я получаю
21:16:26 $ bash
bash: alias: `cd../..': invalid alias name
Как бы я настроил псевдонимы для cd..\..
и cd../..
правильно?
cd..\..
, Кажется, есть проблемы с экранирующим символом:
21:39:43 $ cd..\..
bash: cd....: command not found
Это не работает, даже если я определю другой псевдоним для cd....
.
/
символ.\
Версия, с другой стороны, должно работать нормально.man bash
: символы /, $, `и = и любые метасимволы оболочки или символы цитирования, перечисленные выше, могут не отображаться в псевдониме.man alias
и этого не было. Если вы дадите это как ответ, я приму это.Ответы:
/
и\
находятся среди символов, которые не могут появляться в псевдониме Bash. Отman bash
:В качестве обходного пути вы можете переключиться на Zsh, что позволяет:
источник
Вы не можете использовать косую черту в псевдониме. Однако Bash позволяет использовать их в именах функций, поэтому вы можете сделать это функцией:
Вы не можете использовать обратную косую черту в псевдониме или имени функции. Символ обратной косой черты
cd..\..
заключает в кавычки следующий символ, поэтому он анализируетсяcd....
задолго до того, как эта строка будет найдена в качестве имени команды. Если вы хотите вызвать команду с именемcd..\..
, вам нужно ввестиcd..\\..
,'cd..\..'
или чего - то подобного. Кроме того, имя команды, которое каким-либо образом указано в кавычках, не учитывается при поиске псевдонима, поэтому вы никогда не сможете использовать псевдоним, содержащий обратную косую черту. Bash также не допускает обратную косую черту в именах функций. Такcd..\..
как анализируется какcd....
, вы можете определить функцию с именемcd....
(как указано выше).Если вы используете
cd
команду, вам нужно будет ввести пробел после нее, как и любую другую команду. Но вы можете сохранить набор текста, не печатаяcd
вообще. Установитеautocd
параметр с помощью следующей строки~/.bashrc
:Затем вы можете ввести имя каталога в командной строке, и «выполнение» этого каталога изменится на него.
источник
shopt
это, я, вероятно, скоро пропущу эту функциональность в Windows :-)autocd
была одна из причин, по которой я перешел на zsh, когда у bash его не было. Единственный достойный способ использовать Windows - это установить Cygwin в любом случае, в комплекте с zsh."Вы не можете использовать косую черту в псевдониме или имени функции "? Это новость для меня. Я годами использовал следующую функцию оболочки в Linux и OS X bash, и у меня никогда не было проблем:
Естественно,
cd../..
это также хорошее имя функции. Косая черта может использоваться в имени функции оболочки.Что касается версии с обратной косой чертой, вы не можете встроить ее в псевдоним или имя функции, но вам не нужно: Когда вы печатаете
cd..\..
, bash интерпретирует обратную косую черту как escape и пытается выполнить полученный результатcd....
. Так определите это, и вы сможете делать все, что вы хотели. Добро пожаловать.источник
Если вы хотите сохранить псевдонимы, почему бы просто не сделать:
Или, если вам нужно пойти путь обратно:
Понятия не имею, насколько хорошо это помогает поддерживать умственную синхронизацию с мозгом Windows, но это все еще кажется простым способом. (По крайней мере, для тех из нас, кому повезло, не нужно беспокоиться о том, как все делается в Windows.)
источник