我想查bash命令的倒数100到200条怎么写history?
10 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 条记录)。
方法二:使用 awk 或 sed(更精确)
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 条
需要我解释某个具体方法的原理,或者帮你做成更灵活的脚本吗?
全部评论