Платформа: CentOS 6.2
Shell:tcsh
Я играю с cd
сценарием BASH и заметил замечательный cd -
вариант , но у меня осталось много вопросов ...
- Почему то
cd -
? Разве это не избыточно сcd ..
?
РЕДАКТИРОВАТЬ
[Как указывает FatalError, эти две команды не делают одно и то же ... поэтому ответ «нет»]
- Можете ли вы углубиться в историю, используя
-
флаг, а-ля в браузере?
Например, когда я печатаюcd -
, он переводит меня в мой предыдущий каталог, но затем, если я снова ввожу эту команду, он возвращает меня в каталог, из которого я только что пришел, создавая своего рода цикл.
Поддерживается ли сокращение для возврата на несколько уровней?
РЕДАКТИРОВАТЬ
Я понимаю, что могу вернутьсяcd ..
, но надеялся, что это могло бы стать воротами к менее многословной глубокой спине, например,cd -3
противcd ../../../
... надеюсь, это проясняет то, что я спрашиваю ....
РЕДАКТИРОВАТЬ2
Что касается текущей обратной связи, в то время как..
это специальный каталог, я не вижу причины, почему встроенный вcd
терминал не может использовать сокращение для,../../ ... ../
например,cd ..5
или почему встроенный также не может иметь историю (а-ля autopushd
/popd
), которую можно включить и использовать какcd -3
. Я понимаю, что это может быть в некоторой степени угрозой безопасности / конфиденциальности, но я не понимаю, как это хуже, чем хранить историю команд, что делает большинство оболочек / терминалов.
- Страница man для
cd
, доступная черезman cd
иhelp cd
(то же самое для любой команды), только списки-L
и-P
флаги.
Однако когда я набираю вcd --help
нем выводыUsage: cd [-plvn][-|<dir>].
.
Правильно ли я считаю, что другие флаги и опция - (назад) нестандартны?
- Какие
-n
и-v
флаги для?
Кажется, оба возвращают меня в мой домашний каталог, и это все, что я смог выяснить с помощью экспериментов.
Краткое чтение на веб-ресурсах [1] [2] предлагает такую же информацию, что и справочная страница, и не отвечает на мои вопросы.
Примечание: у второго вышеупомянутого Linux-ориентированного ресурса было cd
только два варианта (очевидно, в настоящее время это не так CentOS
), поэтому я предполагаю, что эта функциональность может быть нестандартной.
tcsh
вызваннымcd
и не вызывающим/bin/cd
(если вы явно не укажете/bin/cd
в командной строке) - это, вероятно, объясняет разницу в поведении. Я не достаточно осведомлен,tcsh
чтобы помочь вам в дальнейшем. Попробуйте набратьhelp cd
(это дляbash
, не знаю, как это будет работатьtcsh
...)/bin/cd
будет довольно бессмысленным (вcd
значительной степени это должно быть встроено, чтобы быть полезным). Я уверен, что он существует только для того, чтобы удовлетворить некоторые неясные требования POSIX.tcsh
конкретно ... это немного странно. Мне все еще интересно, что делают дополнительные флаги.help cd
выводит ту же информацию, что иman cd
, как я уже упоминал ... не знаю, для чегоtcsh
нужны дополнительные флаги во встроенном.cd ..
": обратите внимание, что история команд позволяет вам делатьcd .. <Enter> <Up> <Enter> <Up>
и так далее быстро перемещаться назад по дереву файлов. Возможно, я в основном нахожу это более удобным из-за моей конкретной локали клавиатуры, которая/
находится за модификатором shift.cd ..
помет вашей истории команд, что меньше, чем оптимальное.cd ..5
встроенный будет не только меньше набирать и легко реализовать, было бы также оставить историю чище. Мне удивительно, что я, возможно, первый, кто об этом подумал. : PОтветы:
cd -
это не то же самое, чтоcd ..
. Командаcd -
переходит к предыдущему каталогу, в котором вы находились. Например, если вы находитесь,/home/bob
а затем запускаетеcd /var/log
, то запускcd -
приведет вас обратно/home/bob
.cd ..
с другой стороны, всегда идет в родительский каталог.Если вы хотите сохранить историю , как это, я рекомендую проверить
pushd
иpopd
который позволит вам использовать «стек каталогов»:Что касается отступления на несколько уровней в дереве каталогов, то я не знаю ни одного распространенного способа.
..
это не особенность оболочки, это на самом деле специальная ссылка на каталог в * nix, которая ссылается на родительский каталог.cd
это встроенная команда, поэтому ее флаги и использование могут различаться в зависимости от оболочки. Но, в общем, варианты входаcd
вbash
одну систему должны быть такими же, как и в другой системе.В моей
bash
оболочке нет ни одного из этих флагов ... вы экспериментируетеbash
или используетеtcsh
? Если вы используете,tcsh
вы, по сути, используете совершенно другую команду, так что вы, вероятно, захотите запуститьbash
и связываться сcd
ней.РЕДАКТИРОВАТЬ:
Согласно
tcsh
справочной странице:(Вы можете проверить раздел о
dirs
том, хотите ли вы прочитать подробности). Похоже, что он в основном заставляет печатать стек каталогов после выполнения команды:оба показывают стек каталогов, но
-v
кажутся немного легче для чтения. Вершина стека (элемент 0) - это текущий каталог, а 1 - это то место, куда вы пойдете, если выполнитеpopd
один раз, и так далее.источник
..
.. Я вижу, как это сделало бы стенографию проблематичной для истинной истории, которая может быть в несвязанных каталогах. 3. Интересно 4. Как я упоминаю в комментарии, я используюtcsh
... Я думаю, я немного запутал проблему, сказав, что я хотел написатьbash-script
, так что исправляю это сейчас ...tcsh
«scd
встроенный, так что я все еще жду более полного решения. Также кажется, чтоcd ..5
(вернитесь на 5 каталогов) иcd -5
(вернитесь к истории каталогов на 5 каталогов) могли бы быть полезными дополнениями к встроенной оболочкеcd
, как я объясню во втором своем редактировании.