在zsh
shell 中,我可以向命令行历史记录中写入一些内容,如下所示:
#!/bin/zsh
cmd="cd /special/dir"
print -s $cmd" # save command in history for reuse
我怎样才能在fish
外壳中做到这一点?
答案1
AFAICT,只有read
内置和 shell 命令行阅读器可以将条目添加到历史记录中,但仅限于 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
。