Могу ли я иметь историю истории оболочки, как расширяются шаблоны?

Если я запустил:

$ ls * foo bar buzz $ history | tail -1 ls * 

Вы можете видеть, что в моей истории оболочки он помнит, что я запустил ls * а не ls foo bar buzz . В идеале я бы хотел записать как в отдельных историях. Когда я задаюсь вопросом: «Что случилось с файлом foo?», Было бы неплохо иметь возможность вернуться и выяснить, что я сделал rm * в неправильном каталоге, просмотрев мою историю и обнаружив «foo ».

Меня интересуют решения как для zsh, так и для bash.

One Solution collect form web for “Могу ли я иметь историю истории оболочки, как расширяются шаблоны?”

Я не думаю, что какая-либо оболочка ничего не делает за пределами пробелов при хранении команд в истории. То, что * расширено, не записано, и, похоже, нет возможности записать его.

Обратите внимание, что в любом случае невозможно было бы записать полную общность. Например, если вы запустите a='foo* bar*'; rm $a a='foo* bar*'; rm $a ( rm $=~a в zsh), оболочка вряд ли будет синтаксически распознавать подстановочный знак. И нет возможности регистрировать все расширения glob.

Вы могли бы preexec что-то вместе с preexec (или эквивалентом bash ). Непроверенный первый go (для zsh):

 history_wildcards=() precmd () { emulate -LR zsh local n tmp history -1 | read n tmp history_wildcards[$(($n+1))]=$=~1 } 

Это заполняет массив history_wildcards строкой с расширением glob каждого слова в командной строке. Разделение слов выполняется наивным образом, поэтому что-то вроде echo ' /**/* ' будет расширяться /**/* (т. Е. Пересекать ваш диск). Не ожидайте ничего полезного из cd subdir && echo * или чего-то такого, что неразумно для ума.

Если вы планируете заранее, вы можете сделать zsh расширять подстановочные знаки перед отправкой команды. В конфигурации по умолчанию просто нажмите « Tab», когда ваш курсор находится в глобусе. Если вы настроили завершение по-другому, попробуйте ^X * ( expand-word ).

  • Git отслеживания dotfiles, которые символически связаны
  • Задание zsh на пустой строке
  • zsh функция экспорт иглы подробный
  • Режим vi не отображается корректно на новом терминале
  • Как повторить в настоящее время введенный параметр в zsh?
  • Связывание вставки текста в zsh
  • Как заставить команды выделяться жирным шрифтом в zsh?
  • Как отредактировать командную строку в полноэкранном редакторе в ZSH?
  • Сделать zkbd игнорировать $ DISPLAY
  • Выберите пользовательский запрос zsh на основе того, какой эмулятор я использую
  • Почему эта команда ffmpeg работает в bash, а не zsh?
  • Interesting Posts

    Удаление прав пользователя для конкретной папки

    cURL / wget – SSLv3, рукопожатие TLS, CERT зависает

    Туннельный трафик через другую машину через ssh

    Как найти скорость процессора на Linux с дросселированием

    легкий сервер linux для малого бизнеса

    Описание необычного пути

    Что означает «//» взамен от `which`

    Попытка настроить среду SLED сервера / рабочей станции

    Какой инструмент может сказать мне дистрибутив Linux, который работает, когда uname является общим?

    Как получить обнаружение и исправление ошибок на одном жестком диске в Linux (с помощью btrfs или других методов)

    «Список аргументов слишком длинный» для цикла

    как напечатать только часть каждой строки, которая помечается определенным символом

    как сказать rsync сохранить метку времени в файлах, когда исходное дерево имеет смонтированную точку

    Файл Cat с заголовком?

    Как восстановить мой Linux?

    Linux и Unix - лучшая ОС в мире.