Почему в Vim нужно нажимать пробел после команды?

Здесь играют роль две вещи. Во-первых, только - расширяется до вашего предыдущего каталога. Это объясняется в разделе cd документа man bash (выделено мной):

Аргумент - преобразуется в $ OLDPWD перед попыткой смены каталога. Если используется непустое имя каталога из CDPATH, или если - является первым аргументом , и смена каталога прошла успешно, абсолютный путь к новому рабочему каталогу будет записывается в стандартный вывод . Возвращаемое значение - истина, если каталог был успешно изменен; в противном случае - ложь.

Итак, простой cd - вернет вас в предыдущий каталог и распечатает имя каталога. Другая команда описана в разделе «Расширение тильды»:

Если префикс тильды - ~ + , значение переменной оболочки PWD заменяет префикс тильды. Если тильда-префикс представляет собой ~ - , значение переменной оболочки OLDPWD, если оно установлено, заменяется. Если символы, следующие за тильдой в префиксе тильды, состоят из числа N, необязательно с префиксом + или - , то { Префикс тильды {1}} заменяется соответствующим элементом из стека каталогов , так как он будет отображаться встроенным каталогом , вызываемым с префиксом тильды в качестве аргумента. Если символы , следующие за тильдой в префиксе тильды, состоят из числа без начала + или - , + предполагается.

Это может быть легче понять на примере:

$ pwd
/home/terdon
$ cd ~/foo
$ pwd
/home/terdon/foo
$ cd /etc
$ pwd
/etc
$ echo ~        ## prints $HOME
/home/terdon
$ echo ~+       ## prints $PWD
/etc
$ echo ~-       ## prints $OLDPWD
/home/terdon/foo

Итак, в общем, - означает «предыдущий каталог». Вот почему cd - сам по себе вернет вас туда, где вы были.

Основное отличие состоит в том, что cd - специфичен для встроенной команды cd . Если вы попытаетесь ввести echo - , он просто напечатает - . ~ - является частью функции раскрытия тильды и ведет себя аналогично переменной. Вот почему вы можете echo ~ - и получить что-то значимое. Вы также можете использовать его в cd ~ - , но вы также можете использовать его в любой другой команде. Например cp ~ - / *. , что эквивалентно cp "$ OLDPWD" / *.

1
12.11.2015, 19:46
0 ответов

Теги

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