С помощью GNU sed
это можно сделать следующим образом:
sed -Ee 's/,([0-9]),/,0\1,/' input
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
.