如何在fish shell中向历史记录写入命令?

如何在fish shell中向历史记录写入命令?

zshshell 中,我可以向命令行历史记录中写入一些内容,如下所示:

#!/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

相关内容