<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[超实用shell技巧 —— !$，以及!:$+1(free !:1)和上个命令各个参数的表示方法，Esc + . 和!$一样一样的。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Sat, 24 Jun 2017 05:05:12 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	在shell中，!$是一个特殊的环境变量，它代表了上一个命令的最后一个参数。<br/>自己常常使用：Esc + . 和!$一样一样的。<br/>$! 刚好写法相反，则表示Shell最后运行的后台Process的PID，看下面的例子：<br/><br/>mkdir -p /tmp/a/b/c/d/e/f<br/># ls !$<br/>ls /tmp/a/b/c/d/e/f<br/># ls !$<br/>ls /tmp/a/b/c/d/e/f<br/>a.txt&nbsp;&nbsp;b.txt&nbsp;&nbsp;c.txt<br/># rm -Rf !$<br/>rm -Rf /tmp/a/b/c/d/e/f<br/># ls !$<br/>ls /tmp/a/b/c/d/e/f<br/>ls: 无法访问/tmp/a/b/c/d/e/f: 没有那个文件或目录<br/><br/><br/><br/>Shell参数变量之 !:0是命令行，!:1是参数1，!:2是参数2，如下所示:<br/><br/>[root@justwinit-php-mysql_bj_sjs_10_44_202_177 ~]# echo hello world<br/>hello world<br/>[root@justwinit-php-mysql_bj_sjs_10_44_202_177 ~]# echo !:3<br/>-bash: :3: bad word specifier<br/>[root@justwinit-php-mysql_bj_sjs_10_44_202_177 ~]# echo hello world<br/>hello world<br/>[root@justwinit-php-mysql_bj_sjs_10_44_202_177 ~]# echo !:2<br/>echo world<br/>world<br/>[root@justwinit-php-mysql_bj_sjs_10_44_202_177 ~]# echo !:1<br/>echo world<br/>world<br/><br/><br/><br/>例二：<br/># free -m<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shared&nbsp;&nbsp;buff/cache&nbsp;&nbsp; available<br/>Mem:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;991&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 856&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;29<br/>Swap:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1407&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1086<br/><br/># free !:1<br/>free -m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shared&nbsp;&nbsp;buff/cache&nbsp;&nbsp; available<br/>Mem:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;991&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 856&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;98&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;31<br/>Swap:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1407&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1086<br/><br/>===============================================<br/>$ echo hello world<br/>hello world<br/>$ echo !$<br/>echo worldworld<br/>$ echo &quot;hello world&quot;<br/>hello world<br/>$ echo !$<br/>echo &quot;hello world&quot;<br/>hello world<br/>这里为什么要用echo呢，请看下面，如果不用echo，!$输出的内容（world）会被shell当做一个命令来执行，所以就会报错<br/>$ echo hello world<br/>hello world<br/>$ !$<br/>world<br/>No command &#039;world&#039; found, did you mean:<br/>Command &#039;tworld&#039; from package &#039;tworld&#039; (universe)<br/>world: command not found<br/>应用场景示例<br/>1、建立多层目录并进入建立好的多层目录<br/>$ mkdir -p a/b/c/d/e<br/>$ cd a/b/c/d/e<br/>改成<br/>$ mkdir -p a/b/c/d/e<br/>$ cd !$<br/>上面mkdir -p命令用来一次性建立多层目录<br/>2、编写文件后检测文件格式或者编译文件<br/>$ vi a.php<br/>$ php -l !$<br/>或者<br/>$ vi main.c<br/>$ gcc !$<br/><br/>你可能不知道的超实用shell技巧 —— !$。<br/>中，我们知道了 在shell中，!$代表了上一个命令的最后一个参数。那如果要获取上个命令的其它参数该怎么操作呢？<br/>还是以echo hello world命令为例，下面就演示在该命令执行完成后，如何获取命令的各个参数甚至命令本身。<br/># echo helloworld<br/>hello world<br/># echo !:1<br/>echo hello<br/>hello<br/># echo helloworld<br/>hello world<br/># echo !:2<br/>echo world<br/>world<br/># echo hello world<br/>hello world<br/># echo !:3<br/>-bash: :3: bad word specifier<br/>在调用!:3的时候出错了，因为上一次的命令只有两个参数。<br/>下面你应该知道如何获取上次执行的是哪个命令了，那就是!:0，请看下面<br/># echo hello world<br/>hello world<br/># echo !:0<br/>echo echo<br/>echo<br/>其实呢，有更好的表示方法，看下面<br/># echo hello world<br/>hello world<br/># echo !#<br/>echo echo <br/>echo<br/>总结<br/>!# 上一个命令名<br/>!$ 上一个命令的最后一个参数<br/>!:n 上一个命令的第n个参数<br/>参考文章<br/>http://crazyof.me/blog/archives/171.html
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 超实用shell技巧 —— !$，以及!:$+1(free !:1)和上个命令各个参数的表示方法，Esc + . 和!$一样一样的。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>