我想查bash命令的倒数100到200条怎么写history?

12 2026-03-20 22:41 2026-03-20 22:41

在 Bash 中,history 命令本身没有直接提供查看特定范围(如倒数100到200条)的内置选项,但可以通过组合命令来实现。

查看倒数 100 到 200 条历史命令

方法一:使用 tail + head(推荐)

bash
 
复制
history | tail -n 200 | head -n 100
 
解释:
  • history:列出所有历史记录(带行号)
  • tail -n 200:取最后 200 行
  • head -n 100:从这 200 行中取前 100 行
结果就是倒数第 100 到 200 条(共 100 条记录)。

方法二:使用 awksed(更精确)

bash
 
复制
# 使用 awk
history | awk '{lines[NR]=$0} END {for(i=NR-199;i<=NR-100;i++) if(i>0) print lines[i]}'

# 或者更简洁的 tac + sed
history | tac | sed -n '100,200p' | tac
 

方法三:直接操作历史文件(更快)

bash
 
复制
# 查看 ~/.bash_history 的最后 200 行中的前 100 行
tail -n 200 ~/.bash_history | head -n 100
 
⚠️ 注意:~/.bash_history 不包含当前会话的命令,只有写入磁盘的记录。

方法四:使用负数索引(Bash 4.2+)

bash
 
复制
# 显示最近 200 条,然后过滤
history -200 | head -n 100
 

对比总结

表格
 
 
 
 
命令 适用场景
history | tail -200 | head -100 最常用,简单直观
tail -200 ~/.bash_history | head -100 速度快,但不含当前会话
history -200 | head -100 Bash 4.2+,简洁

💡 小技巧:做成别名

bash
 
复制
# 添加到 ~/.bashrc
alias histrange='history | tail -n 200 | head -n 100'

# 或者更灵活的版本(带参数)
histbetween() { history | tail -n "$2" | head -n "$(($2-$1))"; }
# 使用:histbetween 100 200  → 显示倒数 100-200 条
 
需要我解释某个具体方法的原理,或者帮你做成更灵活的脚本吗?

全部评论

·