Как написать команду в историю в fish shell?

С помощью GNU sedэто можно сделать следующим образом:

   sed -Ee    's/,([0-9]),/,0\1,/'   input 
2
30.01.2021, 20:33
1 ответ

AFAICT, только встроенная функция readи средство чтения командной строки оболочки могут добавить запись в историю, но только когда stdin является tty-устройством, так что это нелегко написать в сценарии.

Но вы можете добавить запись вручную с помощью чего-то вроде:

function add_history_entry
  begin
    flock 1
    and echo -- '- cmd:' (
      string replace -- \n \\n (string join ' ' $argv) | string replace \\ \\\\
    )
    and date +'  when: %s'
  end >> $__fish_user_data_dir/fish_history
  and history merge
end

А затем:

add_history_entry 'cd /special/dir'

Это работает для меня с fish 3.1.2 здесь, но обратите внимание, что fishявляется чем-то вроде движущейся цели, поскольку API часто меняется несовместимым образом между одной версией и другой. Этот __fish_user_data_dirи формат файла истории не задокументированы, поэтому они могут исчезнуть/измениться в будущей версии. Вышеприведенное также предполагает, что для переменной $fish_historyне установлено ничего, кроме fish.

3
18.03.2021, 22:33

Теги

Похожие вопросы