Швидка навігація по каталогу в оболонці bash


119

Мені хотілося б часто перемикатися між каталогами, які знаходяться в абсолютно незв'язаних шляхах, наприклад, /Project/Warnest/docs/і ~/Dropbox/Projects/ds/test/.

Але я не хочу cd /[full-path]/весь час вводити текст . Чи є команди ярликів для переходу на раніше працюючі каталоги?

Я можу придумати одне рішення - додати змінні середовища до моїх bash .profileдля часто використовуваних каталогів та cdдо них, використовуючи ці змінні.

Але чи є якесь таке рішення?


Для цього також можуть бути корисні символьні посилання. en.wikipedia.org/wiki/…
користувач606723

Відповіді:


135

Якщо ви просто перемикаєтесь між двома каталогами, ви можете використовуватись cd -для повернення назад і назад.


13
Як це так ухилялось від мене настільки довго, це таємниця. Дуже дякую за цю чудову пораду.
Містер Шикаданс

3
+1 Безумовно, один із моїх улюблених і той, який якось багато експертів "пропустив".
Майкл Дюрант

62

Існує змінна оболонки CDPATHв bashі kshй cdpathв zsh:

CDPATH    The search path for the cd command. This is a colon-separated
          list of directories in which the shell looks for destination
          directories specified by the cd command.

Таким чином, ви можете встановити у своєму ~ / .bashrc:

export CDPATH=/Project/Warnest:~/Dropbox/Projects/ds

Тоді cd docsі cd testперевезе вас до першого знайденого такого каталогу. (Я маю на увазі, навіть якщо каталог із тим самим іменем буде існувати в поточному каталозі, CDPATHвсе-таки проконсультуються. Якщо CDPATHбуде міститися більше каталогів, що мають підкаталоги з вказаним іменем, буде використаний перший.)


16
Слід зазначити, що загалом, ви хочете, щоб перший запис $CDPATHбув .(явно запис, тобто :працює). Інакше у вас вийде дивна поведінка, коли CDPATHдрірс має перевагу над каталогами в поточному робочому каталозі, чого ви, мабуть, не хочете.
jw013

4
Я майже все те ж саме, але без цього export. Таким чином, CDPATHне експортується в сценарії з потенційно дивними або шкідливими наслідками. Дивіться тут для більш детальної дискусії та прикладів.
Телемах

"bash і ksh і cdpath in zsh" ... і в tcsh (просто відповідаючи на запитання, засноване на цьому на Super User, і знайшов це, шукаючи подібні відповіді на SE).
Геннес

Це, напевно, визначено POSIX. Принаймні, POSIX для цього cdпосилається.
mikeserv

48

Ще щось, що ви можете спробувати, це інструмент під назвою autojump . Він зберігає базу даних дзвінків на його псевдонім ( jза замовчуванням) та намагається приймати розумні рішення про те, куди ви хочете піти. Наприклад, якщо ви часто вводите:

j ~/Pictures

Ви можете використати наступне, щоб потрапити туди в крайній частині:

j Pic

Він доступний у Debian та Ubuntu та включений на основі кожного користувача у ~/.bashrcабо ~/.zshrcза замовчуванням.


5
Autojump - це, мабуть, найкращий інструмент для цього. Потрібно трохи часу, щоб створити базу даних звичайних панів, але, як тільки це станеться, я думаю, що ви побачите, що без цього не можете жити. Я знаю, що кожного разу, коли я перебуваю на чужому комп’ютері, я відчуваю себе калікою.
quodlibetor

1
дякую люблю цей інструмент! І хоча cd -зручно знати, якщо ви цього ще не знаєте, я думаю, що це набагато краще рішення, ніж поточна відповідь.
Користувач

На яких системах встановлено загальносистемно?
ctrl-alt-delor

1
@richard Він доступний у вигляді пакету (наприклад, apt-get install autojumpв Ubuntu, але також і для багатьох інших, як це зафіксовано на їхній сторінці) для загальносистемної інсталяції, але кожному користувачеві потрібно завантажити його в своє середовище оболонки, щоб він міг змінити компакт-диск для відстеження куди ти йдеш
nealmcb

Важливо сказати, що source /usr/share/autojump/autojump.shслід додати до ~ / .bashrc, щоб автовідтворювач працював .
Пабло А

39

Якщо це невелика кількість каталогів, ви можете використовувати pushdдля обертання між ними:

# starting point
$ pwd
/Project/Warnest/docs
# add second dir and change to it
$ pushd ~/Dropbox/Projects/ds/test
~/Dropbox/Projects/ds/test /Project/Warnest/docs
# prove we're in the right place
$ pwd
~/Dropbox/Projects/ds/test
# swap directories
$ pushd
/Project/Warnest/docs ~/Dropbox/Projects/ds/test

на відміну від цього cd -, ви можете використовувати це з більш ніж двома каталогами


Дотримуючись пропозиції Ноаха, я зараз використовую це:

function pd()
{
    if [[ $# -ge 1 ]];
    then
        choice="$1"
    else
        dirs -v
        echo -n "? "
        read choice
    fi
    if [[ -n $choice ]];
    then
        declare -i cnum="$choice"
        if [[ $cnum != $choice ]];
        then #choice is not numeric
            choice=$(dirs -v | grep $choice | tail -1 | awk '{print $1}')
            cnum="$choice"
            if [[ -z $choice || $cnum != $choice ]];
            then
                echo "$choice not found"
                return
            fi
        fi
        choice="+$choice"
    fi
    pushd $choice
}

Приклад використання:

# same as pushd +1
$ pd 1

# show a prompt, choose by number
$ pd
 0 ~/Dropbox/Projects/ds/test
 1 /Project/Warnest/docs
 2 /tmp
? 2
/tmp ~/Dropbox/Projects/ds/test /Project/Warnest/docs

# or choose by substring match
$ pd
 0 /tmp
 1 ~/Dropbox/Projects/ds/test
 2 /Project/Warnest/docs
? doc
/Project/Warnest/docs /tmp ~/Dropbox/Projects/ds/test

# substring without prompt
$ pd test
~/Dropbox/Projects/ds/test /Project/Warnest/docs /tmp

Очевидно, що це лише для обертання стека і не обробляє додавання нових шляхів - можливо, я повинен перейменувати його.


6
Ой, я знав pushdі popdпро перехід, але не те, щоб штовхач міг обертати те, що було використано досі ...
Ізката

14

Я використовую aliasв bashrc для цих CD-дисків.
як от:

alias wdoc='cd ~/Project/Warnest/docs'
alias dstest='cd ~/Dropbox/Projects/ds/test'

це bashrc такий файл, як .profile? в яких мені потрібно додати ці рядки?
saiy2k

~/.bashrcабо /etc/bash.bashrc. Я .profileраніше не користувався , тому не знаю стосунків між ними :-(
Фелікс Ян

сценарії bashrc запускатимуться кожного разу, коли ви відкриєте термінал. профіль із запуском.

додав ці рядки до моїх, .bash_profileі це чудово працює .. thx :)
saiy2k

У мене є кілька конкретних папок проектів, які я регулярно відвідую, це найпростіший спосіб їх налаштування та обслуговування. Крім того, для мене це призводить до абсолютної найменшої кількості символів, набраних з усіх тут рішень. ПОПУСК! :-)
moodboom

11

Я знайшов сценарій (зазвичай називається acd_funch.sh), який вирішив цю проблему для мене. За допомогою цього ви можете ввести cd --для перегляду останні 10 використаних каталогів. Це буде виглядати приблизно так:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

Для переходу ~/Music/thirddirпросто введітьcd -2

Список літератури

ПРИМІТКА: Цей сценарій спочатку був опублікований у статті газети linux, яка доступна тут: acd_func.sh - розширює компакт-диск bash для збереження, відображення та доступу до історії відвідуваних імен каталогів .


Сам же сценарій був також опублікований у газеті Linux, випуск № 109, грудень 2004 року .
Серж Стротобандт

@Dean Посилання переходить до музичного відео та каже, що Geocities закрито.
щось-то

1
@somethingSomething Додано альтернативні посилання.
Дін

історія | grep cd
користувач2180794

10

Спробуйте cdable_varsваріант оболонки в bash. Ви вмикаєте його за допомогою shopt -s cdable_vars.

Тоді вам потрібно встановити свої змінні export dir1=/some/path. і, нарешті cd dir1, і т. д. Ви можете потім покласти його у свій, ~/.bashrcщоб він приклеївся.


10

Використовуйте "pushd -n " (якщо ви використовуєте bash).

Додайте до свого ~ / .bashrc:

pushd -n /Project/Warnest/docs/
pushd -n ~/Dropbox/Projects/ds/test/

тоді,

cd ~ ваш дім,

cd ~1 є ~/Dropbox/Projects/ds/test/

cd ~2 є /Project/Warnest/docs/

Ви можете використовувати ~1і ~2т. Д. Точно так само, як і ~.


7

Тут є багато хороших пропозицій. Що використовувати, залежатиме від того, чи є у вас невеликий фіксований список каталогів, до яких ви переходите, чи ви шукаєте більш загальне рішення.

Якщо це невеликий фіксований список, налаштування простих псевдонімів (як запропонував Фелікс Ян) було б найпростішим у використанні.

Якщо ви шукаєте більш узагальнене рішення (тобто безліч різних каталогів, що змінюються з часом), я б використовував pushd і popd (як непотрібно запропоновано). Я особисто вважаю, що pushd / popd за замовчуванням важко використовувати, особливо коли ви починаєте перемикатися між багатьма папками; однак я написав кілька перетворень, які значно полегшують мені роботу. Додайте до bashrc:

alias dirs='dirs -v'
pd () 
{ 
    if [ "$1" ]; then
        pushd "${1/#[0-9]*/+$1}";
    else
        pushd;
    fi > /dev/null
}
  • Використовуйте pd(як скорочену форму pushd), щоб перейти до нової папки, запам'ятавши, де ви були.
  • Використовуйте dirsдля перегляду списку збережених каталогів.
  • Використовуйте pd 3для переходу до каталогу номер 3.

Приклад використання:

$ PS1='\w\$ '   ## just for demo purposes
~$ pd ~/Documents/data
~/Documents/data$ pd ../spec
~/Documents/spec$ pd ~/Dropbox/Public/
~/Dropbox/Public$ pd /tmp
/tmp$ pd /etc/defaults/
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 2
~/Dropbox/Public$ dirs
 0  ~/Dropbox/Public
 1  ~/Documents/spec
 2  ~/Documents/data
 3  ~
 4  /etc/defaults
 5  /tmp
~/Dropbox/Public$ pd 4
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 3
~/Documents/spec$ popd
~/Documents/data ~ /etc/defaults /tmp ~/Dropbox/Public
~/Documents/data$ 

6

Нижче показано, що працює над одним випадком, на якому я його перевіряв, і ви можете просто залишити імена каталогу у вигляді символьних посилань у ~ / Закладках:

mkdir "$HOME/Bookmarks"
ln -s /tmp "$HOME/Bookmarks/testdir"

function ccd() { cd $(readlink "$HOME/Bookmarks/$1") ; }

ccd testdir && echo $PWD
# gives /tmp

що функцію ccd () потрібно набрати в підказку терміналу чи десь ще? Ви можете пояснити, PLS?
saiy2k

1
@ saiy2k: вибач, так. functionЛінія входить в ваш .bashrc (ви можете ввести його в терміналі , щоб перевірити, але поїдуть , коли ви закриваєте це вікно), лінія , перш ніж створити тестовий випадок «testdir» стає ім'ям /tmp, і Останній рядок - це тест, щоб перевірити, чи працює він.
Ульріх Шварц

6

Можна зробити гірше, ніж спробувати j2 .

З ПРОЧИТАННЯ:

Проведіть багато часу, обробляючи складне дерево каталогів?

j відстежує, де ви були і скільки часу ви там проводите, і забезпечує зручний спосіб перейти до каталогів, якими ви фактично користуєтесь.

Я його широко використовую і рекомендую.


5

Я б радив використовувати zsh , що оболонка є дуже хорошим завершенням TAB для каталогів, файлів і навіть варіантів для більшості програм для кліпів.

Я використовую цю оболонку вже багато років, і я б пропустив функціональність, якби її не було. Сценарій zsh - це дуже цікаво, також велика кількість однокласників, які можуть допомогти вам щодня.


Не потрібно змінювати на zsh для завершення TAB, оскільки у bash все одно. Для іншої функціональності можливо, але не для цього.
Peer Stritzinger

1
@PeerStritzinger Bash представив таку функціональність у BASH 4.0, але порівняно з zsh він все ще досить відстає. Сказати «все одно», безумовно, неправильно.
полемон

Добре zsh - це напевно übershell, але тільки для заповнення вкладки змінити не потрібно (питання було задано bash). Крім того, bash 4.0 був представлений близько 3 років тому ...
Peer Stritzinger

5

На мій досвід, найбільша швидкість навігації в оболонці - це використання її функції пошуку історії. У Bash ви можете шукати назад у своїй історії команд, натиснувши Ctrl+ Rта введіть деякий шаблон. Потім цей шаблон порівнюється з попередніми записами у вашій історії - будь то cdкоманди чи інші операції - і під час введення тексту вноситься пропозиції. Просто натисніть клавішу Enter, щоб знову запустити запропоновану команду. Це називається reverse-search-historyв Bash, і я люблю це. Це економить мені багато натискань на клавіші та економить мою внутрішню пам’ять.

Це добре, тому що вам потрібно запам’ятати лише якусь меншу частину команди, наприклад, Dropабо Waрозрізняти два записи історії cd ~/Dropbox/Projects/ds/test/та cd /Project/Warnest/docs/.


5

Я також використовую ці псевдоніми (додайте їх до ~ / .bashrc):

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

Набагато швидше зайти з ними у верхній каталог (але це вирішує лише половину навігації).


1
Це корисні псевдоніми, але я не зовсім впевнений, що вони відповідатимуть потребам ОП. Ви можете розглянути можливість розширення своєї відповіді, щоб підказати, як вони можуть бути безпосередньо корисними для питання ОП.
HalosGhost

4

якщо ви використовуєте zsh:

  • вам не потрібно вводити cd, просто введіть шлях /foo/bar/baz<Enter>до каталогу ( дорівнює cd /foo/bar/baz<Enter>)

    вимагає встановлення auto_cdопції

  • ви можете розширити скорочені шляхи за допомогою Tabключа ( /u/sh/pi<Tab>розширюється до /usr/share/pixmaps; працює і для імен файлів)

3
Bash 4 здобув shopt -s autocd, тож це вже не лише zsh-добро.
Жиль

4

Є досить приємний інструмент для швидких змін каталогів:

xd - швидкий чейнджер каталогів eXtra http://xd-home.sourceforge.net/xdman.html

трохи незручно те, що вам потрібно відобразити його в баш-профілі або подібному, оскільки він видає лише каталог

# function to do `cd` using `xd`
# -g turns generalized directory search command processing on
# which improves the whole thing a bit
f() 
{
        cd `/usr/bin/xd -g $*`
}

ви можете робити такі речі, як:

# change to /var/log/a* (gives you a list to choose from)    
f vla
# to skip the list and go directly to /var/log/apache2
f vlapach

Змініть функцію, щоб f() { cd "$(xd -g "$@")"; }правильно обробляти розташовані каталоги та пробіли в аргументах xd(шлях, ймовірно, вам не потрібен). Якщо ви ніколи не використовуєте xdінший спосіб, ви можете зробити це xd() { cd "$(command xd -g "$@")"; }(як альтернатива, використовувати /usr/bin/xdзамість command xd- ви завжди можете запустити, command xd …якщо вам потрібно обійти його).
Адам Кац

4

Ви ніколи не повинні вводити повний шлях в оболонці все одно. Ви завжди можете використовувати:

soffice /P*/W*/*/mydoc*

замість

soffice /Project/Warnest/docs/mydoc.odt

1
Це подібно до заповнення вкладок, але в будь-якому випадку гірше
Майкл Мрозек

Це неможливо зробити, якщо вкладка заповнюється euqal клавішею натискання клавіш, якщо Project є лише файлом, починаючи з P, тощо. Також вам потрібно чекати завершення щоразу, використовуючи *, вам не потрібно чекати.
gena2x

Я думаю, що у вас це відбувається назад - ви не можете цього робити, P*якщо Project не є єдиним файлом, починаючи з завершення P. Вкладка може запустити цикл (за замовчуванням у більшості оболонок; вам потрібно відновити вкладку menu-completeв bash), і вирішується миттєво в простих випадках як-от цього, його вже не чекають
Майкл Мрозек

Щодо "ти не можеш цього зробити" - ви можете спробувати, якщо ви думаєте, що не можете пропустити цілу точку. Спробуйте echo / u * / b * / g ++
gena2x

1
Я розумію, що ти маєш на увазі, це швидше, доки ти впевнений, що ти набрав однозначний шлях, але щось подібне /P*/W*/*/mydoc*звучить так, як би спрацювало, поки одного дня ти не трапився зробити ще один файл, що відповідає цьому глобусу, і раптом ти закінчиш відкриття обох відразу. /u*/*/g++вражаюче мало символів, але, сподіваємось, нічого іншого в жодній із папок будь-якої з моїх кореневих папок, починаючи з цього, uне названо g++. (Як хороший компроміс, у деяких оболонках ви можете використовувати вкладку для розширення глобусів на місці, коли ви йдете)
Майкл Мрозек

3

Існує також OLDPWDзмінна середовища, яка відповідно до IEEE 1003.1 (POSIX) повинна оновлюватися попереднім робочим каталогом щоразу, коли cdзмінюється робочий каталог (для допитливих - рядок 80244 сторінки 2506 IEEE 1003.1-2008).


3

Існує також додаток "wcd", створений спеціально для цього (також переноситься на cygwin, оскільки я на тому). Ви можете створити ярлики, закладки з них. Також підтримує підказки. Читання чоловічої сторінки та документів у / usr / share / wcd має дуже допомогти.

http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html


3

cdargs є найефективнішим інструментом для закладки каталогу: http://www.youtube.com/watch?v=uWB2FIQlzZg


Це продукт, з яким ви асоціюєтесь?
Казарк

Дякую, що вказали мені на cdargs. Просто sudo apt-get cdargsна ubuntu. До речі, відео на YouTube є дуже поганим, але інструмент чудовий.
DavidG

3

Спробуйте fastcd ( https://github.com/frazenshtein/fastcd ) Він встановлює гачок, який записує відвідувані каталоги з bash. І встановлює псевдонім "j", який показує вам останні відвідувані каталоги, з можливістю швидкого використання CD-файлів (почніть вводити фільтри каталогів). Модифікація .bashrc необхідна для створення псевдоніма "j".

Отримання інструменту

cd ~; mkdir Soft; cd Soft
git clone https://github.com/frazenshtein/fastcd

Встановіть необхідні модулі

pip install --user urwid

Джерело файлу set.sh у вашому файлі bashrc

echo -e "\nsource /home/$USER/Soft/fastcd/set.sh\n" >> ~/.bashrc

І оновити bashrc

source ~/.bashrc

Потім просто введіть "j" у консолі


Як це працює? Якщо це псевдоніми, що для вас робить цей інструмент, що ви не можете зробити, вручну редагуючи .bashrc?
G-Man

Він запускає демон, який записує відвідувані каталоги в ~ / .fastcd для запущених оболонок (bash). "j" запускає інструмент, який показує вам останні відвідувані каталоги, з можливістю швидко CD. Модифікація .bashrc необхідна для створення псевдоніма "j". Ви можете побачити вихідний код для отримання додаткової інформації, я здогадуюсь
Сем Толіман

Дякуємо за вашу швидку відповідь. Це така інформація, яка повинна відповідати. Будь ласка, відредагуйте свою відповідь, щоб включити цю інформацію.
G-Man

3

У мене було те саме питання, і я вперше знайшов цю відповідь . Я встановив утиліту z ( https://github.com/rupa/z ).

Це саме те, що ви шукаєте, тому що z вчиться з ваших команд cd і відслідковує каталоги за принципом frecency (часті та останні). Тож після того, як ви виконаєте обидві команди CD один раз, ви можете зробити somtehing так:

z docs
z ds

для переходу /Project/Warnest/docs/і ~/Dropbox/Projects/ds/test/відповідно. Аргументи до z - це регулярні вирази, тому вам навіть не потрібно вводити повне ім’я папки.


3

Оновлення (2016): Зараз для цього я використовую FASD , який дозволяє нечітко шукати на основі ваших останніх каталогів.


Я створив інструмент для цього в Ruby. Це дозволяє використовувати файли YAML для декларування своїх проектів.

Я написав про це невелику статтю тут: http://jrnv.nl/switching-projects-terminal-quickly/

Я також опублікував джерело на GitHub: https://github.com/jeroenvisser101/project-switcher


2

Я використовую свій власний службовий cdhist для управління цим протягом багатьох років. Він псевдонімує вашу команду CD і автоматично зберігає стек каталогів.


2

Ви можете використовувати exportдля призначення шляхів до каталогу до змінних, а потім посилатися на них.

export dir1=/Project/Warnest/docs/
export dir2= ~/Dropbox/Projects/ds/test/
cd $dir1
cd $dir2

Так, цього достатньо для кількох улюблених панів. Не потрібно встановлювати будь-які інші утиліти. Просто покладіть exportзаяви у свої ~/.bashrc, і вони завжди будуть доступні.
Вісбукі

1

Деякі пропозиції тут:

Найбільш пряма ідея, я додам псевдонім у файл .profile

vi ~/.profile
alias dir1='cd /myhome/onedir'
alias dir2='cd /jimmy/anotherdir'

Потім використовувати $ dir1 або dir2, може CD

Якщо ви завжди перемикаєтеся лише на два дрі. за допомогою cd -перемикання між ними.


1

Я використовую для цієї ситуації рішення screen. Початковий екран і створіть вікно для кожного каталогу з ним C-a cта перейдіть до нього. Перехід між вікнами / каталогами з C-a nабо C-a p. Назвіть вікна с C-a A. Тоді ви можете спливати список своїх вікон із C-a "та переходити за допомогою номера або імені вікна. Оскільки він є screen, ви можете відірватися від сеансу, економлячи свій робочий простір, і пізніше приєднатись до цього ж налаштування.


1

Здається, що вам потрібно - це файл проекту для вашого робочого процесу. З каталогами, які належать до вашої діяльності, як у програмі IDE програмування. Спробуйте навігаційні інструменти Zsh та інструмент n-cd. Це дозволить вам переходити між останніми відвідуваними папками, а також визначати а Hotlistз каталогами на ваш вибір:

n-cd

n-cd може бути прив’язаний до комбінації клавіш із:

zle -N znt-cd-віджет

bindkey "^ T" znt-cd-віджет


1

TL; DR

  1. Використовуйте Fishдля інтерактивної оболонки , які просунуть вас негайно ( fish> zsh> bash).
  2. Використовуйте POSIX/ Bashдля сценаріїв , який є найбільш широко підтримується синтаксис ( POSIX> Bash> Zsh> Fish).

Раковини

Випробувавши тут різні оболонки - це мій відгук (у порядку тестування / прийняття):

  • Bash:
    • автоматичне завершення: базове;
    • розширення шляху: немає;
    • сценарій: відмінно.
  • Zsh+ oh-my-zsh:
    • автоматичне завершення: добре (проїзд на велосипеді);
    • розширення шляху: так ( cd /e/x1cd /etc/X11/);
    • сценарій: добре.
  • Fish+ oh-my-fish(поточний) найкращий з поля:
    • автоматичне завершення: рідні та підтримувані варіанти;
    • розширення шляху: так;
    • сценарії: занадто велика різниця від POSIX-сумісної.

Використовуйте значущі псевдоніми

Кожна оболонка може бути розширена за допомогою, functionі aliasось я використовую ті, що стосуються вашої проблеми (сумісні з POSIX):

back () {  # go to previous visited directory
        cd - || exit
}

up () {  # go to parent directory
        cd ..|| exit
}

Існують основні, але дійсно значущі такі легкі для запам'ятовування та автозаповнення.

Знай свою оболонку

Налаштуйте, CDPATHщоб додати свої найбільш використовувані каталоги (наприклад ~/projects/, /etc/init.d/), щоб ви могли швидко перейти до них.

Дивіться відповідь щодо манархії на деталі з мроCDPATH .

Чат і читайте


Коли функція оболонки викликає exit, ви виходите з інтерактивної оболонки. Ці «значущі псевдоніми» можуть бути просто alias back='cd -'і alias up='cd ..'- але не хвилюйтеся, ці команди ніколи не повертають помилковий , і тому ви ніколи не будете виходу (без попереднього каталогу він відправляє вас додому вже в корені це не НЕ-оп?!?!) . Також врахуйте alias back='cd $OLDPWD'(зверніть увагу на окремі цитати), оскільки він не матиме жодного результату ( cd -повідомляє, куди він надсилає вас, що, ймовірно, непотрібне, оскільки у вашому запиті є така інформація)
Адам Кац,

1

ancце інструмент для рядків cmd (короткий для якоря), який зберігає закладки каталогів. (поки що тільки тестується з bash)

У вашому випадку:

anc a /Project/Warnest/docs/ ~/Dropbox/Projects/ds/test/

це додає обидва каталоги до списку прив’язки (продуманих закладок)

Тепер, якщо ви хочете перейти /Project/Warnest/docs/з будь-якого місця вашого типу системи:

anc Warn

і якщо ви хочете перейти до ~/Dropbox/Projects/ds/test/типу:

anc ds test

Окрім відповідності тексту до закладених контурів, у anc є багато інших зручних способів перестрибування каталогів.

anc i

запускає інтерактивний режим, в якому перераховуються всі закладки за номером, тому все, що вам потрібно набрати, - це номер

Якщо ви введете:

anc Pro[TAB]

відображається список, що відповідає всім закладок (у вашому випадку обидві закладки), і ви можете вибрати його за допомогою клавіш зі стрілками, це дуже швидкий та інтуїтивний спосіб.

Знайдіть anc на сторінці github проекту: https://github.com/tobimensch/anc

Є також README з прикладом використання.

Повне розкриття: Я автор цього сценарію. Я сподіваюся, що деякі люди знайдуть це корисним.

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