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

10

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

 eg:
    cd 1:Changes to saved directory one
    
задан Developer Android 07.12.2012 в 09:15
источник

11 ответов

9

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

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

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

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

    
ответ дан Dan 07.12.2012 в 09:37
источник
16

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

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

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

j workstuff

или даже

j stuff

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

Однако это становится лучше! Если у вас также есть каталог

/home/user/stuff

, и вы делаете

j stuff 

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

$ 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 .

Дополнительная информация здесь: Ссылка (также инструкция по установке этого из src, которая получает самую последнюю версию)     

ответ дан Gerhard Burger 07.12.2012 в 10:09
5

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

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

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

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

См. также:

  • Как создать псевдоним для cd и ls?
  • Как создать постоянный псевдоним Bash?
ответ дан Flimm 07.12.2012 в 10:20
4

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

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

  

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

Для этого нужно немного привыкнуть, но есть много полезных уроков там, в этом блоге и этот сайт . Для команд нет отдельных manpages, поскольку они включены в man-страницу 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 переключает вас в папку с конкретными картинками и помещает ее поверх стека (это +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?
ответ дан user76204 08.12.2012 в 12:52
2

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

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

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

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

    
ответ дан remjg 07.12.2012 в 09:53
2

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 06.06.2016 в 07:52
0

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

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

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

    
ответ дан haziz 08.12.2012 в 06:28
0

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

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
    
ответ дан kojiro 28.06.2016 в 13:20
0

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

  

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

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

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

  

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

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

    
ответ дан sanjay mundhra 06.07.2016 в 11:30
0

Самый быстрый способ, который я нашел, - это 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:

Ссылка

    
ответ дан LetMeSOThat4U 20.07.2017 в 20:38
-1

Я использую DirB (Закладки каталога), чтобы сделать это. Очень хорошо! Ссылка

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

    
ответ дан fstephens 12.12.2012 в 17:55