при искажении CD к pushd - действительно ли это - хорошая идея?

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

Нет никакой Корзины для rm, и при этом не должен быть. При необходимости в Корзине необходимо использовать высокоуровневый интерфейс. Существует утилита командной строки в trash-cli на Ubuntu, но большую часть времени файловые менеджеры GUI как Наутилус или дельфин используются для обеспечения стандартной Корзины. Корзина является стандартной сама. Файлы, поврежденные у дельфина, будут видимы в Мусоре от Наутилуса.

Файлы обычно перемещаются, чтобы где-нибудь любить ~/.local/share/Trash/files/ при повреждении. rm команда на UNIX/Linux сопоставима с del на DOS/Windows, который также удаляет и не перемещает файлы в Корзину. Другая вещь понять состоит в том, что перемещению файла через файловые системы нравится к Вашему диску USB от Вашего жесткого диска, действительно 1) копия данных файла, сопровождаемых, 2) удаляя связь с исходным файлом. Вы не хотели бы, чтобы Ваш Мусор был заполнен этими дополнительными копиями.

37
23.11.2010, 19:52
4 ответа

Лично, я имею их в своем 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 распечатайте, но это - больше вопрос персонального вкуса больше, чем что-нибудь.

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

40
27.01.2020, 19:36
  • 1
    Превосходный совет! Пользователи Vi/Vimperator могут настроить <C-o> кому: popd для подлинного опыта. –  unperson325680 20.03.2011, 19:38
  • 2
    @progo можно ли объяснить, как зеркально отраженный изменит каталог с сованием от стопки каталога? –  Jonathan. 03.09.2013, 14:42
  • 3
    , привыкавшем к конфигурациям zsh, это пропускает: (1) дедупликацию объектов на dirstack и (2) пути только к CD непосредственно к объекту в dirstack с его индексом. Я думаю, что могу легко записать обертки для реализации их... К сожалению, кажется, что DIRSTACK удара не разрешают быть измененным, таким образом, простофилям, возможно, просто придется остаться. –  Steven Lu 14.07.2017, 06:05

Это не прямой ответ на вопрос, но я влюбился в окно истории каталога в 4DOS. Так так, чтобы я записал свою собственную версию для Linux (и Cygwin). Я никогда не находил время для создания его легкая к установке утилита, но если Вы знаете свой путь вокруг подсказки Bash, не должно случаться так что трудно получить выполнение. Ваш вопрос вдохновил меня помещать его в Мерзавца repo и загружать его на GitHub: dirhistory.

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

7
27.01.2020, 19:36

Для меня pushd/popd/dirs близок к помощи, но отсутствует. Поэтому я создал "обертку" вокруг этих называемых "Navd", реализованную по сути как набор из 20 псевдонимов. (На самом деле, одна из них - функция.) Код приведен ниже, но сначала короткое объяснение. (Одна приятная вещь о "Navd" и работе на чужих машинах: Существует "неинсталлированная" форма запуска: В качестве одного из вариантов установки вы можете просто вставить команды, которые реализуют "navd" в bash-симптоме, и на время этой bash-сессии для этой машины Navd будет работать. Это даёт нулевой след в файловой системе, но это временная установка. Поместите эти команды в .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 вращает стек так, чтобы каталог, который становится текущим dir также теперь отображался в передней части стека. Положительные значения находят слева счетчик дирсов, при этом индексация начинается с нуля. Отрицательные значения находят отсчет грязи слева, индексация начинается с -1. (Это следует из конвенции о том, как массивы-индексы могут быть использованы на Java и других языках.)

Примечание: Любая команда "Navd" отображает тот же самый стек, который используют "pushd" и "dirs" -- но отображает его БЕЗ крайняя левая запись , которую "dirs" отобразили бы (так как эта запись на самом деле не на стеке - это текущий каталог. и с "dirs", которая меняет самую левую запись , если вводится команда cd). (Команда "cd <путь>" не влияет ни на какое поведение Navd , хотя это, безусловно, влияет на поведение pushd/dirs/popd. Также ... Я люблю использовать "cd -", чтобы вернуться "назад" один раз в каталог, откуда я только что переместился, и "cd -". также не влияет на поведение Navd.)

Bonus: Может быть еще 19 псевдонимов, которые НЕ поворачивают стек, а просто меняют гир на место, указанное на стеке.

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

2-ой бонус: "Navh" показывает команды Navd из истории, для легкой загрузки стека с помощью cut-n-paste. (Каждая из них отображается в списке только один раз, даже если она несколько раз попадала в историю, и список отсортирован. Кроме того, записи можно поместить в файл $HOME/.navhignore, чтобы эти точные записи не попали в список Navh)

 navh

Три ключевых поведения:

  1. Если вы очистите стек и повторите специальную команду "Navd ", этот путь пройдет по стеку. Это то, чего я хочу и ожидаю... но pushd этого не делает - он помещает текущий dir, по которому вы перемещаетесь AWAY FROM, на стек - так что эффект на стеке будет переменным (кажется непредсказуемым), когда вы повторите команду.

  2. "Navd " не поместит один и тот же путь на стек дважды.

  3. "navd " помещает себя в историю команд с абсолютным путем, даже если путь относительный был введен для команды.

Для меня три последних описанных поведения делают использование команды "Navd " из истории гораздо более полезным, чем использование "pushd " из истории. Я действительно могу повторно использовать историю, чтобы ходить по местам. И когда я это делаю, я не "порчу" свой стек.

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

Думай о pushd/dirs/popd как о "как мне проследить свои шаги?".
Думай о навде как о "как удержать набор любимых каталогов и легко переключаться между ними?".

Вставьте следующее в терминальное окно, и вы сможете сразу же начать использовать 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 -" очень удобен для возвращения к последнему "месту", где вы были, или для переключения только между 2 местами, и он работает везде без установки)

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

0
27.01.2020, 19:36

Вот еще одно решение, которое может вам понравиться. Я написал его после того, как поиграл с решением от @cjm. Оно использует команду dialog для создания меню типа ncurses из вывода dirs. Выбор пункта выводит каталог на вершину стека и позволяет войти в него. Преимущество перед dirhistory в том, что каждый терминальный эмулятор получает свой собственный буфер истории каталогов, а также в том, что его немного проще установить.

Для установки: После того, как вы заменили cd на pushd, установите dialog, а затем просто поместите эту функцию в 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, а затем выполнение другой команды для перехода или cd в нужный каталог. Диалоговые меню также могут быть сильно настроены через dialogrc.

Итак, отвечая на ваш вопрос, да, я думаю, что алиасинг pushd на cd - отличная идея. У вас вряд ли возникнут проблемы с переполнением буфера, если вы регулярно перезагружаете машину, по крайней мере, для обновлений. Хотя я бы поостерегся использовать cd в сценариях; cd в цикле while может потенциально вызвать проблемы переполнения буфера. Я не уверен, что контролирует размер буфера dirs/pushd.

0
27.01.2020, 19:36

Теги

Похожие вопросы