я нашел 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.