Ярлик для переходу на заданий каталог


12

У терміналі Ubuntu я виявляю, що витрачаю чимало часу на перехід на певний каталог щоразу, коли комп'ютер запускається. Чи я можу полегшити цей процес? Чи є якась швидка клавіша чи швидка зміна каталогу, яку я можу використовувати (наприклад, швидкий набір по телефону)?

 eg:
    cd 1:Changes to saved directory one

Чотири роки відтоді було задано це питання, і до сьогодні ніхто не згадував CDPATH. :(
kojiro

Я думаю, це може залежати від вашої консолі, але в терміналі Kubuntu є меню «Закладки», де я можу просто зробити закладку каталогу і перейти до неї таким чином!
Піксель

Відповіді:


12

Є два варіанти:

  1. Якщо ви хочете знаходитись у певному каталозі кожного разу, коли ви відкриваєте баш-термінал, відредагуйте ~/.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вбудовані Bash використовуються для побудови тимчасового стека каталогів, який є

список нещодавно відвіданих каталогів. Убудований 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, щоб швидше переходити до улюблених каталогів, а просто клацніть правою кнопкою миші на порожньому просторі та виберіть Відкрити в терміналі .

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

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


Оригінальний плакат намагається працювати з терміналу, і часто швидше працювати з терміналу.
Хазіз

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]

Повне розкриття: Я автор анц.


1

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

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

Корисна інформація посилання про використання псевдонімів в БАШЕЄВ знаходиться тут .


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

gf - це ярлик для getFolders

gf alias2

виходи

/path/to/alias2/folder

йти до

goto - це простий спосіб перейти до вибраної папки.

goto alias

вихід

CD запустився у / папку / до / псевдонім / папку

/ шлях / до / псевдонім / папка>

Чому є кілька функцій

В основі 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це програма "Довідники eXchange", написана голландцем на ім'я Франком Б. Броккеном.

Це працює, знаходячи всі шляхи у вашій файловій системі, які можуть відповідати абревіатурі, яку ви ввели, наприклад, ulbможе позначатися, /usr/local/binякщо така папка існує у вашій системі:

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

Якщо натиснути 2, ви знаходитесь /usr/local/bin.

Це дійсно старе програмне забезпечення і більше не доступне в оригінальному місці, немає контакту з автором, тому, щоб запобігти його втраті, я поклав його в Github repo:

https://github.com/mrkafk/exchange_directories


-1

Для цього я використовую DirB (Закладки каталогів). Дуже хороша! http://www.linuxjournal.com/article/10585

Я модифікував шахту на свій смак і був простіший у використанні та зрозуміліший.


Ласкаво просимо в Ask Ubuntu! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
fossfreedom
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.