Linux 历史特性

使用history命令可以调出历史曾经用过的命令列表
shell> history
994 cat config.nice
995 cd /usr/local/src
996 ls
997 cd /usr/src
998 ls
999 dmesg
1000 history
1001 history 100

如果你想重新执行"cd /usr/local/src" 那就可以直接这样调出历史:
shell> !995
对简短容易的命令来说,可能没什么用处,但是对于

cd /usr/local/src/ZendOptimizer-3.0.0-linux-glibc21-i386
./configure --prefix=/usr/local/gd --without-x --without-freetype --without-fontconfig --without-png
这样的长命令,可能就有点帮助了,

获取上个命令中的某个参数.
比如你执行了如下的操作

shell> ls /bin/sh
shell> file /bin/sh
比较一下,两个命令的参数是一样的,这时候,你就可以使用"!"来获得上一个命令的参数了.如下:

shell> ls /bin/sh
shell> file !:$
"!"会提示shell获得上面的命令的某部分,作为当前的输入,比如$表示结尾,那就是获得了ls命令的最后一个参数(其实这里也是第一个参数.

再来看一个长点的。

shell> tar zxvf httpd-2.0.59.tar.bz2
这显然是一个错误的输入,大家都知道bz2是使用bzip解压缩的,对应的tar参数,应当是使用"jxvf". 那我们可以立即这样修正它:

shell> tar jxvf !:2
"!:2"会获得上面tar命令的第2个参数,作为当前的输入. 获取的历史输入,并不只是可以单独使用,也可以作为命令的一部分象这样:

shell> tar zxvf httpd-2.0.59.tar.bz2
shell> tar jxvf !:2 -C /usr/tmo
执行完上面的获取,命令被替换成了tar jxvf httpd-2.0.59.tar.bz2 -C /usr/tmo
那就会按照-C指定的路径把包解压缩到/usr/tmo中.
命令执行后的结果:
tar: /usr/tmo: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
sorry,我一不小心又敲错了.我本来是想解压缩到/usr/tmp中的这时候另一个更有趣的命令派上用场了,

"^"号(替换)
shell> ^mo^mp
这会把上一个命令行里的mo替换成mp
神奇吧,你的指法再快,只是在浪费时间,我轻敲6个字符,就搞定了上面的错误.

一些有用的历史命令

!是bash和cshell默认的历史替换符号
!! 重复最后一个命令
!:s/xy/yx 这个命令会把最后一个命令里的xy替换成yx
比如etho xy !:s/xy:/yx

!so 重复最近以so开始的命令
!?fn? 重复最近包含fn的命令,在某个参数中或某个命令的名称中都可以使用
!32 执行号码为32的命令
!! & 会在最后一个命令的末尾加上& (可以加上任意内容)
!:0 挑选出命令的名称,而不是整行
!:3 第参数
!:2-4 第2到4个参数
!:-3 从第0个到第三个参数
!^ 第一个参数
!$ 最后一个参数
!* 第一个到最后一个参数
!:2* 第2个到最后一个
!:2- 从第2个开始,但不要结尾参数
!?fn?% 给出第一个包含 fn的单词(sort fn1 fn2 fn3 ... =>echo !?fn?% =>echo fn1)

更cool的,请参
man 3 history
和其他的一些man page

命令行编程 shell是直接支持命令行编程的. 比如:

sh > /usr/local/src
sh > ls *z

--------------------------------------------------------------------------------

ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz mod_fastcgi-2.4.2.tar.gz
dia-0.94.tar.gz mod_fcgid.1.10.tar.gz
gd-2.0.33.tar.gz mysql-4.0.27.tar.gz
jpegsrc.v6b.tar.gz mysql-standard-4.0.26-pc-linux-gnu-i686-glibc23.tar.gz
lighttpd-1.4.11.tar.gz

--------------------------------------------------------------------------------

开工了,我要把这些东西装起来,解压缩吧,好多呀,要敲n个命令.

别急,这不会花费你几秒钟的时间;

sh > for i in `ls *z`
sh > do
sh > tar zxvf $i
sh > done
眼晕了吧,不一会所有的包都解压缩了。

这只是一个简单的应用,其实你还可以加上判断,把gz和bz2,rar什么的分别用不同的程序解压缩.

使用sed和shell配合,你甚至可以一次修改一大堆的虚拟主机配置文件中的主目录:

sh > for i in `ls`
sh > do
sh > sed -i 's/\/home\//\/disk1\\/home\//g\' $i
sh > done
大搬家!把所有用户的虚拟主机都从/home搬迁到/disk1/home中了.

转自:http://blog.chinaunix.net/u/76/showart_155742.html

[转]Linux Shell History (快速使用Linux命令)的更多相关文章

  1. 超全整理!Linux shell及常用36类命令汇总

    本文采编自http://blog.csdn.net,作者为ZHXGXN,版权归作者所有! 使用Linux shell是一些程序员每天的基本工作,但我们经常会忘记一些有用的shell命令和技巧.当然,命 ...

  2. Linux shell 日期,时间相关的命令

    在shell脚本中,经常要用到跟获取日期相关的东西,这里记录一下Linux shell 获取日期的方法 获取当前日期:today=`date +"%Y-%m-%d"` 获取昨天的日 ...

  3. Linux Shell 几个特殊符号命令 & 、&& 、 ||

    & 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动 ...

  4. 让linux中 history显示每条命令的操作时间及操作用户【转】

    一.history 中显示日期时间用户名的办法 history 命令,用来显示命令行上的操作记录 不过默认是仅显示操作命令行本身,而没有记录操作时间等细节 例如 这样,我们查找记录时很麻烦,想回顾下某 ...

  5. 【linux shell系列--1】crontab命令

    摘自:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html 一.crond简介 crond是linux下用来周期性的执行某种任务或等 ...

  6. Linux Shell的18条常用命令整理

    1.   ls: 类似于dos下的dir命令 ls最常用的参数有三个:-a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了 ...

  7. Linux Shell编程 cut、print命令

    cut命令:查找符合条件的列 cut  命令是在文件中提取符合条件的列,虽然 cut 命令用于提取符合条件的列,但是也要一行一行地进行数据提取.也就是说,先要读取文本的第一行数据,在此行中判断是否有符 ...

  8. linux shell脚本使用结构化命令

    内容: 一.if-then命令 二.if-then-else命令 三.test命令 四.case命令 1.if-then结构化命令中最基本的类型,其格式如下: if command then comm ...

  9. linux中history加入显示时间命令代码

    source 空格 配置文件,则配置立即生效,这里的soruce也可以用英文状态下的点即“.”代替 历史命令history -w将现在的命令记录写入到history里面 如果在history里面加上时 ...

随机推荐

  1. 用正则表达式抓取网页中的ul 和 li标签中最终的值!

                获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1& ...

  2. 旧的VirtualBox News(从1.3.4开始)

    https://linuxtoy.org/archives.html https://linuxtoy.org/archives/virtualbox-134.html http://www.cnbl ...

  3. 又是玻璃效果?调用一句代码就OK了

    原文 http://www.cnblogs.com/lan-mei/archive/2012/05/11/2495740.html 最近自学WPF,网上一查资料,全是依赖属性,路由事件,动画效果等等. ...

  4. 复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期) _复旦大学、女性课程、高级研修班、心理学、EWP_培训通课程

    复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期) _复旦大学.女性课程.高级研修班.心理学.EWP_培训通课程 复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期)    学      ...

  5. MFC CWnd仿按钮

    CBtn::CBtn() { RegisterWndClass(); } bool CBtn::RegisterWndClass(void) { WNDCLASS n; HINSTANCE hInst ...

  6. 面试题之——将文件夹下java文件写入到新的文件夹,并修改扩展名

    题目:将d:/code/java文件夹下的所有.java文件复制到d:/code/java/jad文件夹下并且将原来的文件的扩展名.java改为.jad 源代码: package com.zyh.in ...

  7. 用iframe框架,登录过期后登录框在框架里加载的问题

    就是登录界面出现在iframe的框架里,而不是整个页面都跳转,找到了一个JS的解决方法,只要把下面的代码放在登录界面的<head></head>里就行了. <script ...

  8. SharePoint 2013 强制安装解决方案

    Add-SPSolution Install-SPSolution -Identity DemonstrationZone.wsp -GACDeployment -CompatibilityLevel ...

  9. 在 PL/SQL Developer 中执行SQL文件的方法

    打开 command Window SQL> @'D:\My Documents\Downloads\bde_chk_cbo.sql'; 整个路径及文件两边要有单引号哦!

  10. 如何在 webApi 当中接收 Gzip 压缩或者加密后的 请求消息内容!

    今天在上班的时候遇到个问题,移动端要求我们用GZIP加密.当时一想着多简单,但是在做的时候发现个问题. 就是移动端Post到 服务端的数据也是经过 Gzip的,并不是单一的像网站那样只针对网页进行 压 ...