<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>卑微的无聊</title>
	<atom:link href="http://infong.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://infong.net</link>
	<description>时而疯狂，时而失语。</description>
	<lastBuildDate>Sun, 15 Apr 2012 13:40:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>一个无聊的Shell</title>
		<link>http://infong.net/2012/04/15/shell-mi/</link>
		<comments>http://infong.net/2012/04/15/shell-mi/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 13:38:03 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[默认分类]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://infong.info/?p=786</guid>
		<description><![CDATA[总的来说就是一个滚动的米字。 #!/bin/bash SEQ="─ \ &#124; / " while [ "1" = "1" ] ; do for chr in $SEQ ; do echo -n -e "\r [ $chr ]" sleep 0.1 done done]]></description>
			<content:encoded><![CDATA[<p>总的来说就是一个滚动的米字。</p>
<pre name="code">
#!/bin/bash

SEQ="─ \ | / "
while [ "1" = "1" ] ; do
  for chr in $SEQ ; do
    echo -n -e "\r [ $chr ]"
    sleep 0.1
  done
done
</pre>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2012/04/15/shell-mi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安全删除 mysql-bin 二进制日志</title>
		<link>http://infong.net/2012/04/02/del-mysql-bin-logs/</link>
		<comments>http://infong.net/2012/04/02/del-mysql-bin-logs/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 11:01:41 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[锅碗瓢，盆！]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://infong.info/?p=780</guid>
		<description><![CDATA[今天网站突然连不上数据库，上了服务器后发现是 mysql 的二进制日志又把硬盘占满了。 像以前都是直接停 mysql 服务，然后删掉 mysql-bin 的日志。后来有同事说可以用 sql 命令来删除这些日志的。 1、显示日志文件： mysql&#62; show binary logs; 2、删除bin-log(删除mysql-bin.000020之前的所有二进制日志文件)。 mysql&#62; purge binary logs to 'mysql-bin.000049';]]></description>
			<content:encoded><![CDATA[<p>今天网站突然连不上数据库，上了服务器后发现是 mysql 的二进制日志又把硬盘占满了。</p>
<p>像以前都是直接停 mysql 服务，然后删掉 mysql-bin 的日志。后来有同事说可以用 sql 命令来删除这些日志的。</p>
<p>1、显示日志文件：</p>
<pre name="code" class="sql">mysql&gt; show binary logs;</pre>
<p>2、删除bin-log(删除mysql-bin.000020之前的所有二进制日志文件)。</p>
<pre name="code" class="sql">mysql&gt; purge binary logs to 'mysql-bin.000049';</pre>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2012/04/02/del-mysql-bin-logs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用rsync+ssh进行备份</title>
		<link>http://infong.net/2012/02/02/backup-with-rsync-and-ssh/</link>
		<comments>http://infong.net/2012/02/02/backup-with-rsync-and-ssh/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 02:34:55 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[锅碗瓢，盆！]]></category>
		<category><![CDATA[Linux命令介绍]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[备份]]></category>

		<guid isPermaLink="false">http://infong.info/?p=767</guid>
		<description><![CDATA[利用 rsync + ssh 可以很快速地对网站进行异地备份。步骤也很简单： 1、先用ssh-keygen生成一对keygen，可以免密码进行访问，可选。 2、确认本机与过程机都有安装 rsync，因为 ssh session 会自己执行 rsync &#8211;server 以便两端算签章。 3、使用如下命令进行备份 指令1 &#8211; 远端 备份回 本端: rsync -avl --delete -e ssh server_hostname:/var/lib/mysql/ /backup/ 指令2 &#8211; 本端 传送到 远端: rsync -avl --delete -e ssh /var/lib/mysql server_hostname:/backup/ 参数说明： &#8230;<p class="read-more"><a href="http://infong.net/2012/02/02/backup-with-rsync-and-ssh/">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>利用 rsync + ssh 可以很快速地对网站进行异地备份。步骤也很简单：</p>
<p>1、先用ssh-keygen生成一对keygen，可以免密码进行访问，可选。</p>
<p>2、确认本机与过程机都有安装 rsync，因为 ssh session 会自己执行 rsync &#8211;server 以便两端算签章。</p>
<p>3、使用如下命令进行备份</p>
<p>指令1 &#8211; 远端 备份回 本端:</p>
<pre name="code" class="php">rsync -avl --delete -e ssh server_hostname:/var/lib/mysql/ /backup/</pre>
<p>指令2 &#8211; 本端 传送到 远端:</p>
<pre name="code" class="php">rsync -avl --delete -e ssh /var/lib/mysql server_hostname:/backup/</pre>
<p><span id="more-767"></span></p>
<pre>参数说明：
-v, --verbose 详细模式输出

-q, --quiet 精简输出模式

-c, --checksum 打开校验开关，强制对文件传输进行校验

-a, --archive 归档模式，表示以递归方式传输文件，并保持所有文件属性，等于-rlptgoD

-r, --recursive 对子目录以递归模式处理

-R, --relative 使用相对路径信息

-b, --backup 创建备份，也就是对于目的已经存在有同样的文件名时，将老的文件重新命名为
~filename。可以使用--suffix选项来指定不同的备份文件前缀。

--backup-dir 将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀

-u, --update 仅仅进行更新，也就是跳过所有已经存在于DST，并且文件时间晚于要备份的文件。
(不覆盖更新的文件)

-l, --links 保留软链结

-L, --copy-links 想对待常规文件一样处理软链结

--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结

--safe-links 忽略指向SRC路径目录树以外的链结

-H, --hard-links 保留硬链结

-p, --perms 保持文件权限

-o, --owner 保持文件属主信息

-g, --group 保持文件属组信息

-D, --devices 保持设备文件信息

-t, --times 保持文件时间信息

-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间

-n, --dry-run现实哪些文件将被传输

-W, --whole-file 拷贝文件，不进行增量检测

-x, --one-file-system 不要跨越文件系统边界

-B, --block-size=SIZE 检验算法使用的块尺寸，默认是700字节

-e, --rsh=COMMAND 指定替代rsh的shell程序

--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件，用来排除那些不希望传输的文件

--existing 仅仅更新那些已经存在于DST的文件，而不备份那些新创建的文件

--delete 删除那些DST中SRC没有的文件

--delete-excluded 同样删除接收端那些被该选项指定排除的文件

--delete-after 传输结束以后再删除

--ignore-errors 及时出现IO错误也进行删除

--max-delete=NUM 最多删除NUM个文件

--partial 保留那些因故没有完全传输的文件，以是加快随后的再次传输

--force 强制删除目录，即使不为空

--numeric-ids 不将数字的用户和组ID匹配为用户名和组名

--timeout=TIME IP超时时间，单位为秒

-I, --ignore-times 不跳过那些有同样的时间和长度的文件

--size-only 当决定是否要备份文件时，仅仅察看文件大小而不考虑文件时间

--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口，默认为0

-T --temp-dir=DIR 在DIR中创建临时文件

--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份

-P 等同于 --partial --progress 显示备份过程

-z, --compress 对备份的文件在传输时进行压缩处理

--exclude=PATTERN 指定排除不需要传输的文件模式

--include=PATTERN 指定不排除而需要传输的文件模式

--exclude-from=FILE 排除FILE中指定模式的文件

--include-from=FILE 不排除FILE指定模式匹配的文件

--version 打印版本信息

--address 绑定到特定的地址

--config=FILE 指定其他的配置文件，不使用默认的rsyncd.conf文件

--port=PORT 指定其他的rsync服务端口

--blocking-io 对远程shell使用阻塞IO

-stats 给出某些文件的传输状态

--progress 在传输时现实传输过程

--log-format=FORMAT 指定日志文件格式

--password-file=FILE 从FILE中得到密码

--bwlimit=KBPS 限制I/O带宽，KBytes per second

-h, --help 显示帮助信息</pre>
<p>参考:</p>
<ul>
<li><a title="Rsync + SSH -- 讓 Server 自動異地備援也加密" href="http://www.adj.idv.tw/server/linux_rsync.php" target="_blank">Rsync + SSH &#8212; 讓 Server 自動異地備援也加密</a></li>
<li><a title="rsync-OSSACC(rsync參數詳盡解說)" href="http://www.ossacc.org/Docs/Rsync" target="_blank">rsync-OSSACC(rsync參數詳盡解說)</a></li>
<li><a title="用rsync做備份" href="http://phorum.study-area.org/viewtopic.php?t=15553&amp;highlight=rsync" target="_blank">用rsync做備份</a></li>
<li><a title="使用 rsync 全自動網路備份法" href="http://linux.tnc.edu.tw/techdoc/rsync.htm" target="_blank">使用 rsync (全自動網路備份法)</a></li>
<li><a title="rsync 異地備援 心得筆記" href="http://freesf.tnc.edu.tw/modules/newbb/viewtopic.php?topic_id=533&amp;forum=15" target="_blank">rsync 異地備援 心得筆記</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2012/02/02/backup-with-rsync-and-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>淘宝 Web 服务器 Tengine 正式开源</title>
		<link>http://infong.net/2011/12/03/taobao-webserver-tengine/</link>
		<comments>http://infong.net/2011/12/03/taobao-webserver-tengine/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 15:23:53 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[白芝麻，发！]]></category>

		<guid isPermaLink="false">http://infong.info/?p=763</guid>
		<description><![CDATA[真是个令人振奋的消息。 Tengine是由淘宝核心系统部基于Nginx开发的Web服务器，它在Nginx的基础上，针对大访问量网站的需求，添加了很多功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网，淘宝商城等得到了很好的验证。它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台。Tengine现已开源。 &#8212;以下摘自其官方网站&#8212; 官方网站：http://tengine.taobao.org/ Tengine基于最新的Nginx稳定版（Nginx-1.0.10），在它的基础上开发了一些功能和做了一些bug修复，比如： 组合多个CSS、JavaScript文件的访问请求变成一个请求； 支持管道和syslog形式的日志和抽样； 自动根据CPU数目设置亲缘性； 监控系统的负载和资源占用从而对系统进行保护； 显示对运维人员更友好的出错信息，便于定位出错机器； 更强大的访问速度限制模块； backtrace模块，程序崩溃的时候可以显示出错的调用栈； 根据文件类型设置过期时间； &#8230; 基本上，Tengine可以被看作一个更好的Nginx，或者是Nginx的超集。]]></description>
			<content:encoded><![CDATA[<p>真是个令人振奋的消息。</p>
<p>Tengine是由淘宝核心系统部基于Nginx开发的Web服务器，它在Nginx的基础上，针对大访问量网站的需求，添加了很多功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网，淘宝商城等得到了很好的验证。它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台。Tengine现已开源。</p>
<p>&#8212;以下摘自其官方网站&#8212;</p>
<p>官方网站：<a title="Tengine" href="http://tengine.taobao.org/" rel="nofollow">http://tengine.taobao.org/</a></p>
<p>Tengine基于最新的Nginx稳定版（Nginx-1.0.10），在它的基础上开发了一些功能和做了一些bug修复，比如：</p>
<ul>
<li>组合多个CSS、JavaScript文件的访问请求变成一个请求；</li>
<li>支持管道和syslog形式的日志和抽样；</li>
<li>自动根据CPU数目设置亲缘性；</li>
<li>监控系统的负载和资源占用从而对系统进行保护；</li>
<li>显示对运维人员更友好的出错信息，便于定位出错机器；</li>
<li>更强大的访问速度限制模块；</li>
<li>backtrace模块，程序崩溃的时候可以显示出错的调用栈；</li>
<li>根据文件类型设置过期时间；</li>
<li>&#8230;</li>
</ul>
<p>基本上，Tengine可以被看作一个更好的Nginx，或者是Nginx的超集。</p>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/12/03/taobao-webserver-tengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>编译 Gentoo 及 LFS</title>
		<link>http://infong.net/2011/12/03/building-gentoo-and-lfs/</link>
		<comments>http://infong.net/2011/12/03/building-gentoo-and-lfs/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 06:29:30 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[锅碗瓢，盆！]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[LFS]]></category>
		<category><![CDATA[linux配置]]></category>
		<category><![CDATA[内核]]></category>

		<guid isPermaLink="false">http://infong.info/?p=761</guid>
		<description><![CDATA[上个周未突然来兴致说要编译一下 LFS 或者 Gentoo，所以看了一遍 Gentoo 及 LFS 的编译过程，就开始上手了。之前在大学的时候就尝试编译过 LFS——当时一些朋友说编译 LFS 是一个可以让人忘记上课，忘记睡觉，忘记吃饭的事——编译了30几个小时也没能成功，所以很挫败。 因为 Gentoo 的编译过程简单许多，就先拿它下手。照着文档，差不多就编译了一个内核，一个 Grub，过程并不复杂，也顺利，内核编译了两遍，第一次没有把 SCSI 编译进去，造成启动的时候认不出我的 SATA 硬盘，编译了第二遍终于可以了，很兴奋——原来编译 Gentoo 也是这么简单的事，然后又用 emerge 安装了 VIM 等一些常用软件，基本系统也终于可以用了。 然后又开始编译 LFS，照着文档，也顺利地编译好了环境与基本系统，最后到内核的时候也犯了很多错误，开始的时候是直接拿了 Arch 的Config编译的，把很多东西都编译成模块了，又没有做 initfs，系统没能启动。又开始找作 initfs 的方法，都失败了。又把驱动啥的都编译到内核里去，还是启动不了，不知为何。今天索性用 arch 的内核来启动 LFS，系统是启动了，可一些初始化的工作没有完成，最后发现是 inittab 里的启动级别没设置好，最后系统终于能正常启动了，撒花～ 继续折腾系统去，有时间写写编译过程与注意事项～]]></description>
			<content:encoded><![CDATA[<p>上个周未突然来兴致说要编译一下 LFS 或者 Gentoo，所以看了一遍 Gentoo 及 LFS 的编译过程，就开始上手了。之前在大学的时候就尝试编译过 LFS——当时一些朋友说编译 LFS 是一个可以让人忘记上课，忘记睡觉，忘记吃饭的事——编译了30几个小时也没能成功，所以很挫败。</p>
<p>因为 Gentoo 的编译过程简单许多，就先拿它下手。照着文档，差不多就编译了一个内核，一个 Grub，过程并不复杂，也顺利，内核编译了两遍，第一次没有把 SCSI 编译进去，造成启动的时候认不出我的 SATA 硬盘，编译了第二遍终于可以了，很兴奋——原来编译 Gentoo 也是这么简单的事，然后又用 emerge 安装了 VIM 等一些常用软件，基本系统也终于可以用了。</p>
<p>然后又开始编译 LFS，照着文档，也顺利地编译好了环境与基本系统，最后到内核的时候也犯了很多错误，开始的时候是直接拿了 Arch 的Config编译的，把很多东西都编译成模块了，又没有做 initfs，系统没能启动。又开始找作 initfs 的方法，都失败了。又把驱动啥的都编译到内核里去，还是启动不了，不知为何。今天索性用 arch 的内核来启动 LFS，系统是启动了，可一些初始化的工作没有完成，最后发现是 inittab 里的启动级别没设置好，最后系统终于能正常启动了，撒花～</p>
<p>继续折腾系统去，有时间写写编译过程与注意事项～</p>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/12/03/building-gentoo-and-lfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在 Windows 下使用 SSHFS</title>
		<link>http://infong.net/2011/11/05/sshfs-on-windows/</link>
		<comments>http://infong.net/2011/11/05/sshfs-on-windows/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 13:47:19 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[锅碗瓢，盆！]]></category>
		<category><![CDATA[sshfs]]></category>

		<guid isPermaLink="false">http://infong.info/?p=728</guid>
		<description><![CDATA[在 Windows 下要与 Unix-like 的系统文件共享，目前也就有以下几种方法：Samba、FTP、NFS、WinSCP、SSHFS。 Samba 很不错，很多书籍/教程都会介绍这个，但他只能在同个网段使用； FTP 文件传输协议，很方便，但设计上是文件传输，而不是文件共享； NFS 在 Unix-like 的系统上用的很多，但在 Windows 下比较好的免费程序几乎没有； WinScp 其实就是 sftp，类似于 FTP； SSHFS 通过 SSH 将远程主机的目录挂载到本地，很是方便，之前也有 介绍 过SSHFS。 所以我还是比较喜欢 SSHFS，恰好也在网上找到了在 Windows 下使用的 SSHFS： 下载地址：http://dokan-dev.net/en/download/，目前最新版本为 dokan-sshfs-0.6.0。 安装过程 1、下载并安装Dokan库文件：http://dokan-dev.net/wp-content/uploads/DokanInstall_0.6.0.exe 2、下载并解压DokanSSHFS：http://dokan-dev.net/wp-content/uploads/dokan-sshfs-0.6.0.zip 使用dokan-sshfs 启动DokanSSHFS： 填写好相关信息后，点击 connect，即可完成 SSHFS &#8230;<p class="read-more"><a href="http://infong.net/2011/11/05/sshfs-on-windows/">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>在 Windows 下要与 Unix-like 的系统文件共享，目前也就有以下几种方法：Samba、FTP、NFS、WinSCP、SSHFS。<br />
Samba 很不错，很多书籍/教程都会介绍这个，但他只能在同个网段使用；<br />
FTP 文件传输协议，很方便，但设计上是文件传输，而不是文件共享；<br />
NFS 在 Unix-like 的系统上用的很多，但在 Windows 下比较好的免费程序几乎没有；<br />
WinScp 其实就是 sftp，类似于 FTP；<br />
SSHFS 通过 SSH 将远程主机的目录挂载到本地，很是方便，之前也有 <a href="http://infong.info/?p=702" title="sshfs的配置" target="_blank">介绍</a> 过SSHFS。<br />
所以我还是比较喜欢 SSHFS，恰好也在网上找到了在 Windows 下使用的 SSHFS：<br />
下载地址：<a href="http://dokan-dev.net/en/download/" target="_blank">http://dokan-dev.net/en/download/</a>，目前最新版本为 dokan-sshfs-0.6.0。</p>
<h3>安装过程</h3>
<p>1、下载并安装Dokan库文件：http://dokan-dev.net/wp-content/uploads/DokanInstall_0.6.0.exe<br />
2、下载并解压DokanSSHFS：http://dokan-dev.net/wp-content/uploads/dokan-sshfs-0.6.0.zip<br />
<span id="more-728"></span></p>
<h3>使用dokan-sshfs</h3>
<p>启动DokanSSHFS：<br />
<a href="http://infong.info/2011/11/05/sshfs-on-windows/sshfs1/" rel="attachment wp-att-729"><img src="http://infong.info/wp-content/uploads/2011/11/sshfs1.jpg" alt="启动SSHFS" title="启动SSHFS" width="385" height="373" class="size-full wp-image-729" /></a><br />
填写好相关信息后，点击 connect，即可完成 SSHFS 的挂载，然后在“我的电脑”中看到一个名为 DOKAN 的“分区”：<br />
<a href="http://infong.info/2011/11/05/sshfs-on-windows/sshfs3/" rel="attachment wp-att-730"><img src="http://infong.info/wp-content/uploads/2011/11/sshfs3.jpg" alt="" title="sshfs3" width="256" height="60" class="size-full wp-image-730" /></a><br />
点进入后就是行程主机的目录了。</p>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/11/05/sshfs-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell 快捷键(二)</title>
		<link>http://infong.net/2011/10/31/shell-hot-key-2/</link>
		<comments>http://infong.net/2011/10/31/shell-hot-key-2/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 14:28:36 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[锅碗瓢，盆！]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Linux命令介绍]]></category>
		<category><![CDATA[linux配置]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[快捷键]]></category>

		<guid isPermaLink="false">http://infong.info/?p=725</guid>
		<description><![CDATA[在 Shell 快捷键 中，对 Linux Shell 下 Emacs 分割的快捷键组合进行 了整理和总结，为了方便对比记忆，这里重新根据功能进行归类。 光标移动 命令 说明 Alt + b 后移一个单词 Alt + f 前移一个单词 Ctrl + b 后移一个字符 Ctrl + f 前移一个字符 Ctrl + a 把光标移到行首 Ctrl + e 把光标移到行尾 ctrl + ← &#8230;<p class="read-more"><a href="http://infong.net/2011/10/31/shell-hot-key-2/">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>在 <a href="/?p=719">Shell 快捷键</a> 中，对 Linux Shell 下 Emacs 分割的快捷键组合进行<br />
了整理和总结，为了方便对比记忆，这里重新根据功能进行归类。</p>
<h4>光标移动</h4>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alt + b</td>
<td>后移一个单词</td>
</tr>
<tr>
<td>Alt + f</td>
<td>前移一个单词</td>
</tr>
<tr>
<td>Ctrl + b</td>
<td>后移一个字符</td>
</tr>
<tr>
<td>Ctrl + f</td>
<td>前移一个字符</td>
</tr>
<tr>
<td>Ctrl + a</td>
<td>把光标移到行首</td>
</tr>
<tr>
<td>Ctrl + e</td>
<td>把光标移到行尾</td>
</tr>
<tr>
<td>ctrl + ←</td>
<td>光标移动到前一个单词开头</td>
</tr>
<tr>
<td>ctrl + →</td>
<td>光标移动到后一个单词结尾</td>
</tr>
<tr>
<td>Ctrl + x Ctrl + x</td>
<td>在 EOL 和当前位置移动光标</td>
</tr>
</tbody>
</table>
<h4>输入编辑</h4>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl + h</td>
<td>删除前一字符</td>
</tr>
<tr>
<td>Ctrl + d</td>
<td>删除当前字符</td>
</tr>
<tr>
<td>Ctrl + k</td>
<td>删除当前字符到行末</td>
</tr>
<tr>
<td>Ctrl + u</td>
<td>删除行首到当前字符</td>
</tr>
<tr>
<td>Ctrl + w</td>
<td>删除单词到当前字符</td>
</tr>
<tr>
<td>Alt + d</td>
<td>从当前位置向后删除单词</td>
</tr>
<tr>
<td>Alt + ←</td>
<td>从当前位置向前删除单词</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
</tr>
<tr>
<td>Esc + t</td>
<td>互换相邻两个单词</td>
</tr>
<tr>
<td>Alt + t</td>
<td>互换相邻两个单词</td>
</tr>
<tr>
<td>Ctrl + t</td>
<td>互换相邻两个字符</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
</tr>
<tr>
<td>ctrl + ?</td>
<td>撤消前一次输入</td>
</tr>
<tr>
<td>Alt  + r</td>
<td>撤消前一次动作</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
</tr>
<tr>
<td>Alt + l</td>
<td>小写当前单词</td>
</tr>
<tr>
<td>Alt + u</td>
<td>大写当前单词</td>
</tr>
<tr>
<td>Alt + c</td>
<td>首字母大写当前单词</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
</tr>
<tr>
<td>^oldstr^newstr</td>
<td>替换前一次命令中字符串</td>
</tr>
</tbody>
</table>
<h4>终端管理</h4>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl + s</td>
<td>锁住终端</td>
</tr>
<tr>
<td>Ctrl + q</td>
<td>解锁终端</td>
</tr>
<tr>
<td>Ctrl + l</td>
<td>清除终端</td>
</tr>
<tr>
<td>Ctrl + d</td>
<td>退出终端</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8211;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</td>
</tr>
<tr>
<td>Ctrl + c</td>
<td>中止命令</td>
</tr>
<tr>
<td>Ctrl + z</td>
<td>挂起命令</td>
</tr>
<tr>
<td>ctrl + o</td>
<td>重复执行命令</td>
</tr>
</tbody>
</table>
<h4>命令历史</h4>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl + r</td>
<td>向后查询历史，增量地</td>
</tr>
<tr>
<td>Ctrl + s</td>
<td>向前查询历史，增量地</td>
</tr>
<tr>
<td>Alt + p</td>
<td>向后查询历史，非增量地</td>
</tr>
<tr>
<td>Alt + n</td>
<td>向前查询历史，非增量地</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + p / ↑</td>
<td>显示上一条命令</td>
</tr>
<tr>
<td>Ctrl + n / ↓</td>
<td>显示下一条命令</td>
</tr>
<tr>
<td>Alt + &lt;</td>
<td>移动到历史的首行</td>
</tr>
<tr>
<td>Alt + ></td>
<td>移动到历史的末行</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Alt + .</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>Alt + _</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>Esc + .</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>Esc + _</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + y</td>
<td>粘贴刚才所删除的字符</td>
</tr>
<tr>
<td>Ctrl + Alt + y</td>
<td>插入上条命令的第一个参数</td>
</tr>
</tbody>
</table>
<h4>自动完成</h4>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alt + /</td>
<td>尝试自动完成文件名</td>
</tr>
<tr>
<td>Alt + ?</td>
<td>显示当前自动完成列表</td>
</tr>
<tr>
<td>Alt + *</td>
<td>插入所有可能自动完成</td>
</tr>
</tbody>
</table>
<h4>其他</h4>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl + i</td>
<td>同 Tab</td>
</tr>
<tr>
<td>Ctrl + j</td>
<td>同 Enter</td>
</tr>
<tr>
<td>Ctrl + v CHAR</td>
<td>输入特殊字符</td>
</tr>
<tr>
<td>Ctrl + x @</td>
<td>显示所有的可用的主机名自动完成</td>
</tr>
<tr>
<td>Ctrl + x Ctrl + e</td>
<td>使用 vim 写入 script 一次执行</td>
</tr>
<tr>
<td>2T</td>
<td>命令行补全</td>
</tr>
<tr>
<td>(string)2T</td>
<td>命令行补全</td>
</tr>
<tr>
<td>$2T</td>
<td>列出系统变量</td>
</tr>
<tr>
<td>=2T</td>
<td>列出当前目录</td>
</tr>
<tr>
<td>/2T</td>
<td>显示整个目录结构，包括隐藏文件</td>
</tr>
<tr>
<td>./2T</td>
<td>只显示子目录，包括隐藏目录</td>
</tr>
<tr>
<td>*2T</td>
<td>只显示子目录，不包括隐藏目录</td>
</tr>
<tr>
<td>@2T</td>
<td>“/etc/hosts” 文件的条目</td>
</tr>
<tr>
<td>~2T</td>
<td>“/etc/passwd” 文件中系统所有的当前用户</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/10/31/shell-hot-key-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell 快捷键</title>
		<link>http://infong.net/2011/10/22/shell_hot_key/</link>
		<comments>http://infong.net/2011/10/22/shell_hot_key/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 06:48:44 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[锅碗瓢，盆！]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Linux命令介绍]]></category>
		<category><![CDATA[linux配置]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[快捷键]]></category>

		<guid isPermaLink="false">http://infong.info/?p=719</guid>
		<description><![CDATA[在使用 Shell 进行 Linux 操作时，经常需要编辑大段的代码，如果仅仅使用键盘的 Delete 和 Backspace 键，那是一件非常折磨人的事情。我们以 Linux 默认的 Bash Shell 为例，他可以设定为多种 Mode，使其操作习惯类似于一些熟悉的编辑器，比如 emacs 或 vi。 列出所有 Mode set -o 使用 vi 操作习惯來操作 Bash Shell set -o vi 使用 emacs 的操作习惯来操作 Bash Shell，默认即为此 Mode set -o emacs 下面总结以下 &#8230;<p class="read-more"><a href="http://infong.net/2011/10/22/shell_hot_key/">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>在使用 Shell 进行 Linux 操作时，经常需要编辑大段的代码，如果仅仅使用键盘的<br />
 Delete 和 Backspace 键，那是一件非常折磨人的事情。我们以 Linux 默认的 Bash<br />
 Shell 为例，他可以设定为多种 Mode，使其操作习惯类似于一些熟悉的编辑器，比如<br />
 emacs 或 vi。</p>
<ul>
<li>
<p>列出所有 Mode</p>
<p><bash>set -o </bash></p>
</li>
<li>
<p>使用 vi 操作习惯來操作 Bash Shell</p>
<p><bash>set -o vi</bash></p>
</li>
<li>
<p>使用 emacs 的操作习惯来操作 Bash Shell，默认即为此 Mode</p>
<p><bash>set -o emacs</bash></p>
</li>
</ul>
<p>下面总结以下 Bash Shell 采用默认 emacs Mode 时可用的一些快捷键，能够极大提高<br />
Shell 的操作效率。</p>
<p><span id="more-719"></span></p>
<h3>一、CTRL 键绑定</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl + s</td>
<td>锁住终端</td>
</tr>
<tr>
<td>Ctrl + q</td>
<td>解锁终端</td>
</tr>
<tr>
<td>Ctrl + l</td>
<td>清除终端</td>
</tr>
<tr>
<td>Ctrl + d</td>
<td>退出终端</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + c</td>
<td>中止命令</td>
</tr>
<tr>
<td>Ctrl + z</td>
<td>挂起命令</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + r</td>
<td>查找历史</td>
</tr>
<tr>
<td>Ctrl + p</td>
<td>显示上一条命令</td>
</tr>
<tr>
<td>Ctrl + n</td>
<td>显示下一条命令</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + b</td>
<td>后移一个字符</td>
</tr>
<tr>
<td>Ctrl + f</td>
<td>前移一个字符</td>
</tr>
<tr>
<td>Ctrl + a</td>
<td>把光标移到行首</td>
</tr>
<tr>
<td>Ctrl + e</td>
<td>把光标移到行尾</td>
</tr>
<tr>
<td>ctrl + ←</td>
<td>光标移动到前一个单词开头</td>
</tr>
<tr>
<td>ctrl + →</td>
<td>光标移动到后一个单词结尾</td>
</tr>
<tr>
<td>Ctrl + x Ctrl + x</td>
<td>在 EOL 和当前位置移动光标</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + h</td>
<td>删除前一字符</td>
</tr>
<tr>
<td>Ctrl + d</td>
<td>删除当前字符</td>
</tr>
<tr>
<td>Ctrl + w</td>
<td>删除单词到当前字符</td>
</tr>
<tr>
<td>Ctrl + k</td>
<td>删除当前字符到行末</td>
</tr>
<tr>
<td>Ctrl + u</td>
<td>删除行首到当前字符</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Ctrl + i</td>
<td>同 Tab</td>
</tr>
<tr>
<td>Ctrl + j</td>
<td>同 Enter</td>
</tr>
<tr>
<td>Ctrl + v CHAR</td>
<td>输入特殊字符</td>
</tr>
<tr>
<td>Ctrl + t</td>
<td>互换相邻两个字符</td>
</tr>
<tr>
<td>Ctrl + y</td>
<td>粘贴最后删除字符</td>
</tr>
<tr>
<td>Ctrl + x @</td>
<td>显示所有的可用的主机名自动完成</td>
</tr>
<tr>
<td>Ctrl + x Ctrl + e</td>
<td>使用 vim 写入 script 一次执行</td>
</tr>
</tbody>
</table>
<h3>二、ALT 键绑定</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alt + b</td>
<td>后移一个单词</td>
</tr>
<tr>
<td>Alt + f</td>
<td>前移一个单词</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8211;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Alt + l</td>
<td>小写当前单词</td>
</tr>
<tr>
<td>Alt + u</td>
<td>大写当前单词</td>
</tr>
<tr>
<td>Alt + c</td>
<td>首字母大写当前单词</td>
</tr>
<tr>
<td>Alt + t</td>
<td>互换相邻的两个单词</td>
</tr>
<tr>
<td>Alt + d</td>
<td>从当前位置删除单词</td>
</tr>
<tr>
<td>Alt + ←</td>
<td>从当前位置向后删除</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8211;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Alt + r</td>
<td>重新调用命令</td>
</tr>
<tr>
<td>Alt + &lt;</td>
<td>移动到历史的首行</td>
</tr>
<tr>
<td>Alt + ></td>
<td>移动到历史的末行</td>
</tr>
<tr>
<td>Alt + n</td>
<td>非增量地向前查询历史</td>
</tr>
<tr>
<td>Alt + p</td>
<td>非增量地向后查询历史</td>
</tr>
<tr>
<td>&#8212;&#8212;&#8212;&#8211;</td>
<td>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
<tr>
<td>Alt + .</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>Alt + /</td>
<td>尝试自动完成文件名</td>
</tr>
<tr>
<td>Alt + ?</td>
<td>显示当前自动完成列表</td>
</tr>
<tr>
<td>Alt + *</td>
<td>插入所有可能自动完成</td>
</tr>
</tbody>
</table>
<h3>三、TAB 键的使用</h3>
<p>这里 2T 表示按 TAB 键两次</p>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>2T</td>
<td>命令行补全</td>
</tr>
<tr>
<td>(string)2T</td>
<td>命令行补全</td>
</tr>
<tr>
<td>$2T</td>
<td>列出系统变量</td>
</tr>
<tr>
<td>=2T</td>
<td>列出当前目录</td>
</tr>
<tr>
<td>/2T</td>
<td>显示整个目录结构，包括隐藏文件</td>
</tr>
<tr>
<td>./2T</td>
<td>只显示子目录，包括隐藏目录</td>
</tr>
<tr>
<td>*2T</td>
<td>只显示子目录，不包括隐藏目录</td>
</tr>
<tr>
<td>@2T</td>
<td>“/etc/hosts” 文件的条目</td>
</tr>
<tr>
<td>~2T</td>
<td>“/etc/passwd” 文件中系统所有的当前用户</td>
</tr>
</tbody>
</table>
<h3>四、其他组合</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Esc + .</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>Esc + _</td>
<td>插入最后一个参数</td>
</tr>
<tr>
<td>Esc + T</td>
<td>交换光标前面的两个单词</td>
</tr>
</tbody>
</table>
<p>这些快捷键很多来自 GNU 的 readline 库，输入 bind -P 可以查看所有的键盘绑定。</p>
<h3>五、说明</h3>
<ol>
<li>
<p>Ctrl + v</p>
<p>Ctrl + v Ctrl + c 會出現 ^C 而不是中斷，Ctrl + v TAB 輸入 TAB 而不是命令<br />
补全。</p>
</li>
<li>
<p>Ctrl + s 和 CTRL + q</p>
<p>Ctrl + s 类似于 Scroll Lock，停止屏幕滚动，例如在 cat xxx 时暂时的使用；<br />
Ctrl + q 取消屏蔽锁定。</p>
</li>
<li>
<p>Ctrl + z 和 Ctrl + C 区别</p>
<p>Ctrl + Z 和 Ctrl + c 都是中断命令，但是他们的作用却不一样。Ctrl + c 是强制<br />
中断程序的执行，而 Ctrl + z 则是将任务中断，但是此任务并没有结束，他仍然在进程中他只<br />
是维持挂起的状态，用户可以使用 fg/bg 操作继续前台或后台的任务。fg 命令重新启动前台被<br />
中断的任务，bg 命令把被中断的任务放在后台执行。例如：当你 vi 一个文件时，如果需要用<br />
shell 执行别的操作，但是你又不打算关闭 vi，因为你得存盘退出，你可以简单的按下<br />
Ctrl + z，shell 会将 vi 进程挂起，当你结束了那个 shell 操作之后，你可以用 fg<br />
命令继续 vi 你的文件，不是很方便么？！</p>
</li>
<li>
<p>Gnome Terminal 下的使用</p>
<p>如果使用 Gnome 下的终端窗口 gnome-teminal，上面的 Gnu Shell 快捷键会跟<br />
Gnome 的窗口快捷键有冲突。那么你需要做如下配置，在 gnome-terminal 的菜单栏中选<br />
“Edit” -> “Keyboard Shortcuts &#8230;” 打开 “Keyboard Shortcuts” 对话框，并勾<br />
选下面两个复选项 “Disable all menu access keys (such as Alt+f to open<br />
File menu)”、”Disable menu shortcut key (F10 by default)”。</p>
</li>
</ol>
<h3>参考资料</h3>
<ul>
<li><a href="http://selboo.com.cn/post/818/">linux shell快捷键</a></li>
<li><a href="http://plog.longwin.com.tw/my_note-unix/2006/09/18/bash_hot_key_2006">Bash Shell 快速鍵</a></li>
<li><a href="http://www.linuxsir.org/main/node/151">快速编辑 Shell 命令行</a></li>
<li><a href="http://www.dbanotes.net/techmemo/shell_shortcut.html">Bash Shell 快捷键的学习使用</a></li>
<li><a href="http://www.ha97.com/2698.html">超实用的Linux/Unix Shell快捷键汇总</a></li>
<li><a href="http://www.bigsmoke.us/readline/shortcuts">Readline shortcuts</a></li>
<li><a href="http://linuxhelp.notespot.com/2005/08/bash-shell-shortcuts.html">Bash Shell Shortcuts</a></li>
<li><a href="http://articles.techrepublic.com.com/5100-10878_11-5827311.html">Master the Linux bash command line with these 10 shortcuts</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/10/22/shell_hot_key/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让Gnome 3.2上的dock扩展工作</title>
		<link>http://infong.net/2011/10/10/let-dock-ext-work-on-gnome-3-2/</link>
		<comments>http://infong.net/2011/10/10/let-dock-ext-work-on-gnome-3-2/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 02:49:52 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[白芝麻，发！]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[gnome-shell]]></category>
		<category><![CDATA[gnome-shell-dock]]></category>
		<category><![CDATA[gnome3]]></category>

		<guid isPermaLink="false">http://infong.info/?p=709</guid>
		<description><![CDATA[前几天把ArchLinux的Gnome升级到了3.2版本。 升完后，&#8217;gnome-shell-extension-dock&#8217;就无法工作了，用得顺顺得dock一下不见了很不习惯。前几天网上找也无果。 然后，终于在今天找到了方法： # cd /usr/share/gnome-shell/extensions/dock@gnome-shell-extensions.gnome.org/ # vim extension.js 找到”this.actor.lower_bottom();”这一行，把它注释掉。保存后，在gnome-tweak-tool中把dock-extensions重新启用。Enjoy！ 发现3.2的dock可以自动隐藏了，这个很是喜欢呐。]]></description>
			<content:encoded><![CDATA[<p>前几天把ArchLinux的Gnome升级到了3.2版本。<br />
升完后，&#8217;gnome-shell-extension-dock&#8217;就无法工作了，用得顺顺得dock一下不见了很不习惯。前几天网上找也无果。</p>
<p>然后，终于在今天找到了方法：</p>
<pre name="code" class="php">
# cd /usr/share/gnome-shell/extensions/dock@gnome-shell-extensions.gnome.org/
# vim extension.js
</pre>
<p>找到”this.actor.lower_bottom();”这一行，把它注释掉。保存后，在gnome-tweak-tool中把dock-extensions重新启用。Enjoy！<br />
发现3.2的dock可以自动隐藏了，这个很是喜欢呐。</p>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/10/10/let-dock-ext-work-on-gnome-3-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sshfs的配置</title>
		<link>http://infong.net/2011/10/07/sshfs-config-howto/</link>
		<comments>http://infong.net/2011/10/07/sshfs-config-howto/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 07:22:53 +0000</pubDate>
		<dc:creator>infong</dc:creator>
				<category><![CDATA[白芝麻，发！]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[Linux命令介绍]]></category>
		<category><![CDATA[linux配置]]></category>
		<category><![CDATA[ssh-keygen]]></category>
		<category><![CDATA[sshfs]]></category>

		<guid isPermaLink="false">http://infong.info/?p=702</guid>
		<description><![CDATA[上个月新买了一个本本电脑，所以女人的旧电脑就算淘汰下来了。但我还得用我那07年的老爷机，在做开发上还是有些吃力，因此决定把原来共存于同一个系统的桌面环境和服务器环境分开，将服务器环境转移到淘汰下来的老爷机上，所以在上面装了个FreeBSD，以方便维护。但也因此出现一个问题，服务器的数据应该放在哪里，桌面机上还是服务器机器上。由于淘汰下来的机器可能会被我用来折腾，如挨个装发得版，或测试其它东西，所以我想把数据还是放在桌面机上；问题又来了，服务器如何能快速有效地访问这些数据，而不影响服务器的正常运作呢。 首先，想到的是用netbeans的远程站点功能。随后，又想到了利用 ssh 挂载远程文件系统的功能，把 Desktop 上的文件系统通过 sshfs 挂载到 Server 上。由于第一种方案需要依赖netbeans，所以我打算用第二种方案。 一、安装配置 SSHFS 安装 sshfs ，这个在 Arch 下用 pacman 安装即可，其它发行版应该都有相应的包管理器可以解决。在安装好 sshfs 之后，可以使用 # sshfs [USER]@[HOST]:[DIR] [MOUNTPOINT] [OPTIONS] 挂载远程的文件系统，使用 # fusermount -u [MOUNTPOINT] 进行卸载。当然，前提是远程系统上有 ssh daemon 运行。另外一个比较有用的参数是 -o allow_other，否则挂载的文件系统只有当前用户可用，其他用户无法访问。这样，就可以像操作本地文件一样来操作远程文件了。 二、实现 SSHFS 开机自动挂载 &#8230;<p class="read-more"><a href="http://infong.net/2011/10/07/sshfs-config-howto/">继续阅读 &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>上个月新买了一个本本电脑，所以女人的旧电脑就算淘汰下来了。但我还得用我那07年的老爷机，在做开发上还是有些吃力，因此决定把原来共存于同一个系统的桌面环境和服务器环境分开，将服务器环境转移到淘汰下来的老爷机上，所以在上面装了个FreeBSD，以方便维护。但也因此出现一个问题，服务器的数据应该放在哪里，桌面机上还是服务器机器上。由于淘汰下来的机器可能会被我用来折腾，如挨个装发得版，或测试其它东西，所以我想把数据还是放在桌面机上；问题又来了，服务器如何能快速有效地访问这些数据，而不影响服务器的正常运作呢。</p>
<p>首先，想到的是用netbeans的远程站点功能。随后，又想到了利用 ssh 挂载远程文件系统的功能，把 Desktop 上的文件系统通过 sshfs 挂载到 Server 上。由于第一种方案需要依赖netbeans，所以我打算用第二种方案。</p>
<h3>一、安装配置 SSHFS</h3>
<p>安装 sshfs ，这个在 Arch 下用 pacman 安装即可，其它发行版应该都有相应的包管理器可以解决。在安装好 sshfs 之后，可以使用 <bash># sshfs [USER]@[HOST]:[DIR] [MOUNTPOINT] [OPTIONS]</bash> 挂载远程的文件系统，使用 <bash># fusermount -u [MOUNTPOINT]</bash> 进行卸载。当然，前提是远程系统上有 ssh daemon 运行。另外一个比较有用的参数是 <conf>-o allow_other</conf>，否则挂载的文件系统只有当前用户可用，其他用户无法访问。这样，就可以像操作本地文件一样来操作远程文件了。</p>
<p><span id="more-702"></span></p>
<h3>二、实现 SSHFS 开机自动挂载</h3>
<h4>2.1 配置 ssh 的自动登录</h4>
<p>首先切换到 root 用户，这样比较方便，避免了用户权限上的麻烦，虽然可能有安全性的问题，但毕竟是自己的电脑。</p>
<p>接着，用 <bash>ssh-keygen</bash> ，生成 dsa 密钥对，为了实现自动挂载，所以这里不要输入密钥密码短语（passphrase），这样我们就得到了 id_dsa 和 id_dsa.pub 这两个密钥文件。</p>
<p>最后，用 <bash>ssh-copy-id -i id_dsa.pub [HOST]</bash>把 id_dsa.pub 这个文件上传到远程系统去，如果远程系统改变了默认的 ssh 端口，则使用 <bash>ssh-copy-id -i id_dsa.pub &#8216;-p [PORT] [HOST]&#8216;</bash> 即可。这样我们就可以直接使用 <bash>ssh [HOST]</bash> 来登录远程系统而不需要密码了。</p>
<p>这个方法之所以可以免除密码的关键在于我们生成了一对没有 passphrase 的密钥对，但是如果在之前生成密钥对时输入了 passphrase，则还是需要密码的。所以，这是一个取巧的方式，有一定的安全隐患，如果需要更加安全的免密码的方式，可以使用 ssh-agent<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>。</p>
<h4>2.2 配置 sshfs 开机自动挂载</h4>
<p>在 /etc/fstab 中添加 <conf>sshfs#root@host:[dir] mountpoint fuse defaults,auto,allow_other,port=PORT 0 0</conf>，这样就可以实现自动挂载了。</p>
<p>最后，用 <bash>mount -a</bash> 试试看有没有成功。</p>
<h3>参考资料</h3>
<ol>
<li><a href="http://www.fwolf.com/blog/post/279">配置ssh的自动登录</a></li>
<li><a href="http://weblog.kreny.com/archives/2005/10/rsadsa_authenti.html">RSA/DSA authentication on SSH</a></li>
<li><a href="http://chinabeta.cn/hkjs/hkjc/200611/10345.html">老外经验谈使用sshfs装备远程文件系统</a></li>
<li><a href="http://www.fwolf.com/blog/post/329">sshfs把远程主机的文件系统映射到本地的目录中</a></li>
<li><a href="http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html">IBM Developer &#8212; OpenSSH 密钥管理，第 1 部分</a></li>
<li><a href="http://www.ibm.com/developerworks/cn/linux/security/openssh/part2/index.html">IBM Developer &#8212; OpenSSH 密钥管理，第 2 部分</a></li>
</ol>
<p><!-- Reference --></p>
<div>
<hr />
<ol>
<li id="fn:1">
<p>关于这部分可以仔细研读参考资料里“IBM Developer &#8212; OpenSSh 密钥管理”这部分的内容。&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://infong.net/2011/10/07/sshfs-config-howto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

