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