Я могу использовать CD../.. как имя псевдонима?

Я использую Windows и Ubuntu параллельно и действительно подключаюсь с консоли к материалу на них обоих.

В Windows I может сделать a

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 ../..'

Когда я запускаю новый удар, я добираюсь

21:16:26 $ bash
bash: alias: `cd../..': invalid alias name

Как я настроил бы псевдонимы для cd..\.. и cd../.. правильно?

cd..\.. кажется, имеет проблемы с символом ESC:

21:39:43 $ cd..\..
bash: cd....: command not found

Это не работает, даже если я определяю другой псевдоним для cd.....

11
задан 28 September 2014 в 01:44

4 ответа

/ и \ среди символов, которые не могут появиться на имя псевдонима Bash. От man bash:

символы /, $, ', и = и любой из метасимволов оболочки или упомянутых выше символов заключения в кавычки может не появиться на имя псевдонима.

Как обходное решение, можно переключиться на Zsh, который позволяет обоим:

% grep 'alias.*cd' .zshrc 
alias cd../..='cd ../..'
alias cd..\\..='cd ../..'
% pwd
/Users/firas
% cd../..
% pwd
/ 
% cd
% pwd
/Users/firas
% cd..\..
% pwd
/
10
ответ дан 16 November 2019 в 14:49

Вы не можете использовать наклонные черты на имя псевдонима. Bash позволяет им на имена функций, однако, таким образом, можно сделать это функцией:

cd../.. () { cd ../..; }

Вы не можете использовать обратные косые черты в псевдониме или имени функции. Символ обратной косой черты заключает следующий символ в кавычки, таким образом, cd..\.. анализируется как cd...., задолго до того, как та строка ищется как название команды. Если Вы хотите назвать команду названной cd..\.., необходимо ввести cd..\\.., 'cd..\..', или что-то эквивалентное. Кроме того, название команды, которое было заключено в кавычки всегда, не рассматривают для поиска псевдонима, таким образом, Вы никогда не можете использовать имя псевдонима, содержащее обратную косую черту. Bash не позволяет обратные косые черты на имена функций, также. С тех пор cd..\.. анализируется как cd...., можно определить вызванную функцию cd.... (как выше).

Если Вы используете cd команда, необходимо будет ввести пространство после него, точно так же, как любая другая команда. Но можно сохранить ввод, не введя cd вообще. Установите autocd опция со следующей строкой в ~/.bashrc:

shopt -s autocd

Затем можно ввести имя каталога на командной строке и “выполнение”, которое каталог изменит на нее.

~/some/sub/directory$ ../..
~/some$ 
12
ответ дан 16 November 2019 в 14:49

"Вы не можете использовать наклонные черты в псевдониме или функция имя"? Это - новости мне. Я использовал следующую функцию оболочки в течение многих лет на Linux и ударе OS X, и никогда не испытывал затруднений:

function ../.. { cd ../..; echo "$PWD"; }

Естественно, cd../.. прекрасное имя функции также. Наклонная черта может использоваться на имя функции оболочки.

Что касается версии обратной косой черты, Вы не можете встроить его в псевдоним или имя функции, но Вы не имеете к: Когда Вы тип cd..\.., удар интерпретирует обратную косую черту как Escape и пытается выполнить получающееся cd..... Поэтому определите это, и можно сделать все, чем Вы были после. Добро пожаловать.

function cd.... { cd ../..; } 
5
ответ дан 16 November 2019 в 14:49

Если Вы хотите сохранить псевдонимы, почему не просто сделайте:

alias   ..='cd ..'
alias  ...='cd ../../' 
alias ....='cd ../../../'

Или, если необходимо пойти путь назад:

alias   .3='cd ../../../' 
alias   .4='cd ../../../../'
alias   .5='cd ../../../../../'
# how far back do you need to go on a normal basis..?

Никакая идея, как хорошо, который помогает Вам сохранить мысленно в синхронизации с Вашим мозгом Windows, но это все еще походит на простой способ пойти. (По крайней мере, для тех из нас удачный не должен волноваться о том, как вещи сделаны в Windows.)

2
ответ дан 16 November 2019 в 14:49

Другие вопросы по тегам:

Похожие вопросы: