0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你会使用Linux 中的“!”惊叹用法吗

5RJg_mcuworld 来源:未知 2019-01-29 09:08 次阅读

前言

实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。

执行上一条命令

例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令:

$whereisbash#执行命令bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz$!!#再次执行上一条命令whereisbashbash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz

!!代表了上一条执行的命令。可以看到,当输入两个感叹号时,它显示上条命令的同时会执行上一条命令。当然了,通常我们还会想到使用“UP”键来完成这个事情。但是如果是基于上条命令扩充,!!就来得更加方便了。

比如,你想查看某个文件,但是忘了输入more:

$/opt/user/test.txt#忘记输入more$more!!#这样是不是快多了?

使用!!是不是方便多了?

使用上个命令第一个或最后一个的参数执行命令

使用上条命令最后一个参数

比如,你在使用ls列出目录内容时,没有带任何参数,但是想再次执行,带上-al参数,又不想输入长长的参数,可以使用下面的方式:

$ls/proc/1/task/1/net/tcp/proc/1/task/1/net/tc$ls-al!$ls-al/proc/1/task/1/net/tcp-r--r--r--1rootroot012月2217:30/proc/1/task/1/net/tcp

这里的!$代表了上一条命令的最后一个参数。

使用上条命令第一个参数

而使用上条命令的第一个参数只需要使用!^,例如:

$ls-al!^

去掉最后一个参数执行上一个命令

如果想执行上条命令,但不想带上最后一个参数:

$ls-aldir#假设dir是一个很长的字符串$!:-ls-al

什么场景下可能会用呢?比如你上一条命令最后一个参数是一个长长的字符串,而你恰好不想不用它,并且退格键删除又慢的时候,可以使用上面的方法。

使用上条命令的所有参数

前面说了使用上条命令的最后一个参数,那如果不是最后一个参数,该如何使用呢?很简单,使用!*即可。例如我们在输入find命令输错了,想要纠正的时候:

$fin-name"test.zip"#这里find输错了。$find!*find./-name"test.zip"./workspaces/shell/find/test.zip./workspaces/shell/test.zip

使用上条命令指定的参数

有的读者可能会问了,如果我只想用其中某个参数呢?按照![命令名]:[参数号]的规则即可。例如:

$cp-rfdiradirb/#将dira拷贝到dirb$ls-l!cp:2#查看dira的内容ls-ldiratotal0-rw-rw-r--1hybhyb012月2217:45testfile

当上条命令的参数很长,而你需要取用中间的某个参数时,效果就比较明显了。

执行history中的命令

我们都知道可以通过history命令可以查看之前执行过的命令,但是如何再次执行history中的命令呢?我们可以通过“UP”键可以查看,但是历史命令很长的时候,并不是很方便,这个时候“!”便派上了用场:

$history(这里省略更多内容)2043touch./dira/testfile2044cp-rfdiradirb/2045ls-aldira2046ls-ldira2047ls-aldira2048ls-ldira2049ls-aldira2050ls-ldira2051history

我们可以看到,history命令出来可以看到之前执行过的命令,也会看到它前面带了一个数值。如果我们想执行前面的cp -rf dira dirb/命令,实际上只要用下面的方式即可:

$!2044#2044是执行的第n条命令cp-rfdiradirb/

即通过![历史命令数值]的方式执行历史命令。

当然了,如果我们想执行倒数第二条命令,也是有方法的:

$!-2#感叹号后面跟着一个负数,负几代表倒数第几条

按照关键字执行历史命令

!可以根据关键字执行命令。

执行上一条以关键字开头的命令

例如,执行上一条find命令:

$!find#执行上条以find开头的命令

执行上一条包含关键字的命令

再例如,执行上一条包含name的命令:

$find./-name"test"./test./find/test$!?name?find./-name"test"./test./find/test

替换上条命令的参数

例如:

$find./-name"old*"-a-name"*.zip"

如果我们需要将这条命令中的old更换为new:

$!!:gs/old/new

逻辑非的作用

这个是它最为人所熟悉的作用,例如删除除了cfg结尾以外的所有文件:

rm!(*.cfg)#删除需谨慎

这里就不再详述。

总结

惊叹号"!"的作用确实有时候让人惊叹。前面可能只是提到!结合其他字符代表某个特定的含义的某种使用,实际上,我们可以组合或者扩展发现更多的妙用。这里不再展开。你还有什么好的发现?欢迎留言!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10970

    浏览量

    206666
  • 程序
    +关注

    关注

    114

    文章

    3629

    浏览量

    79482

原文标题:Linux 中“!”的惊叹用法,你知道吗?

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Matlab的冒号的用法

    Matlab的冒号的用法
    发表于 03-11 22:22

    arm-linux-gcc用法

    的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。以文件example.c为例说明它的用法0. arm-linux-gcc -o example example.c不加
    发表于 03-09 17:11

    视频: 让人惊叹的未来显示技术

    `视频: 让人惊叹的未来显示技术`
    发表于 04-26 17:33

    verilogHDL的{}用法

    verilogHDL的{}用法,求详解。
    发表于 03-22 23:48

    PROTEL 99用法全都知道吗?快来看一下吧

    PROTEL 99可能不知道的用法是不是还在为自己的刚刚绘制好的电路忘了保存而后悔不已啊?是不是有些机密的文件不能让别人窥视啊?
    发表于 03-31 06:00

    12个 Linux grep 命令的超级用法实例

    是否遇到过需要在文件查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧。grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果
    发表于 05-12 08:00

    linuxcomm命令用法

    linux系统comm命令用法详解 linux系统下的comm命令是一个非常实用的文件对比命令。 comm命令功能:选择或拒绝两个已排序的文件的公共的行。 comm命令语法:comm
    发表于 07-04 08:22

    LINUX随身指南分享

    如果正在寻找Linux速成秘笈,这本就是。简明扼要地阐述了Linux系统的基本概念,并以精辟的例子示范如何利用Linux进行日常工作,让
    发表于 09-25 08:25

    会使Linux编程const?

    另外const 的一些强大的功能在于它在函数声明中的应用。在一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法
    发表于 05-06 16:34 471次阅读
    你<b class='flag-5'>会使</b>用<b class='flag-5'>Linux</b>编程const?

    干货:Linux内核中等待队列的四个用法

    Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。
    的头像 发表于 06-20 09:59 2567次阅读

    Linux系统维护命令的用法

    Linux有很多命令,每个命令基本可以用一篇文章介绍,本文仅简单总结一些常用系统维护命令的用法
    的头像 发表于 04-17 14:57 641次阅读
    <b class='flag-5'>Linux</b>系统维护命令的<b class='flag-5'>用法</b>

    Linux上time基础用法详解

    1 基础用法详解 先来看下最基础的用法,也可能是大家最常见的用法了 root @chopin : ~ $ time find . - name "chopin.txt"...... real
    的头像 发表于 10-09 17:28 489次阅读

    linux中vi命令的用法

    Linux中,vi(或vim)是一种常用的文本编辑器。以下是一些基本的vi命令用法: 打开文件:vi filename 进入编辑模式:在打开文件后,按下 i 键进入编辑模式,这样才能开始编辑文本
    的头像 发表于 11-08 11:30 482次阅读

    linux中find用法详解

    Linux中, find 命令是一个非常强大的工具,用于在指定目录下查找文件和目录。下面是 find 命令的用法和详细解释: 语法: find [路径] [表达式] 路径:要查找的目录路径。可以
    的头像 发表于 11-08 14:29 428次阅读

    linux常用命令及用法

    Linux是一种开源的操作系统,它以稳定、高效和安全的特点受到广大用户的喜爱。掌握Linux的常用命令及其用法对于操作系统的管理和开发都至关重要。本文将详尽、详实、细致地介绍Linux
    的头像 发表于 11-17 09:47 344次阅读