1

Я только что играл с dirs, pushd и popd. Добавление / навигация по каталогу с помощью pushd, использование dirs -v для отображения вертикального списка «стека» каталога и popd для удаления записи из списка. Когда я открываю новый терминал и перечисляю каталоги с помощью dir или dir -v, новый терминал показывает только текущий каталог. Есть ли способ передать список при открытии нового терминала? Я на Debian Stretch с xfce4-терминал.

1 ответ1

1

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

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

Так что, чтобы сохранить список, просто сделайте

dirs -p >~/mydirs

Восстановить их немного сложнее. Сначала мы читаем файл в массив v , затем просматриваем его в обратном порядке до индекса входа 1. Я остановился на индексе 1, а не на 0, поскольку 0-я запись будет текущим каталогом в тот момент, когда вы выполнили dirs -p . Вы можете выбрать, хотите вы этого или нет.

dirs -c # clear
IFS=$'\n' read -r -d '' -a v <~/mydirs
for ((i=${#v[*]}-1; i>=1; i--))
do pushd -n "${v[i]}" >/dev/null
done

Имеет смысл сохранить этот код в функции bash и вызвать его из вашего ~/.bashrc .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .