Я обнаружил, что много работаю над проектом в заданном каталоге. Иногда - несколько месяцев спустя - мне нужно что-то переделать в этом проекте, но я не могу вспомнить, что я сделал. Я использую Mercurial или Git для отслеживания изменений в файлах, но я хочу иметь возможность запомнить, какие команды я выполнил в этом каталоге.
Поиск по истории моей оболочки не очень информативен. Я уже записываю все в свои файлы истории. * _, Но мне нужен список того, что я делал в ~ / foo / bar, а не всех других (миллионов) вещей, которые я делал на этой неделе. Я, наверное, даже не помню, в каком месяце я последний раз работал над этим конкретным проектом.
Кто-нибудь имеет какие-либо идеи, как файл журнала каталога проекта всех команд оболочки, которые я использовал? Я представляю команду что-то вроде:
работа над моим проектом
... который установит для файла журнала оболочки ~ / myproject / .history.log, загрузит предыдущую историю из этого файла журнала и, возможно, обновит мое приглашение, чтобы сообщить мне, над каким каталогом я работаю (например, vcprompt для предоставления версии). контрольная информация).
Есть ли что-нибудь подобное?
Возможно, вас заинтересует плагин, который я написал, под названием directory-history для zsh.
Смотрите здесь: https://github.com/tymm/directory-history
Хотя он не совсем подходит для вашего рабочего процесса в myproject , он должен идеально соответствовать вашим потребностям.
Это создает историю, которая включает в себя каталоги.
Когда вы просматриваете свою историю, вы сначала получите команды из каталога, в котором вы находитесь.
Если для этого каталога не осталось команд, он вернется к глобальной истории и предложит команды, используемые в других каталогах.
источник
Если вы хотите что-то простое, вы можете иметь свой
.history.log
файл как таковой:Затем при запуске файла будут
cat
те команды, которые вы перечислили в нем.Вы также можете сгруппировать эти команды в отдельные файлы по функциональности в соответствии с соглашением:
Это имеет дополнительное преимущество: работать "из коробки" и не загрязнять окружающую среду.
источник
README.md
или создавать другие.md
файлы для каждой темы и указывать на них в файле readme. Это если у вас есть дружественный к уценке интерфейс управления исходным кодом.По крайней мере, в bash HISTFILE используется только при запуске экземпляра оболочки. Идея per-dir здесь не сработает, если только в приведенном выше примере 'workon' не создан экземпляр оболочки.
Может быть, вы можете посмотреть на что-то вроде
Но сценарий также создает подоболочку.
Короче говоря, вам, вероятно, понадобятся грязные уровни подоболочек, чтобы это работало.
источник
Я работал в производственных домах программного обеспечения, где мы просто создавали новых пользователей и группы для различных функций. Новые учетные записи пользователей, предназначенные специально для управления конфигурациями или сборками программного обеспечения, с различными уровнями видимости в другие связанные функциональные области посредством членства в группах и ACL, а также история команд, выполняемая, скажем,
cmmgr
будут сохраняться~cmmgr/.bash_history
,bldmgr
связанное слово будет сохраняться~bldmgr/.bash_history
и т. Д. К сожалению, Для входа в систему пользователь должен владеть своим каталогом для входа. Поэтому область проекта была настроена на отдельном диске. Владение создателя файла показало, в какой функциональной области были созданы файлы в области проекта, для чего.bash_history
может быть исследована соответствующая область.Вышеупомянутый подход, однако, не дает вам желаемой степени детализации, однако он дает вам скелет, который в сочетании с членством в группе, пользователь может переключать группы, с помощью
newgrp
которых эффективно создает новую оболочку и среду, а затем использовать один из подходов, приведенных в других ответах, чтобы изменить эффективный~/.bash_history
файл при переключении, скажем, шляпы ,cmmgr
чтобыnewgrp
можно было управлять, который~/.bash_history
может быть использован и сохранен для каждой папки при входе и выходе из новой группы с помощьюnewgrp
команды. Проверьтеman newgrp
. Есть некоторые отправные точки по этим направлениям в других ответах на этот вопрос. Они должны работать с парадигмой группы UNIX - большинство гаек и болтов обрабатываются процедурами запуска и выхода оболочки, как это контролируетсяnewgrp
призывание. Проверьтеnewgrp -l
:источник
Здесь я представляю два варианта, но применимых только к Z Shell .
Вариант 1
Это то, о чем я впервые подумал, читая заголовок вашего вопроса. С помощью этого варианта вы можете переключаться между двумя режимами истории с помощью ALT+ h: глобальный или локальный , где последний автоматически переключается на историю каталогов по chdir . Глобальная история накапливает все выданные команды.
демонстрация
Сценарий (для включения
~/.zshrc
или получения)Вариант 2
Подумав еще раз, кажется, что история per-dir слишком мелкозернистая, и вы также описываете историю каждого проекта в своем теле вопроса. Поэтому я предложил другой вариант с рабочей функцией для переключения между проектами. Каждый проект имеет свой собственный файл истории
~/.zsh_projhistory_[name]
.демонстрация
Сценарий (для включения
~/.zshrc
или получения)источник
После работы в одной области некоторое время.
history> hist1.txt, затем более поздняя история> hist2.txt
Иногда я использую дату для имени файла. история> hist20180727.txt
Таким образом, существует недавняя история команд для каждого каталога.
источник