首先我的想法是这样的:
eval $( history | grep "cd" | grep -v "history"| tail -n 1 | awk '{ print $0 }' )
然后这样有一个问题:
这个样子是无法写到alias里面去的。
所以我就想写成bash文件(lcmd):
#!/bin/bash
#这个有什么用呢
#这个的作用找出最后掉用$1 的命令,并重新执行
[ $# -eq 0 ] && { echo "need one argument"; exit 0;}
echo "find:$1"
last_command="$( history | grep "$1" | grep -v "history"| tail -n 1 | awk '{ print $0 }' )"
echo "last_command:${last_command}"
echo $PWD
[ -z "$last_command" ] && { echo "last_command not found "; exit 0; }
/bin/bash -i -c "${last_command}"
echo $PWD
echo "over"
但是这样子还是有问题的:
last_command不管怎么弄都是为空
然后我去想了一个法子:
不是直接hisory:而是grep ~/.bash_history
但是这样还是有一个问题:/bin/bash -i -c "${last_command}"
执行没有结果……我是拿cd
命令测试的,
而且同时发现另外一个问题:grep ~/.bash_history
好像对我在terminal执行的命令没有感觉。
也就是说我在terminal
执行 echo "hello"
,然后lcmd "echo"
打印出来的last_command
不是echo "hello"
请问我现在 的问题该怎么解决啊
你这是何苦?直接用!不好吗?
root@docker:~# echo "hello"
hello
root@docker:~# cd /
root@docker:/# !echo
echo "hello"
hello
root@docker:/#