Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257085
  • 博文数量: 93
  • 博客积分: 3001
  • 博客等级: 中校
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-11 13:20
文章分类

全部博文(93)

文章存档

2011年(1)

2009年(92)

我的朋友

分类: LINUX

2009-07-11 18:02:15

13-7  替换和历史

事件指示者

   

!

说明开始历史替换

!!

重新执行上一条命令

!N

重新执行历史清单中的第N条命令

!-N

重新执行从当前命令往回数的第N条命令

!string

重新执行最后一条以串string开头的命令

!?string?

重新执行最后一条包含串string的命令

!?string?%

重新执行历史清单中最近一条包含串string的命令行参数

!$

用上一条命令的最后一个参数作为当前命令行

!! string

string添加到上一条命令的最后并执行

!N string

string添加到历史清单中第N条命令的最后并执行

                                        (续表)  

事件指示者

   

!N:s/old/new/

在前面的第N条命令中,将第一次出现的old串替换成new

!N:gs/old/new/

在前面的第N条命令中,将所有的old串替换成new

^old^new^

在上一条命令中,用new串替换old

Command !N:wn

在当前命令后添加一个来自前第N条命令的参数(wn)并执行它。wn是一个从012开始的数,表明前面那个命令的第几个词。词0是命令本身,1是它的第一个参数等(请参见范例13-32)

范例13-32

1   $ date

    Mon Jul  12 12:27:35 PST 2004

2   $ !!

    date

    Mon Jul  12 12:28:25 PST 2004

3   $ !106

    date

    Mon Jul  12 12:29:26 PST 2004

4   $ !d

    date

    Mon Jul  12 12:30:09 PST 2004

5   $ dare

    dare: Command not found.

6   $ ^r^t

    date

    Mon Jul  12 12:33:25 PST 2004

说明

1. 在命令行执行中UNIX/Linuxdate命令。历史清单随之被更新,date成了清单中的最后一条命令。

2. !!(bang bang)从历史清单中取出最后那条命令,这条命令再次被执行。

3. 执行历史清单中第106条命令。

4. 执行命令清单中最后那条以字母d开头的命令。

5. 敲错了命令,应该是date,而不是dare

6. 用脱字符在历史清单的最后那条命令中替换字母。命令中第一个r被替换为t。即dare改为date

范例13-33

1   $ ls  file1 file2 file3

    file1 file2 file3

    $ vi !:1

    vi file1

2   $ ls file1 file2 file

    file1 file2 file3

    $ ls !:2

    ls file2

    file2

3   $ ls file1 file2 file3

    $ ls  !:3

    ls file3

    file3

4   $ echo a b c

    a b c

    $ echo !$

    echo c

    c

5   $ echo a b c

    a b c

    $ echo !^

    echo a

    a

6   % echo a b c

    a b c

    % echo !*

    echo a b c

    a b c

7   % !!:p

    echo a b c

说明

1. ls命令列出file1file2file3。历史列表被更新,命令行被分解为若干个词,词的编号从0开始。如果在词的编号前加个冒号,就能将这个词从历史清单中提取出来。标记!:1的含义是:取出历史清单中最后那条命令的第一个参数,并用它替换掉命令串中的!:1。最后那条命令的第一个参数是file1(0号单词是命令本身)

2. !:2被替换为上一条命令的第2个参数,即file2,并且成为ls的参数。命令运行结果是打印出file2(file2是第3个单词)

3. ls !:3的含义是:找到历史清单中的最后一条命令,取出该命令中第4个词,把它作为参数传给ls命令(file3是第4个词)

4. 带美元符($)的感叹号(!)代表历史清单中最后那条命令的最后一个参数。此时这个参数是c

5. 脱字符(^)代表命令后的第一个参数。后跟脱字符的感叹号(!)代表历史清单中最后那条命令的第一个参数。本例中最后那条命令的第一个参数是a

6. 星号(*)代表命令后的所有参数。感叹号(!)后跟一个星号,代表历史清单中最后那条命令的所有参数。

7. 显示历史清单中最后一条命令,但不执行。历史清单被更新。现在可以对该行执行脱字符替换。

 

阅读(657) | 评论(0) | 转发(0) |
0

上一篇:函数

下一篇:内置命令test与let

给主人留下些什么吧!~~