Pull to refresh

Comments 21

Осталось чтобы выод сохранялся автоматически, и не приходилось помнить о том, что в начало каждой второй команды надо допихать вызов ah.
Я как раз сейчас с этим экспериментирую (preexec в zsh и его эмуляция в bash), и на самом деле это изначальная цель. Но пока не все так гладко, особенно с bash'ем. В основном, все работает, но когда что-то отваливается, приходится мучительно все отключать и чесать голову, как подебажить. Так что пока без этого.
Я только что тоже пытался сделать это через preexec в zsh но ни чего не вышло. Я тупо не понял как повлиять на саму команду, а не просто выполнить что-то рядом с ней.
Зато для zsh я смог получить в общем-то желаемый результат… Вот пример:
add-time() { [[ $BUFFER = time* ]] || BUFFER="time $BUFFER"; zle .$WIDGET "$@"; }
zle -N accept-line add-time
Примерно вот так можно в zsh:

function execute_with_ah {
    BUFFER="ah t -- $BUFFER"
    zle accept-line
}

zle -N execute_with_ah_widget execute_with_ah
bindkey '^J' execute_with_ah_widget
bindkey '^M' execute_with_ah_widget


Единственное, что останавливает: пока очень плохо работают приложения с ncurses. Ищу сейчас, каким образом можно их правильно запускать, но прогресса мало (в частности ah t -- htop лучше не делать).
Ну можно сделать локальный костыль в виде исключения их в функции execute_with_ah по маске…
UFO just landed and posted this here
UFO just landed and posted this here
Спасибо! Как и с другими хорошими идеями, я до вашего поста даже не задумывался о проблеме, а после удивляюсь, как же сам не додумался до такой штуки. :-)
А где на неё можно посмотреть, ибо гуглить «script» – занятие бесполезное.
Ещё есть script на стероидах. Он лучше. LiLaLo.
Ох, меня тоже давно мучала эта проблема (и её производные), но помимо хранения истории, мне хочется иметь к ней доступ с разных машин.
Я даже начал что-то делать именно с этой стороны.
flint не думал в сторону синхронизации?
Ох нет, и вот почему: дело в том, что все шелы работают с историей в предположении, что никто, кроме них в файл с историей лазить не будет, поэтому ah поступает несколько хитрее, чем просто привязывается к номеру (к номеру из HISTFILE привязываться, конечно, можно, но это работает только с несколькими довольно жесткими предположениями). Поэтому синхронизация истории в отрыве от синхронизации HISTFILE — занятие бессмысленное. С тем же успехом можно просто rsync'ать ~/.ah :)

В общем, я пока просто не представляю, как это должно выглядить и работать.
Прекрасно, спасибо.
Подскажите как у вас работает garbage collecting? Оно удаляет все или что-то определенное? Просто сборка муссора ассоциируется с чем-то, что работает само в фоне и удаляет мусор по каким-то критериям :)
Самым простым и предсказуемым образом, никакой магии :) Есть 3 флага для очистки. --all удаляет все-все, --keepLatest оставляет последние n выводов (хронологически), --olderThan удаляет все записи старше n дней.
Спасибо. Не нашел этого в документации на github-е.
Согласен, допишу немного позже. Она пока куцая, не спорю.
Круто, мысли людей сходятся, только кто-то думает и делает быстрее!
Sign up to leave a comment.

Articles