Сокращение для переключения на заданный каталог

В терминале Ubuntu я нахожу, что трачу значительное время на переход к конкретному каталогу каждый раз, когда компьютер запускается. Есть ли способ облегчить этот процесс? Есть ли горячая клавиша или какое-то быстрое изменение каталога, которое я могу использовать (например, быстрый набор на телефоне)?

 eg:
    cd 1:Changes to saved directory one
1
задан 7 December 2012 в 16:22

10 ответов

Также посмотрите autojump, он создает базу данных с ранее посещенными каталогами, а затем вы можете перейти к ней. Так, например, у вас есть

/home/user/this/long/and/annoyingly/deep/directory/workstuff

, если вы посетили его, как только вы можете перейти к нему с помощью

j workstuff

или даже

j stuff

потому что он также работает с частичными совпадениями. Если несколько каталогов совпадают, вы переходите к наиболее посещаемому, если это не тот, который вам нужен, а затем повторите команду, чтобы перейти ко второму.

Однако он поправляется! Если у вас также есть каталог

/home/user/stuff

, и вы делаете

j stuff 

, а затем TabTabTab вы получаете (в порядке наиболее посещаемого)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

, а затем вы можете просто нажать номер нужного вам каталога!

Чтобы установить, вы можете просто использовать sudo apt-get install autojump, а затем вам нужно добавить

source /usr/share/autojump/autojump.bash

на свой ~/.bashrc.

Дополнительная информация здесь: https://github.com/wting/autojump (также инструкция по установке этого из src, который получает самую последнюю версию)

16
ответ дан 25 May 2018 в 03:36
  • 1
    Это кажется очень интересным. большое спасибо – Developer Android 7 December 2012 в 16:25
  • 2
    ctrl + r в терминале также ищет «частичные соответствия», в предыдущих командах. Очень удобно. – Dan 7 December 2012 в 19:03

Алиасы Bash полезны для создания коротких сокращений для обычных команд.

В ~/.bashrc добавьте строку, аналогичную следующей для создания псевдонима:
alias jump1='cd /long/path/name/that/is/frequently/used'
Закройте и снова откройте терминал или запустите source ~/.bashrc. С этого момента вы можете просто запустить jump1 для выполнения этой длинной команды cd.

См. также:

В ~/.bashrc добавьте строку, подобную приведенной ниже, чтобы создать псевдоним:
alias jump1='cd /long/path/name/that/is/frequently/used'
Как создать постоянный Псевдоним Bash?
5
ответ дан 25 May 2018 в 03:36

Несмотря на то, что уже есть некоторые хорошие ответы, я подумал, что для полноты упомянуть старые pushd и popd встроенные Bash, позволяющие очень быстро перемещаться между каталогами на глубоких дорожках в вашей файловой системе. В отличие от закладок autojump, упомянутых burger.ga, стек каталога, созданный с помощью pushd, является временным.

Как GNU burger.ga , и popd - это встроенные элементы Bash, используемые для создания временного стека директорий, который является

списком недавно посещаемых каталогов. Встроенный pushd добавляет каталоги в стек, поскольку он изменяет текущий каталог, а встроенный popd удаляет указанные каталоги из стека и изменяет текущий каталог на удаленный каталог. Встроенный dir отображает содержимое стека директорий.

Для этого нужно немного привыкнуть, но в этом блоге есть много полезных уроков, и это, например, этот сайт. Для команд нет отдельных manpages, поскольку они включены в справочную страницу Bash, но для быстрой справки вы можете просмотреть страницу GNU Bash.

Самое яркое объяснение в в этом блоге [!d7 ] и именно так я использую pushd и popd:

Во-первых, используйте dirs или dirs -l, чтобы перечислить каталоги в стеке и dirs -c, чтобы очистить стек.

В каком-то смысле вы закладите место, куда хотите вернуться, введя

pushd /home/mike/Pictures/Canon/2012_07_01

, а затем вы можете добавить в стек больше каталогов, так что вы получите список каталогов, как показано ниже, что включает 3 назначенные папки и домашнюю папку ~:

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

Фактически вам не нужно использовать popd сразу, поскольку это удаляет каталоги из стека; лучше всего использовать pushd для поворота стека, чтобы вы могли переключаться между каталогами и упорядочивать их по своему усмотрению. Подробнее об этом полезном вращении стека см. В man-странице Bash.

Если у вас есть точно расположение стека, как показано выше, dirs показывает, pushd +3 переключает вас в папку «Изображения» и помещает ее наверх (это +3 и не +4, поскольку вы не считаете свой ~ в стеке каталога):

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

Итак, подсказка читает

~/Pictures/Canon/2012_07_01$

Вы можете продолжать это, не удаляя их из стека, хотя любые папки, которые вы cd, кроме тех, которые добавлены в стек каталога с pushd, изменят ваш стек каталога.

Как только у вас есть стек каталога, расположенный в том порядке, который вы хотите, вы можете использовать popd для быстрого перехода по каталогам, а затем возврата в домашнюю папку; например, из Pictures мы можем вернуться к Downloads:

popd
~/Downloads/folder/interest ~/Music/artist/album ~

, и приглашение читает

~/Downloads/folder/interest$

. В целом красота этого заключается в том, что вы можете установить в стек каталога и порядок элементов внутри него с помощью pushd, а затем, скажем, у вас есть три файла для редактирования в каждом из этих каталогов, вы можете немедленно вернуться к каждому из них с помощью popd, удалив их из стека директорий. Затем с последним popd вы вернетесь к ~. Это становится особенно полезным, когда у вас есть особенно глубокие каталоги и вы можете использовать его для установки стека каталогов, чтобы быстро перемещаться между ними.

Кроме того, этот вопрос содержит некоторые советы, которые могут оказаться полезными при работе в командной строке:

Как я могу отменить последнюю команду cd?
4
ответ дан 25 May 2018 в 03:36

Несмотря на то, что существует некоторый способ командной строки для этого быстрее, я бы рекомендовал использовать расширение Nautilus под названием nautilus-open-terminal.

Сначала установите пакет nautilus-open-terminal и закладок ваших любимых папок с помощью Nautilus , На Nautilus 3.6. * Вам нужно будет войти в меню передач и выбрать «Закладка этого места».

Затем используйте закладки Nautilus, чтобы быстрее идти в ваших любимых каталогах, и просто щелкните правой кнопкой мыши на пустое место и выберите Закладка этого места .

enter image description here

Теперь вы можете иметь как командную строку, так и файловый менеджер быстрый доступ к вашим любимым каталогам.

2
ответ дан 25 May 2018 в 03:36
  • 1
    Оригинальный плакат пытается работать с терминалом, и он часто быстрее работает с терминалом. – haziz 8 December 2012 в 12:28
  • 2
    @haziz: Да, но вопросы и ответы AskUbuntu должны быть полезны не только для OP, но специально для всех людей, которые нашли это в Интернете. Это ценный ответ для меня. – Javier Rivera 8 December 2012 в 19:00

anc был разработан именно для этого случая использования.

https://github.com/tobimensch/anc

Вот выдержка из README.md:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

Полное раскрытие: я автор anc.

2
ответ дан 25 May 2018 в 03:36

Вы можете поместить псевдоним в ваш .bashrc-файл (или файл конфигурации для вашей любимой оболочки - они обычно находятся в вашем домашнем каталоге):

alias cd1="cd directory/directory/my_destination/"

Полезная информация об использовании псевдонимов в bash здесь.

0
ответ дан 25 May 2018 в 03:36

Рассмотрим настройку переменной среды CDPATH в вашем .bashrc или .bash_profile. CDPATH принимает ту же самую двоеточие, что и другие переменные PATH, и позволяет cd быстро находить ваши каталоги. Например:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
0
ответ дан 25 May 2018 в 03:36

вы можете настроить свой собственный ярлык для определенного каталога. Например, вы хотите перейти в вложенный каталог, как правило, вы выполняете

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

вы обычно используете команду cd, а затем вводите все имена каталогов или можете ли вы пропускать ввод текста (используя кнопку TAB), но это все еще занимает несколько минут.

Итак, обычно вы делаете вы можете сделать его псевдоним в терминале. Его одноразовая задача создать псевдоним.

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

alias dir-target = ' / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target '

0
ответ дан 25 May 2018 в 03:36

Самый быстрый способ, который я нашел, - xd, программа «eXchange Directories», написанная голландец по имени Фрэнк Б. Броккен.

Он работает, найдя все пути в вашей файловой системе, которые могут разрешить аббревиатуру, которую вы набрали, например ulb может стоять /usr/local/bin, если в такой папке существует ваша система:

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

При нажатии 2 вы находитесь в /usr/local/bin.

Это действительно старое программное обеспечение, и нет более длинный доступный в исходном месте, без контакта с автором, поэтому для предотвращения его потери я помещал его в репозиторий Github:

https://github.com/mrkafk/exchange_directories

0
ответ дан 25 May 2018 в 03:36

Я использую DirB (Закладки каталога), чтобы сделать это. Очень хорошо! http://www.linuxjournal.com/article/10585

Я изменил свой подход в соответствии со своим вкусом и был более простым в использовании и понятным.

-1
ответ дан 25 May 2018 в 03:36

Другие вопросы по тегам:

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