псевдонім CD на pushd - це гарна ідея?


35

Чи корисно використовувати наступний псевдонім:

cd() {
    pushd $1;
}

в баш?

Я думаю, що це було б дуже корисно, оскільки тоді я можу використовувати серію popds, а не один cd -раз.

Чи є випадок, коли це може бути проблемою?


2
Я знаю, в zsh є налаштування робити саме це. Не впевнений, що це все-таки. Чи потрібно робити функцію замість просто alias cd=pushd?
Фальмарі

2
Я би другий псевдонім над функцією.
алесплін

1
Чому б не псевдонім нове ім'я. Як щодо pd? Ви єдиний користувач та адміністратор вашої системи?
Кевін Канту

3
@Falmarri Опція zshautopushd
Michael Mrozek

1
Строго кажучи, це функція, а не псевдонім (але все краще).
tripleee

Відповіді:


39

Особисто я маю це у своєму bashrc і постійно користуюся ними:

pushd()
{
  if [ $# -eq 0 ]; then
    DIR="${HOME}"
  else
    DIR="$1"
  fi

  builtin pushd "${DIR}" > /dev/null
  echo -n "DIRSTACK: "
  dirs
}

pushd_builtin()
{
  builtin pushd > /dev/null
  echo -n "DIRSTACK: "
  dirs
}

popd()
{
  builtin popd > /dev/null
  echo -n "DIRSTACK: "
  dirs
}

alias cd='pushd'
alias back='popd'
alias flip='pushd_builtin'

Потім ви можете переміщатися навколо в командному рядку, як браузер. cdзмінює каталог. backпереходить до попереднього каталогу, з якого ви cdредагувались. І flipбуде переходити між поточним та попередніми каталогами, не висуваючи їх із стека каталогу. Загалом, це чудово працює.

Єдиною реальною проблемою, про яку я усвідомлюю, є той факт, що тоді це набір команд, до якого я повністю звик, але не існує на чужий машині. Отже, якщо мені доведеться користуватися чужою машиною, це може трохи засмутити. Якщо ви звикли користуватися просто pushdта popdбезпосередньо, у вас немає такої проблеми. І хоча якщо ви просто псевдонім cdне поставив popd, у вас не виникне проблема backнеіснуючої, у вас все одно буде проблема, яка cdне буде робити те, що ви очікуєте на інших машинах.

Зауважу, однак, що ваша конкретна реалізація cdне зовсім працює так cd, як звичайна cdсама по собі перейде до вашого домашнього каталогу, але ваша - ні. Версія, яку я маю тут, не має такої проблеми. Моя також додається DIRSTACKна передній частині dirsроздруківки, але це більше питання особистого смаку.

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


Відмінна порада! Користувачі Vi / Vimperator можуть налаштувати <C-o>на popdдля справжнього досвіду.
unperson325680

1
@progo чи можете ви пояснити, як flip змінить каталог із вискакуванням із стека каталогів?
Джонатан.

Призвичаївшись до конфігурацій zsh, цього не вистачає: (1) дедуплікація елементів на dirstack та (2) способи просто cd безпосередньо до елемента в dirstack з його індексом. Я думаю, що я можу легко написати обгортки, щоб реалізувати це ... На жаль, виявляється, що DIRSTACK basha не дозволяється змінювати, тому дупи можуть просто залишитись.
Стівен Лу

Чи можете ви, будь ласка, додати ясні очищення від бруду?
Pasupathi Rajamanickam

7

Це не пряма відповідь на питання, але я закохався у вікно історії каталогів у 4DOS. Настільки, що я написав власну версію для Linux (і Cygwin). Я ніколи не замислювався над тим, щоб зробити його простою в установці утилітою, але якщо ви знаєте свій шлях навколо підказки Bash, це не повинно бути таким важким для запуску. Ваше запитання надихнуло мене поставити його в Git repo і завантажити його в dithistory GitHub .

В основному, це демон, який збирає зміни в каталозі з усіх ваших оболонок, і програма Cdk, яка відображає історію і дозволяє вибирати будь-який каталог для переходу (щоб ви не обмежилися стеком). Я вважаю це дійсно корисним, і він пов'язаний з Ctrl-PageUp, як і 4DOS. (Я навіть зафіксував PuTTY, щоб він послав Ctrl-PageUp на Bash.)


0

Для мене pushd / popd / dirs є корисним, але не вистачає. Тому я створив "обгортку" навколо цих під назвою "navd", реалізований як по суті набір з 20 псевдонімів. (Один з них - це дійсно функція.) Код нижче, але ось спочатку коротке пояснення. (Одна приємна річ щодо "navd" та роботи на машинах інших людей. Існує форма "no-install" для її запуску. Як один варіант установки, ви можете просто вставити команди, які реалізують "navd" у bash-prompt , і протягом тривалості цього bash-сеансу для цієї машини nevd працюватиме. Це дає нульовий друк у файловій системі, але це тимчасова установка. Покладіть ці команди в .bashrc для "реальної" установки, з звичайно.)

Особливості:

navd <path>;   -- will make that path the current dir AND will add it to the stack
                         AS A BONUS: If a relative path is used, this command is added to history
                         with an absolute path instead. This improves navigation even when only
                         using history ... because very often relative-path commands in history
                         are useless if the command changes the current directory. (After all, you
                         would have to be in the directory the command was originally issued
                         from in order for such a command to work correctly.)
navd           -- shows the stack, with index numbers for convenience
navd0          -- makes the first entry on the stack (read left-to-right) **the current dir**
navd1          -- makes the second entry on the stack (read left-to-right) **the current dir**
.
.
.
navd9          -- makes the tenth entry on the stack (read left-to-right) **the current dir**
navd-1         -- makes the first entry on the stack WHEN READ RIGHT-to-LEFT(!) **the current dir**
.                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.
.
navd-9         -- makes the 9th entry on the stack WHEN READ RIGHT-to-LEFT(!) **the current dir**

Будь-яка з дев'ятнадцяти команд navd <N> обертає стек так, що каталог, який стає поточним dir, також тепер відображається в передній частині стека. Позитивні <N> значення знаходять dir, рахуючи зліва, індексація починається з нуля. Негативні <N> значення знаходять dir, рахуючи від ПРАВА, з індексуванням починаючи з -1. (Це слідує домовленості використання індексів масиву на Java та інших мовах.)

Примітка: Будь-яка команда "navd" відображає ту саму стек, яку використовує "pushd" та "dirs", але відображає її БЕЗ лівого запису, який відображатиметься "dirs" (оскільки цей запис насправді не є стеком - це поточний каталог та з "dirs", що найбільше ліворуч змінюється, якщо вводиться команда cd). (Команда "cd <path>" не впливає на поведінку navd, хоча це, безумовно, впливає на поведінку pushd / dirs / popd. Також ... я люблю використовувати "cd -", щоб один раз повернутися "назад" до a каталог, з якого я просто перейшов, і "cd -" не впливає і на поведінку navd.)

Бонус: Є ще 19 псевдонімів, які НЕ обертають стек, а лише змінюють dir на місце, вказане на стеку.

 nav0 ... nav9   and   nav-1  ... nav-9

2-й бонус: "navh" показує команди navd <path> з історії для легкого завантаження стека cut-n-paste. (Кожен перераховується лише один раз, навіть якщо він є в історії кілька разів, а список сортується. Також записи можна помістити у файл $ HOME / .navhignore, щоб запобігти появі цих точних записів у списку navh.)

 navh

Три ключові форми поведінки:

  1. Якщо ви очистите стек і повторите певну команду "navd <path>", цей шлях піде на стек. Це те, що я хочу і очікую ... але pushd цього не робить - він ставить поточний dir, з якого ви рухаєтесь ВІД ВІД на стек - тому вплив на стек мінливий (відчуває себе непередбачуваним), коли ви повторюєте команду .

  2. "navd <path>" не буде ставити один і той же шлях у стек двічі.

  3. "navd <path>" вводить себе в історію команд з абсолютним шляхом, навіть якщо для команди було введено відносний шлях.

Для мене останні три описаних способів поведінки роблять використання команди "navd <path>" з історії набагато корисніше, ніж використання "pushd <path>" з історії. Я дійсно можу повторно використовувати історію, щоб побувати в місцях. І коли я це роблю, я не "псую" свою групу.

Якщо ви можете і хочете обернути свій мозок навколо нього, ви можете перемикатися між використанням navd і pushd / dirs / popd. Обидва використовують один і той же стек; просто з іншим стилем. Наприклад, використовуйте "popd" для видалення речей зі стека "navd" або використовуйте "dirs -c" для очищення стека navd.

Подумайте про "pushd / dirs / popd" як "як я повторюю свої кроки?".
Подумайте про navd як "як я тримаюсь за набором улюблених каталогів і легко перемикаюся між ними?".

Вставте наступне у вікно терміналу, і ви можете негайно почати використовувати navd протягом тривалості цього термінального сеансу. Це весь код, який є для цієї функції.

# Add 1 function and many related aliases for something like "pushd", called "navd". http://unix.stackexchange.com/a/229161
# Think of pushd/dirs/popd as "how do I retrace my steps?".
# Think of navd as "how do I hold on to a set of favorite directories, and easily switch between them?".
# Pseudo-code to explain each part of the "navd" bash function just below:
#              If no arguments to the 'navd' command:
#                  If stack has entries, then print the stack one-line-per-dir with each line numbered.
#                  Else, if stack is empty, automatically run the equivalent of the navh command.
#              Else (there **are** arguments to the 'navd' command):
#                  If arg is '--help' or '/?' then show help.
#                  Else    (arg is assumed to be a path to a directory)
#                      Remember the directory we are starting at
#                      Change to dir given as argument (the "arg-dir"), and do a few chores:
#                      Do not use arg-dir literally ... instead, magically put the **absolute** path we arrived at into history.
#                      Set a flag if the arg-dir is already in the stack.
#                      If the flag is set then just show the stack (on one line), else ADD to stack, ROTATE to end-of-stack, and show the stack.
#                      Change to dir we started at and then back to the arg-dir. This allows "cd -" to go back to dir we started at.
#                  End-If
#              End-If
navd () {
    if [[ $1 == '' ]]; then                             #--no arguments to the 'navd' command
        if dirs +1 >/dev/null 2>&1; then                #------stack has entries
            dirs -p | perl -ne 'print (-1+$cn++); print "$_"' | grep -v "^-1";
        else                                            #------stack is empty
            echo "The navd stack is empty. Now running 'navh' in case that's helpful. navd --help works."
            if [[ ! -f $HOME/.navhignore ]]; then echo -n ''>>$HOME/.navhignore;fi;diff --new-line-format="" --unchanged-line-format="" <(history | perl -ne "if (m/^\s*\d+\s+navd [\"~.\/]/) {s/^\s*\d+\s+/  /;s/\/$//;print}" | sort -u) <(cat $HOME/.navhignore | sort -u);echo "cat $HOME/.navhignore # (Has "`grep -c . <(sort -u $HOME/.navhignore)`" unique lines.)"
        fi
    else                                                #--(there **are** arguments to the 'navd' command)
        if [[ $1 == '--help' || $1 == '/?' ]]; then     #------arg is '--help' or '/?'
            echo "The 'navd' functionality is nothing but one bash function and a set of aliases."
            echo "It offers a different style of handy directory navigation than pushd/popd."
            echo "It uses the same 'stack' as pushd. Look in the .bashrc file for details."
            echo "    (Think of pushd/dirs/popd as 'how do I retrace my steps?'."
            echo "     Think of navd as 'how do I remember a set of favorite directories,"
            echo "     and easily switch between them?'.)"
            echo "As of 10/2015, this link has more info: http://unix.stackexchange.com/a/229161"
            echo "Here is the set of navd-related aliases. None need any parameter:"
            alias | grep 'alias nav' | cut -d= -f1 | grep -v '-' | grep -v 'navh'
            alias | grep 'alias nav' | cut -d= -f1 | grep '-'
            echo "alias navh  # The 'navh' alias has nothing to display until a 'navd <path>' is run. Short for nav-history."
            echo "---- To get started, simpy type navd followed by your favorite path. ----"
            echo "---- navd with no param shows stack. nav0 navigates to first on stack. ----"
        else                                            #------(arg is assumed to be a path to a directory)
            mypwd="$PWD"
            cd "$1" >/dev/null;
            history -s `echo "$PWD" | perl -pe 's/$ENV{'HOME'}/~/;s/ /\\\\ /g;s/^/navd /'`
            myflag=`dirs -p | perl -pe 's/\n/:/' | perl -ne '@a=split(":");$pwd=shift(@a);$flag=0;foreach (@a) {if ($_ eq $pwd) {$flag=1}};print $flag'`
            if [[ $myflag == 1 ]]; then dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"; else pushd .>/dev/null; pushd +1>/dev/null; dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"; fi
            cd "$mypwd"; cd "`dirs -l -0`"
        fi
    fi
};
# Aliases for navigating and rotating the "pushd" stack in the style of "navd":
alias navd0='cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"' # "-l" is dash-L, and expands "~" to denote the home dir. Needed inside back-ticks.
alias navd1='cd "`dirs -l +1`";pushd -n +1;cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd2='myd=$PWD;cd "`dirs -l +1`";for i in {1..2};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd3='myd=$PWD;cd "`dirs -l +1`";for i in {1..3};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd4='myd=$PWD;cd "`dirs -l +1`";for i in {1..4};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd5='myd=$PWD;cd "`dirs -l +1`";for i in {1..5};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd6='myd=$PWD;cd "`dirs -l +1`";for i in {1..6};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd7='myd=$PWD;cd "`dirs -l +1`";for i in {1..7};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd8='myd=$PWD;cd "`dirs -l +1`";for i in {1..8};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd9='myd=$PWD;cd "`dirs -l +1`";for i in {1..9};do pushd -n +1>/dev/null;cd "`dirs -l +1`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-1='cd "`dirs -l -0`";pushd -n -0>/dev/null; dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-2='myd=$PWD;cd "`dirs -l -0`";pushd -n -0>/dev/null;cd "`dirs -l -0`";pushd -n -0>/dev/null;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-3='myd=$PWD;cd "`dirs -l -0`";for i in {1..3};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-4='myd=$PWD;cd "`dirs -l -0`";for i in {1..4};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-5='myd=$PWD;cd "`dirs -l -0`";for i in {1..5};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-6='myd=$PWD;cd "`dirs -l -0`";for i in {1..6};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-7='myd=$PWD;cd "`dirs -l -0`";for i in {1..7};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-8='myd=$PWD;cd "`dirs -l -0`";for i in {1..8};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias navd-9='myd=$PWD;cd "`dirs -l -0`";for i in {1..9};do pushd -n -0>/dev/null;cd "`dirs -l -0`";done;cd "$myd";cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
# BONUS commands (beyond the 20). Aliases for navigating but NOT rotating the "navd" stack:
#      Help in remembering: "navd<#>" does more since it both changes the PWD and rotates the stack, whereas "nav<#>" does less
#            (and has one letter less) since "nav<#>" only changes the PWD. Also "navd<#>" acts like the pushd-related command: dirs
#      There is no "nav" command (with no number) so that there will be no conflict if any program called "nav" is used.
alias nav0='cd "`dirs -l +1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav1='cd "`dirs -l +2`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav2='cd "`dirs -l +3`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav3='cd "`dirs -l +4`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav4='cd "`dirs -l +5`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav5='cd "`dirs -l +6`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav6='cd "`dirs -l +7`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav7='cd "`dirs -l +8`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav8='cd "`dirs -l +9`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav9='cd "`dirs -l +10`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-1='cd "`dirs -l -0`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-2='cd "`dirs -l -1`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-3='cd "`dirs -l -2`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-4='cd "`dirs -l -3`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-5='cd "`dirs -l -4`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-6='cd "`dirs -l -5`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-7='cd "`dirs -l -6`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-8='cd "`dirs -l -7`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
alias nav-9='cd "`dirs -l -8`";dirs -p | perl -ne "chomp;s/$/ /;print unless ++\$cn==1"'
# BONUS command (beyond the 20). Alias for showing 'history' of all navd commands that add to the stack.
#                Can be used in a new terminal session to quickly add recently used dirs to the navd stack.
alias navh='if [[ ! -f $HOME/.navhignore ]]; then echo -n ''>>$HOME/.navhignore;fi;diff --new-line-format="" --unchanged-line-format="" <(history | perl -ne "if (m/^\s*\d+\s+navd [\"~.\/]/) {s/^\s*\d+\s+/  /;s/\/$//;print}" | sort -u) <(cat $HOME/.navhignore | sort -u);echo "cat $HOME/.navhignore # (Has "`grep -c . <(sort -u $HOME/.navhignore)`" unique lines.)"'
# Note: When 'navd <relative-path>' is used, then by bash-magic the navd command puts 'navd <absolute-path>' into history,
#       instead. This allows the output of "navh" to be useful regardless of the directory that is current when it is run.
#
# BONUS commands (beyond the 20). An even shorter alias for navd. An even shorter alias for navh.
alias nd='navd'
alias nh='if [[ ! -f $HOME/.navhignore ]]; then echo -n "">>$HOME/.navhignore;fi;diff --new-line-format="" --unchanged-line-format="" <(history | perl -ne "if (m/^\s*\d+\s+navd [\"~.\/]/) {s/^\s*\d+\s+/  /;s/\/$//;print}" | sort -u) <(cat $HOME/.navhignore | sort -u);echo "cat $HOME/.navhignore # (Has "`grep -c . <(sort -u $HOME/.navhignore)`" unique lines.)"'

Ці псевдоніми базуються на командах "bash". Особлива увага приділяється збереженню нормальної поведінки "cd -". (Багато часу я використовую "cd -" замість того, щоб турбуватися з pushd або navd - тому що "cd -" дуже зручно для повернення на останнє "місце", на якому ви були, або для переключення між лише двома місцями, і він працює скрізь без встановлення.)

Ці команди, звичайно, можна помістити у файл .bashrc для більш постійної їх установки.


1
Дана, у вас, здається, є два окремих акаунти з тим самим іменем. Ви можете злити їх досить легко.
roaima

Ви запускаєте інтерпретатора Perl кожного разу, коли змінюєте каталог? Ні, дякую.
Tripp Kinetics

0

Ось ще одне рішення, яке вам може сподобатися. Я написав це після гри з рішенням від @cjm. Він використовує команду діалогу, щоб створити меню типу ncurses з виводу dirs. Вибір елемента приведе цей каталог до вершини стека та додасть до нього компакт-диск. Це має перевагу перед спільною інформацією про надання кожному емулятору терміналу власного буфера історії каталогів та його легше встановити.

Щоб встановити: Після того, як ви зв'язали компакт-диск на pushd, встановіть діалогове вікно, а потім просто введіть цю функцію у свій bashrc:

dirmenu(){
    dirIter=$(dialog --backtitle 'dirmenu' --clear --cancel-label "Exit" --menu "Please select:" 0 0 0 $(dirs) 3>&2 2>&1 1>&3)
    cmd="builtin cd ~$dirIter"
    eval $cmd
}

Мені це подобається трохи краще, ніж запускати dirs -v, а потім виконувати іншу команду pop або cd до потрібного каталогу. Меню діалогів також можна сильно налаштувати через його dialogrc.

Тож, щоб відповісти на ваше запитання, так, я думаю, що вивільнення pushd на CD є чудовою ідеєю. Ви навряд чи матимете проблеми із переповненням буфера, якщо будете регулярно перезавантажувати машину, принаймні, для оновлень. Хоча я обережно використовую компакт-диск при написанні сценаріїв; CD-диск з певного часу може потенційно спричинити проблеми переповнення буфера. Я не впевнений, що контролює розмір буфера dirs / pushd.

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