$1 ~ $9 命令行上的第一到第九个参数
$# 命令行上的参数个数
$* 命令行上的所有参数
$@ 分别用双引号引用命令行上的所有参数
$$ 当前进程的进程标识号(PID)
$? 上一条命令的退出状态
$! 最后一个后台进程的进程标识号
系统变量只能引用不能修改!
1、 除了方向键上,还可以用“!!”代表上一条输入的命令,用这个的好处在于可以将这两个字符放在命令行任何位置以便于构成新的命令。
例如:
$./some-shell-command
$cat !!
则后一条命令就相当于cat ./some-shell-command,这样做比先按方向键上回退一条命令,然后定位到开始,插入cat要快捷得多。
2、 除了!!,!$代表得是上一条命令中最后一个parameter,这是个更有用的变量,例如:
$ls /some-path-to-a-directory
$cat !$/some-file.txt
如果some-path-to-a-directory不幸为一个非常长的路径的时候,使用!$恰好就能省去输入这个超长路径的麻烦,这条命令实际 上就相当于cat
3、 !str代表以历史命令中最近一条以str开头的命令。
比如!ssh 就是最后一次执行ssh的命令
4、 !?str?代表历史命令中最近一条包含str的命令。
5、 !n和!-n,前者代表history命令显示出来前面的条目数为n的那条命令,后者代表当前命令条目数减去n的那条命令,例如!-3就代表3 条前的那个命令。
对比起来,1和2是相当实用的,剩下3条记得住就用,记不住也无妨了。
来源http://blog.sina.com.cn/s/blog_531bb76301013ulf.html