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

12

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

 eg:
    cd 1:Changes to saved directory one
Разработчик Android
источник
Четыре года с тех пор, как этот вопрос был задан, и никто не упомянул CDPATH до сегодняшнего дня. :(
Кодзиро
Я полагаю, это может зависеть от вашей консоли, но в терминале Kubuntu есть меню «Закладки», где я могу просто добавить в закладки каталог и перейти к нему таким образом!
Пиксель

Ответы:

12

Есть два варианта:

  1. Если вы хотите быть в то время everyt каталога конкретнее вы открываете Баш терминал, отредактировать свой ~/.bashrcфайл и просто добавьте строку cd Directory, например cd ~/Desktop.

  2. Если вы хотите иметь несколько ярлыков, вы всегда можете использовать глобальные переменные, которые вы можете установить в своем ~/.bashrcфайле следующим образом, export a=/tmpи тогда вы сможете сделать то, к cd $aчему вас приведет /tmp.

Помните, что после редактирования вашего .bashrcфайла вам необходимо перезапустить терминал или открыть новый.

Дэн
источник
3
Чтобы избежать перезагрузки терминала вы можете использовать source ~/.bashrcили, короче, . ~/.bashrc.
Герхард Бургер
18

Также обратите внимание 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, который получает самую последнюю версию)

Герхард Бургер
источник
1
crtl + r в терминале также ищет «частичные совпадения» в предыдущих командах. Действительно удобно.
Дан
6

Псевдонимы Bash полезны для создания ярлыков для часто используемых команд.

  • В ~/.bashrcдобавьте строку, аналогичную следующей, чтобы создать псевдоним:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • Закройте и снова откройте терминал или запустите source ~/.bashrc.

  • С этого момента вы можете просто запустить jump1эту длинную cdкоманду.

Смотрите также:

Флимм
источник
4

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

Как GNU ручных примечания , pushdи popdявляются Баш встроенных команд используются для создания временного стека каталогов , который является

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

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

Ярчайший объяснение в этой очень полезной статье , и именно так , как я использую 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вращение стека, чтобы вы могли продолжать переключаться между каталогами и упорядочивать их по своему усмотрению. Подробнее об этом вращении стека смотрите на странице руководства Bash .

Если у вас есть именно такое расположение стеков, как dirsпоказано в приведенном выше листинге, pushd +3вы переключаетесь в определенную папку Pictures и размещаете ее в верхней части стека (это +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вы вернетесь к ~. Это становится особенно полезным, когда у вас есть особенно глубокие каталоги и вы можете использовать их для настройки стека каталогов, чтобы быстро перемещаться между ними.

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

Сообщество
источник
2

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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

remjg
источник
Оригинальный постер пытается работать с терминала, и зачастую он быстрее работает с терминала.
Хазиз
1
@haziz: Да, но вопросы и ответы AskUbuntu должны быть полезны не только для ОП, но и особенно для всех людей, которые нашли это в Интернете. Это ценный ответ для меня.
Хавьер Ривера
2

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.

Tobi
источник
1

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

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

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

haziz
источник
1

Я создал для этого набор функций bash и добавил его в свой .bash_profile

скрипт

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

использование

getFolders

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

Пример получения пути к папке

getFolders alias

выходы

/path/to/alias/folder

Пример получения доступных папок.

getFolders

выходы

alias
- Description of alias
alias2
- Description of alias2

гс

GF это ярлык для getFolders

gf alias2

выходы

/path/to/alias2/folder

перейти к

Перейти к простой способ перейти к выбранной папке.

goto alias

выход

CD запущен в папке / path / to / alias /

/ Путь / к / псевдоним / папки>

Почему есть несколько функций

В основе Unix и Linux лежат простые многократно используемые функции, которые можно объединить в цепочку. Я предпочитаю этот метод, поскольку он не только перемещает вас в выбранное место, но и является функцией, которая по псевдониму возвращает путь. Вы можете использовать эту функцию, чтобы сделать что-нибудь с этой точки, например, cd на этот путь

Майкл Уорнер
источник
0

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

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
Кодзиро
источник
0

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

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

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

Таким образом, чтобы сэкономить ваше время, вы можете сделать его псевдоним в терминале. Одноразовая задача - создать псевдоним.

псевдоним dir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

Теперь вам нужно просто использовать псевдоним ( dir-target ), чтобы перейти в целевой каталог.

Санджай Мундра
источник
0

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

Он работает путем нахождения всех путей в вашей файловой системе, которые могут соответствовать введенной вами аббревиатуре, например, 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

LetMeSOThat4U
источник
-1

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

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

fstephens
источник
Добро пожаловать в Спросите Ubuntu! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
fossfreedom