每次我需要这个的时候,我都会花 10 分钟在 Google 上搜索。我不知道如何更好地表达这一点,但我需要检索某些行之间的 bash 历史记录,例如:
$ history --start 321 --end 456
#to retrieve history from 321 and to 456
答案1
你可以使用类似
history | grep -A 135 -w 321
它从第 321 行开始并显示接下来的 135 行,因此它将显示第 321 行到第 456 行。
答案2
答案3
我假设您指的是命令编号而不是行号。我会使用sed
来获取文件中两个命令编号之间的行。
$ history | sed -n '/^ 321 /,/^ 456 /p'
^
字符匹配行首。数字后还有一个空格,以确保^ 321
不匹配等于32155 ls
答案4
最优雅的方法是使用 sed 的 print (p) 命令和地址范围
history | sed -n '321,456p'
来自 sed(1p) 手册页:
-n 标志禁止默认输出(其中每一行在经过编辑检查后,都写入标准输出)。仅会写入明确选择用于输出的行。