Назад | Перейти на главную страницу

'cd' переключаться назад и вперед в предыдущий и текущий каталог

я нашел cd - может переключаться между предыдущим и текущим каталогом, что является очень удобной функцией. Также найдено cd -- тоже работает, но не знаю, для чего именно. Есть ли ссылки на это? Пожалуйста, посоветуйте, спасибо.

Редактировать:

Я не понимаю, говорите ли вы о cd --, или cd -- -. Итак, я постараюсь ответить на оба вопроса.

cd -- (без каталога) будет действовать так же, как cd (без каталога). Вы вернетесь в ваш домашний каталог. cd -- не переключит вас обратно в предыдущий рабочий каталог.

stefanl@host:~ $ cd tmp
stefanl@host:~/tmp $ cd --
stefanl@host:~ $ cd --
# Note that I do not go back to the directory ~/tmp
stefanl@host:~ $

Посмотрите, чем это поведение отличается от cd -. Это также верно для cd -- -:

stefanl@host:~ $ cd tmp
stefanl@host:~/tmp $ cd -
/Users/stefanl
stefanl@host:~ $ cd -
/Users/stefanl/tmp

# `cd -- -` behaves the same as `cd -`
stefanl@host:~/tmp $ cd -- -
/Users/stefanl
stefanl@@host:~ $ cd -- -
/Users/stefanl/tmp
stefanl@host:~/tmp $

Что касается -- для большинства команд Unix:

В -- скажет cd игнорировать любые варианты после cd --. Из Страница Bash Man:

Если не указано иное, каждая встроенная команда, задокументированная как принимающая параметры, перед которой стоит знак «-», принимает «-» для обозначения конца параметров.

Представьте, что у вас есть каталог с именем -h (Обратите внимание, что мне нужно использовать -- здесь тоже):

$ ls -ld -- -h
drwxr-xr-x  2 stefanl  stefanl  68 Nov  8 16:41 -h

Вы не можете использовать cd в обычном режиме, потому что команда пытается интерпретировать -h как вариант:

$ cd -h
-bash: cd: -h: invalid option
cd: usage: cd [-L|-P] [dir]

Так что используйте -- чтобы указать компакт-диску не обрабатывать больше параметров после --:

stefanl@host:~ $ cd -- -h
stefanl@host:~/-h $ pwd
/Users/stefanl/-h
stefanl@host:~/-h $

Предыдущий каталог также cd ~-

Зависит от вашей оболочки, но проверьте dirs встроенный (мой zsh в таком случае):

[iluvatar]-[/srv/django]-[1126] % dirs -v
0       /srv/django
1       /srv/django/app
2       /srv/django/app2
3       ~

Затем вы можете использовать cd ~N ярлык для смены каталогов, а также pushd и popd для смены стека.

Я точно не знаю ответа на этот вопрос, но из того, что я вывел, кажется, что -- интерпретируется как предвестник аргумента. Поскольку аргумент не передается, он игнорируется и поэтому по умолчанию cd, который перенесет вас в ваш домашний каталог.

Кажется, это происходит с несколькими стандартными утилитами:
[james@aladdin blah]$ pwd
/home/james/blah
[james@aladdin blah]$ touch hello
[james@aladdin blah]$ ls -
ls: cannot access -: No such file or directory
[james@aladdin blah]$ ls --
hello
[james@aladdin blah]$ rm -
rm: cannot remove '-': No such file or directory
[james@aladdin blah]$ rm --
rm: missing operand
Try 'rm --help' for more information.