У меня есть скрипт в папке, который я использую с длинными аргументами. Есть ли шанс, что у меня может быть история команд, выполненных в этом конкретном каталоге, вместо того, чтобы вернуться назад ко всей истории?
bash
directory
command-history
Фабер
источник
источник
history | less
возможно? Это на самом деле не отвечает на ваш вопрос, но именно с этого я и начну.Ответы:
Подключив bash к PROMPT_COMMAND, эта функция запускается каждый раз, когда вы получаете новое приглашение, поэтому самое время проверить, находитесь ли вы в каталоге, для которого вы хотите создать собственную историю. Функция имеет четыре основные ветви:
$PWD
) не изменился, то ничего не делать (возврат).Если PWD был изменен, то мы создали локальную функцию, единственной целью которой является фактора «пользовательского каталога» код в одном месте. Вы захотите заменить мои тестовые каталоги на свои (разделенные
|
).Поскольку мы изменили каталоги, обновите переменную «предыдущий каталог», затем сохраните историю в памяти в HISTFILE, а затем очистите историю в памяти.
Если мы перешли в пользовательский каталог, то установите HISTFILE в качестве
.bash_history
файла в текущем каталоге.В противном случае мы перешли из пользовательского каталога, поэтому верните HISTFILE в исходный каталог.
Наконец, поскольку мы изменили файлы истории, прочитайте их в предыдущей истории.
Чтобы все пошло как надо, скрипт устанавливает значение PROMPT_COMMAND и сохраняет две переменные внутреннего использования (фондовый HISTFILE и «предыдущий каталог»).
источник
Ответ Джеффа хорош, если вам нужна история для одного каталога, но если вы согласны с установкой zsh, вы можете использовать per-history-directory для получения истории, специфичной для каталога для всех каталогов.
Вы можете установить zsh:
В качестве альтернативы, если вы хотите установить oh-my-zsh , вы можете добавить плагин histdb и написать собственный запрос, чтобы запросить базу данных sqlite, в которую добавлен histdb. Я написал об этом и добавил автозаполнения в посте Dev Diaries . Проверьте раздел бонусных команд .
Запрос выглядит так
Это также принимает необязательный лимит:
например.
источник
Когда мне нужно несколько раз использовать команду с длинными аргументами, я обычно создаю псевдоним в моем,
~/.bash_aliases
или вы можете поместить его в свой,~/.bashrc
если хотите. Это просто и сэкономит время, вместо этого ищите старые команды в истории.источник