一个脚本中的历史和 egrep
History and egrep in one script
我必须输入:
history | egrep ssh
每次我想搜索我最新的 ssh 连接时。
然后我有了一个想法,如何将它们放在一个脚本中。我称之为 histgrep.sh
#!/bin/bash
history | /bin/egrep ""
但是,每次我调用 histgrep.sh ssh
,它不会产生任何结果。
谁能帮我解决这个问题?或者您有其他解决方案吗?
转换回回答自动转换为评论的(琐碎的)答案:)
历史记录在非交互式 bash shell 中默认禁用,但可以重新启用,请参阅此问答:https://unix.stackexchange.com/questions/5684/history-command-inside-bash-script
是的,从脚本本身使用 !<num>
是行不通的,但是在 shell 调用脚本时(问题中明显的预期使用上下文)它工作得很好:
> cat histgrep.sh
#!/bin/bash
HISTFILE=~/.bash_history
set -o history
history | egrep ""
> ./histgrep.sh 'ls -la'
...
460 ls -la *
> !460
ls -la *
-rw-rw-r--. 1 userid at 24167 Nov 21 2012 cfu
-rwxrwxr-x 1 userid at 73 Jul 10 00:23 histgrep.sh
-rwxrwxr-x. 1 userid users 2025 Apr 2 2013 same_file.py
-rwxrwxr-x 1 userid at 385 Jun 25 13:01 tst.py
-rwxrwxr-x 1 userid at 310 Jul 9 23:58 tst.sh
简单的解决方案,使用 bash 别名。
在终端上输入:
alias histgrep="history | grep"
使用方法:
histgrep ssh
以上命令等于history | grep ssh
参考:
history
命令适用于您当前 shell 的上下文,因此从脚本调用它不会(简单地)起作用。 shell 函数确实可以访问当前 shell 的上下文,因此将类似这样的内容添加到您的 .bashrc
或类似内容中即可。
histgrep () { history | egrep "$@"; }
从技术上讲,别名也可以,但通常没有充分的理由更喜欢别名而不是函数。
我必须输入:
history | egrep ssh
每次我想搜索我最新的 ssh 连接时。
然后我有了一个想法,如何将它们放在一个脚本中。我称之为 histgrep.sh
#!/bin/bash
history | /bin/egrep ""
但是,每次我调用 histgrep.sh ssh
,它不会产生任何结果。
谁能帮我解决这个问题?或者您有其他解决方案吗?
转换回回答自动转换为评论的(琐碎的)答案:)
历史记录在非交互式 bash shell 中默认禁用,但可以重新启用,请参阅此问答:https://unix.stackexchange.com/questions/5684/history-command-inside-bash-script
是的,从脚本本身使用 !<num>
是行不通的,但是在 shell 调用脚本时(问题中明显的预期使用上下文)它工作得很好:
> cat histgrep.sh
#!/bin/bash
HISTFILE=~/.bash_history
set -o history
history | egrep ""
> ./histgrep.sh 'ls -la'
...
460 ls -la *
> !460
ls -la *
-rw-rw-r--. 1 userid at 24167 Nov 21 2012 cfu
-rwxrwxr-x 1 userid at 73 Jul 10 00:23 histgrep.sh
-rwxrwxr-x. 1 userid users 2025 Apr 2 2013 same_file.py
-rwxrwxr-x 1 userid at 385 Jun 25 13:01 tst.py
-rwxrwxr-x 1 userid at 310 Jul 9 23:58 tst.sh
简单的解决方案,使用 bash 别名。
在终端上输入:
alias histgrep="history | grep"
使用方法:
histgrep ssh
以上命令等于history | grep ssh
参考:
history
命令适用于您当前 shell 的上下文,因此从脚本调用它不会(简单地)起作用。 shell 函数确实可以访问当前 shell 的上下文,因此将类似这样的内容添加到您的 .bashrc
或类似内容中即可。
histgrep () { history | egrep "$@"; }
从技术上讲,别名也可以,但通常没有充分的理由更喜欢别名而不是函数。