我执行以下操作以使历史记录更明智(即查看命令何时运行在故障排除时可能相当关键)
shopt -s histappend; # Append commands to the bash history (~/.bash_history) instead of overwriting it # https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" # -a append immediately, then -c clear history, then -r read history every time a prompt is shown instead of after closing the session.
export HISTTIMEFORMAT="%F %T " HISTCONTROL=ignorespace:ignoreboth:erasedups HISTSIZE=1000000 HISTFILESIZE=1000000000 # make history very big and show date-time
alias h='history'; # Note: 'h 7' will show last 7 lines
这很好,但如果需要,我希望能够获得原始历史输出。这适用于ho
(“历史原创”),但我不能再做“ho 7”
alias ho="history | awk '{\$2=\$3=\"\"; print \$0}'" # 'history original'
所以我尝试了以下方法,但失败并出现错误:
function ho() { history $1 | awk '{\$2=\$3=\"\"; print \$0}'; } # 'history original'
如何创建允许我执行的别名或函数,ho 7
而我只会看到最后 7 行?
通过“历史原始”,我假设您的意思是您想要没有时间戳的输出。如果是这样,只需设置
HISTTIMEFORMAT
为空history
:在别名中,
您快到了。您正在定义一个函数,但使用
alias
关键字。只需删除alias
,你应该没问题。接下来,您正在转义 awk 变量,但您没有双引号,因此转义被传递给awk
. 这就是你所追求的: