Поместить в bash или zsh history абсолютный путь к файлам, над которыми я работаю

Я обнаружил, что в bash я часто использую что-то вроде этого:

  • Vim ./somefile1 меньше
  • Меньше ./dir1/dir2/somefile2
  • Cp some_other_relative_path_to_file

и так далее

После этого, когда я пытаюсь найти команду в истории и запускаю ее, я получаю сообщение об ошибке, потому что теперь я в другом каталоге. Можно ли настроить bash для «расширения» относительного пути к файлам с абсолютным, когда они идут в историю?

One Solution collect form web for “Поместить в bash или zsh history абсолютный путь к файлам, над которыми я работаю”

Одним из решений было бы переписать историю, чтобы при ее запуске:

ls 

Он сохраняется как:

 cd /current/directory && ls 

Для Bash есть трюк, чтобы изменить его историю, как объясняется в этом замечательном ответе stackoverflow . Вам нужно будет использовать переменную оболочки Bash, называемую PROMPT_COMMAND .

Когда установлено, его содержимое выполняется каждый раз перед отображением подсказки. Установив это так:

 export PROMPT_COMMAND='hcmd=$(history 1); hcmd="${hcmd# *[0-9]* }"; if [[ ${hcmd%% *} == "cd" ]]; then pwd=$OLDPWD; else pwd=$PWD; fi; hcmd=$(echo -e "cd $pwd && $hcmd"); history -s "$hcmd"' 

Будет переписывать историю, как описано выше.

Попробуйте сначала в окне терминала, и если вы довольны им, добавьте его в свой .bashrc файл, чтобы включить его.

Недостатком является то, что в его текущем воплощении все команды будут иметь префикс cd /some/dir , что уменьшает читаемость и может раздражать команды, такие как cd /usr/local :

 $ history | tail -n 5 522 cd /Users/jaume && cd /usr/local 523 cd /usr/local && file bin/ls 524 cd /usr/local && cd ~ 525 cd /Users/jaume && file Documents/.localized 526 history | tail -n 5 

Вы могли бы, конечно, изменить PROMPT_COMMAND чтобы переписать историю только для уменьшения количества команд.

  • Завершение истории oh-my-zsh
  • Разделите стрелку на локальную и глобальную историю ZSH
  • Добавление файла jar в CLASSPATH по-прежнему не выполняется
  • Как мне получить завершение aws cli для работы с zsh на ubuntu?
  • Требуется ли учетная запись администратора для использования оболочек, таких как zsh и fish?
  • Повторите последнюю команду, соответствующую «двум словам» zsh
  • Как изменить оболочку по умолчанию на удаленном сервере?
  • Цвета завершения ZSH и OS X
  • Как заставить Zsh не сохранять неудачную команду
  • Изменение заголовков и заголовков iTerm2 в zsh
  • Как использовать sudo с псевдонимом в zsh?
  • Как сделать Ctrl-Z и bg одним нажатием клавиши, чтобы процесс продолжался в фоновом режиме?
  • Interesting Posts

    Как восстановить данные с моего диска – я случайно скопировал с dd iso на нем

    Купил новый Mobo, CPU и RAM. Замораживает со специальной графической картой

    Как определить версию Windows из мертвой установки из Linux, имея доступ только к своей файловой системе?

    Могу ли я просматривать Windows App Store за пределами Windows 8?

    Как отключить надстройку в Word?

    Как связаны файлы «EFI system» и UEFI * .efi?

    Можете ли вы настроить Windows на открытие файлов JAR, таких как ZIP-файлы, без стороннего инструмента?

    Выполните M-Audio ProFire 610 как устройство 5.1

    Резервное копирование Windows 7 – несколько изображений системы VHD на выделенном диске

    Двойная загрузка различных версий Mac OS X

    Office 2013 удаляет висячие

    Расширьте кабель USB 3.0

    Запустить часть скрипта bash как другого пользователя

    Как связать два разных интернет-соединения

    Можно ли переключаться между окнами одного типа с помощью AutoHotkey?

    Давайте будем гением компьютера.