Используйте pushd
, а затем специальные имена для каталогов в стеке каталогов: ~ 1
, ~ 2
и т. Д. .
Пример:
tmp $ dirs -v
0 /tmp
1 /tmp/scripts
2 /tmp/photos
3 /tmp/music
4 /tmp/pictures
tmp $ cd ~3
music $ dirs -v
0 /tmp/music
1 /tmp/scripts
2 /tmp/photos
3 /tmp/music
4 /tmp/pictures
music $ cd ~2
photos $ cd ~4
pictures $ cd ~3
music $ cd ~1
scripts $
Наиболее эффективный способ использования pushd
таким образом - загрузить список каталогов, а затем добавить еще один каталог , который будет вашим текущим каталогом, а затем вы можете переключаться между статическими числами, не влияя на положение каталогов в вашем стеке.
Также стоит отметить, что cd -
перенесет вас в последний каталог, в котором вы были. Так же будет cd ~ -
.
Преимущество ~ -
перед -
состоит в том, что -
специфичен для cd
, тогда как ~ -
расширяется вашей оболочкой так же, как ~ 1
, ~ 2
и т.д. Это удобно при копировании файла между очень длинными путями к каталогам; например:
cd /very/long/path/to/some/directory/
cd /another/long/path/to/where/the/source/file/is/
cp myfile ~-
Вышеупомянутое эквивалентно:
cp /another/long/path/to/where/the/source/file/is/myfile /very/long/path/to/some/directory/
Быстрый просмотр прекрасного руководства для tcsh (1)
обнаруживает:
postcmd Runs before each command gets executed.
> alias postcmd 'echo -n "^[]2\;\!#:q^G"'
then executing vi foo.c will put the command string in the
xterm title bar.
Конечно, BEL
и ] Символы ESC
в этой документации, вероятно, не в форме, подходящей для копирования и вставки, и некоторые поставщики могут установить пользовательское приглашение по умолчанию, которое затем переопределяет любые escape-коды, созданные псевдонимом:
...$ echo $prompt
%%[%n@%m %c]%#
...$ set prompt = '> '
> alias postcmd 'echo -n "\033]2;\!#:q\007"'
>