!$和$_都可以返回上一个命令的最后一个参数(严格的说也不能说是参数,如果只有命令本身,那么返回的就是命令的名字),但是在存在管道命令和重定向命令的情况下存在差异
# echo hello world | awk '{print $1}' hello # echo !$ echo '{print $1}' {print $1} # echo hello world | awk '{print $1}' hello # echo $_
存在管道命令的情况下,!$输出的是管道命令中最后一个命令的最后一个参数,而$_则输出为空
# echo hello world > /tmp/hi.txt # echo $_ world # echo hello world > /tmp/hi.txt # echo !$ echo /tmp/hi.txt /tmp/hi.txt
存在重定向命令的情况下,!$输出的重定向命令后的最后一个参数,而$_则输出的是重定向之前的命令的最后一个参数。
其它不同
!$不会出现到命令历史记录中
转载请注明:知识蚂蚁 » shell中获取上个命令最后一个参数!$和$_的差异