我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux中“!”你不知道的惊叹用法总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux中“!”你不知道的惊叹用法总结

前言

实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。下面话不多说了,来一起看看详细的介绍吧

执行上一条命令

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


$ whereis bash #执行命令
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
$ !!  #再次执行上一条命令
whereis bash
bash: /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-- 1 root root 0 12月 22 17:30 /proc/1/task/1/net/tcp

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

使用上条命令第一个参数

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


$ ls -al !^

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

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


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

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

使用上条命令的所有参数

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


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

使用上条命令指定的参数

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


$ cp -rf dira dirb/ #将dira拷贝到dirb
$ ls -l !cp:2  #查看dira的内容
ls -l dira
total 0
-rw-rw-r-- 1 hyb hyb 0 12月 22 17:45 testfile

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

执行history中的命令

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


$ history
(这里省略更多内容)
2043 touch ./dira/testfile
 2044 cp -rf dira dirb/
 2045 ls -al dira
 2046 ls -l dira
 2047 ls -al dira
 2048 ls -l dira
 2049 ls -al dira
 2050 ls -l dira
 2051 history

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


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

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

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


$ !-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) #删除需谨慎

这里就不再详述。

总结

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

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux中“!”你不知道的惊叹用法总结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux中“!”你不知道的惊叹用法总结

前言实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。下面话不多说了,来一起看看详细的介绍吧 执行上一条命令例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令:$ whereis
2022-06-04

Win10使用方法汇总(一些你不知道的)

Win10系统延续了微软的风格,也很大php一部分继承了Win7、Win8的路线。所以一般来说会用Win7、Win8的就会用Win10了。但是Win10毕竟是一个新系统,所以还是有一些新知识要学习的。本文就来总结一下Win10使用的一些方法
2023-06-16

Linux kde中11个你不知道的应用程序

KDE K桌面环境(Kool Desktop Environment)的缩写。一种运行于 linux、Unix 以及FreeBSD 等操作系统上面自由图形工作环境,整个系统采用的都是 TrollTech 公司所开发的 Qt 程序库(现在属于
2022-06-04

Spring中11个最常用的扩展点总结,你知道几个

我们知道IOC(控制反转)和AOP(面向切面编程)是spring的基石,除此之外spring的扩展能力非常强,下面这篇文章主要给大家介绍了关于Spring中11个最常用的扩展点的相关资料,需要的朋友可以参考下
2022-12-20

你不知道的C++中namespace和using的用法实例

在C++语言编写的程序中,变量和函数等的作用范围是有一定限制的,下面这篇文章主要给大家介绍了一些你不知道的C++中namespace和using的用法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
2022-12-19

Linux系统中一些你可能不知道的事

小编给大家分享一下Linux系统中一些你可能不知道的事,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux是一套免费使用和自由传播的类Unix操作系统,是一个
2023-06-10

详解Linux下你所不知道的7个SSH命令用法

一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方。要亲自一台一台的去访问来管理它们显然不是最好的方法,通过远程控制的方法应该是最有效的。 linux系统的远程管理工具大概有几种:telnet,ssh,vnc等,其中s
2022-06-04

你不知道的Git log还有这种用法

这篇文章主要为大家介绍了你不知道的Git log竟然还有这种用法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

关于Node.js中Buffer的一些你可能不知道的用法

前言 在大多数介绍 Buffer 的文章中,主要是围绕数据拼接和内存分配这两方面的。比如我们使用fs模块来读取文件内容的时候,返回的就是一个 Buffer:fs.readFile('filename', function (err, buf
2022-06-04

你可能不知道的一些linux文件权限管理方法

为什么需要权限管理?1.计算机资源有限,我们需要合理的分配计算机资源。2.linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分重要的 目录的 rwx 权限当前用户:vagrant:vagrant创建 testdir 目录,进
2022-06-04

linux中$符号的基础用法总结

linux使用版本: CentOS 7[root@azfdbdfsdf230lqdg1ba91 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@a
2022-06-04

编程热搜

目录