Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Linux命令行新手指南:详解“!”操作符的用法_创想鸟

Linux命令行新手指南:详解“!”操作符的用法

Linux命令行新手指南:详解“!”操作符的用法

在linux命令行中存在着一种神秘而强大的操作符——简单的感叹号“!”。这个操作符具有多种功能,能够极大地提高用户在命令行操作中的效率和便捷性。本文将深入探讨“!”操作符的多种用法,并提供丰富的示例代码,详细解释它们的实际作用。

历史命令的查找和执行

“!”操作符在Linux命令行中扮演着查找和执行之前执行过的命令的重要角色。下面介绍一些常见的用法:

1. 重复上一次执行的命令

通过使用两个感叹号!!,可以迅速重复上一次执行的命令:

!!

2 重复以关键词开头的命令

如果想重复执行以特定关键词开头的命令,可以使用!关键词,例如:

!ls

这将执行最后一次以”ls”开头的命令。

3 重复历史中的特定命令

如果知道历史中某个命令的编号,可以使用!编号来执行该命令,例如:

!123

4 使用通配符执行命令

还可以使用通配符结合“!”操作符来执行匹配的命令。例如,要执行最后一次以“git”开头的命令,可以使用:

!git*

命令行参数的替换

“!”操作符还可以用于替换命令行参数。以下是一些示例:

1 上一次命令的最后一个参数

使用!$可以获取上一次命令的最后一个参数,例如:

ls /path/to/some/directorycd !$

2 上一次命令的特定参数

如果想获取上一次命令的特定参数,可以使用!:n,其中n是参数的索引(从1开始计数)。例如:

ls file1 file2 file3cat !:2

这将执行cat file2命令。

高级用法:历史命令的编辑与执行

“!”操作符还可以与其他命令组合,实现更高级的操作:

1 编辑并执行上一次匹配的命令

使用!?关键词可以查找历史中包含特定关键词的命令,并将其编辑后执行。例如:

!?search

这将查找包含“search”的命令,可以编辑它并执行。

2 编辑并执行最后一个命令

使用!!:e可以将上一次执行的命令编辑后再次执行。例如:

ls /path/to/some/directory!!

这将编辑并再次执行ls /path/to/some/directory命令。

Melodio Melodio

Melodio是全球首款个性化AI流媒体音乐平台,能够根据用户场景或心情生成定制化音乐。

Melodio 110 查看详情 Melodio

示例代码

以下是一些示例代码,演示了“!”操作符的不同用法:

# 重复上一次执行的命令!!# 重复以特定关键词开头的命令!ls# 重复历史中的特定命令!123# 使用通配符执行命令!git*# 获取上一次命令的最后一个参数ls /path/to/some/directorycd !$# 获取上一次命令的特定参数ls file1 file2 file3cat !:2# 编辑并执行上一次匹配的命令!?search# 编辑并执行最后一个命令ls /path/to/some/directory!!:e

使用!操作符的注意事项

在使用!操作符时,需要注意一些事项,以确保安全和正确执行命令:

1 命令历史的管理

!操作符依赖于命令历史记录,因此确保历史记录没有被意外删除或清除。可以使用history命令查看和管理命令历史。

2 参数和关键词的正确性

在使用!操作符替换参数或查找关键词时,确保参数和关键词的正确性。错误的参数或关键词可能导致命令执行失败或产生意外结果。

3 安全性考虑

如果在命令中包含敏感信息(如密码),请注意不要将其存储在命令历史中,以免泄露敏感信息。

4 谨慎使用编辑功能

当使用!操作符的编辑功能时,小心不要无意中修改了不想修改的命令。确认编辑后的命令是正确的,然后再执行。

使用!操作符的实际应用

以下是一些实际应用场景,演示了如何使用!操作符来提高命令行操作的效率:

1 重复执行相似的命令

假设需要不断重复执行类似的命令,只需轻松修改关键词并使用!操作符:

grep keyword1 /path/to/filegrep keyword2 /path/to/filegrep keyword3 /path/to/file

使用!操作符:

!grep keyword1 !$!grep keyword2 !$!grep keyword3 !$

2 快速切换到上一个目录

在切换目录时,不必重新输入完整的路径。只需使用!操作符:

cd /path/to/some/long/directory/pathcd !$

3 查找并编辑之前的命令

如果需要查找并编辑之前执行的命令,可以使用!?操作符:

!?search_term

这将查找包含“search_term”的命令,您可以在编辑后执行。

总结

“!”操作符是Linux命令行中一个强大的工具,可以提高命令行操作的效率和便捷性。通过了解不同的用法,以及注意事项,可以更好地利用这个神秘的操作符,轻松执行历史命令、替换命令行参数,甚至进行高级的命令编辑和执行操作。希望本文提供的示例场景和解释有助于大家更好地理解和利用!操作符的神秘用途,使命令行体验更加顺畅和高效。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

以上就是Linux命令行新手指南:详解“!”操作符的用法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/938940.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
《题拍拍》报名答题官方法
上一篇 2025年11月29日 17:07:34
广汽埃安揭示固态电池新突破:寿命衰减降低50%
下一篇 2025年11月29日 17:07:35

相关推荐

  • VSCode安装C/C++代码格式化 专业VSCode开发环境配置

    配置VSCode进行C/C++开发需安装C/C++扩展包和clang-format,设置自动格式化与调试环境,推荐使用CMake Tools、Include Autocomplete等扩展,结合快捷键、代码片段和任务自动化提升效率。 配置VSCode以实现C/C++代码的专业格式化和高效开发环境,核…

    2026年9月22日
    400
  • Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)

    could not find doxygen (missing: doxygen_executable)  使用cmake .. 有时候会遇到如下问题: 代码语言:javascript代码运行次数:0运行复制 $ cmake ..– The CXX compiler identification …

    2026年9月22日
    100
  • MySQL自动化备份如何实现_适合企业级部署吗?

    MySQL自动化备份如何实现_适合企业级部署吗?MySQL自动化备份如何实现_适合企业级部署吗?MySQL自动化备份如何实现_适合企业级部署吗?MySQL自动化备份如何实现_适合企业级部署吗?

    mysql的自动化备份对企业级部署是必要的,且可通过多种方式实现。1. 使用mysqldump+定时任务(crontab)是最基础的方式,操作简单适合中小规模数据库,但备份时可能锁表影响业务;2. 增量备份结合二进制日志(binary log)更高效,适用于频繁变更的数据,支持精确恢复到某时间点;3…

    2026年9月21日 • 用户投稿
    100
  • Online Config VS Code

    Online Config VS CodeOnline Config VS CodeOnline Config VS CodeOnline Config VS Code

    run vs view Install Code Server Update Code Server Database:It is recommended to create a Docker container for the database. Code Language: JavaScript…

    2026年9月21日 • 用户投稿
    100
  • 一键PHP环境怎么解决网页空白问题_空白页故障诊断

    答案是开启错误提示并检查文件路径与代码逻辑。先启用PHP错误显示,确认配置正确;再核对网站根目录和入口文件是否存在;接着排查代码致命错误及输出缓冲问题,确保无BOM头且session前无输出。 遇到一键PHP环境安装后出现网页空白或空白页问题,通常不是环境完全失效,而是某些关键环节出了错。这类问题在…

    2026年9月21日
    100
  • Bun 1.3 正式发布

    2025年10月10日,高性能 javascript 运行时 bun 发布了 1.3 版本。这是 bun 项目迄今为止最重大的版本更新,标志着 bun 从单纯的运行时工具演变为一个功能完备的全栈 javascript 开发平台。 从运行时到全栈平台的跨越 Bun 1.3 的核心突破在于将前端开发能力…

    2026年9月21日
    100
  • Linux文件系统mv命令使用详解

    mv命令用于移动或重命名文件和目录,若目标不存在则重命名,存在且为目录则移动,为文件则覆盖;常用选项包括-i(交互确认)、-f(强制覆盖)、-u(更新移动)、-v(显示过程);可重命名如mv oldname.txt newname.txt,或移动如mv file.txt /dir/;建议使用alia…

    2026年9月21日
    100
  • VSCode怎么手动保存代码_VSCode禁用自动保存与手动保存设置教程

    手动保存代码只需按Ctrl + S(Windows/Linux)或Cmd + S(macOS),可通过设置将“files.autoSave”设为“off”来禁用自动保存,并结合版本控制保障代码安全。 VSCode手动保存代码其实很简单,默认情况下,按下 Ctrl + S (Windows/Linux…

    2026年9月21日
    200
  • 如何解决Linux软件包冲突 依赖问题处理方案

    如何解决Linux软件包冲突 依赖问题处理方案如何解决Linux软件包冲突 依赖问题处理方案如何解决Linux软件包冲突 依赖问题处理方案如何解决Linux软件包冲突 依赖问题处理方案

    遇到linux系统中软件包冲突或依赖问题时,应首先理解依赖关系并使用合适工具解决。1. 使用apt或yum的自动修复功能,如debian/ubuntu可用sudo apt –fix-broken install,centos/fedora可用sudo dnf install @syste…

    2026年9月21日 • 用户投稿
    800
  • MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    mysql数据备份的自动化实施核心在于结合mysqldump等工具与操作系统的定时任务(如linux的cron或windows的task scheduler),通过编写和管理脚本实现定期执行备份。1. 使用mysqldump作为基础工具,编写包含数据库连接信息、时间戳文件名、日志记录、压缩清理等功能…

    2026年9月21日 • 用户投稿
    200
  • 如何设置Linux软件包更新排除 yum exclude和apt-mark hold

    如何设置Linux软件包更新排除 yum exclude和apt-mark hold如何设置Linux软件包更新排除 yum exclude和apt-mark hold如何设置Linux软件包更新排除 yum exclude和apt-mark hold如何设置Linux软件包更新排除 yum exclude和apt-mark hold

    要阻止linux系统中特定软件包更新,可针对不同发行版使用相应方法。对于rhel/centos系系统,可通过在/etc/yum.conf或.repo文件中添加exclude=包名来排除升级;对于debian/ubuntu系系统,则使用sudo apt-mark hold 包名命令锁定版本。这两种方式…

    2026年9月21日 • 用户投稿
    500
  • VSCode怎么看效果_VSCode实时预览和调试代码运行效果教程

    VSCode通过实时预览扩展和内置调试器实现代码效果查看。使用Live Server可实时预览前端页面,保存即刷新;Markdown文件支持侧边预览。调试功能需配置launch.json,支持Node.js、Python、浏览器端JavaScript等,通过断点、变量监视、调用堆栈等深入分析代码执行…

    2026年9月21日
    100
  • 如何检测Linux网络接口DMA状态 硬件加速功能验证

    如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证

    可通过以下方法检测linux系统中网络接口dma状态和硬件加速是否启用:1.使用 ethtool -i eth0 和 ethtool -k eth0 查看驱动信息及sg、tso、ufo、gso功能是否启用;2.通过 cat /proc/interrupts 和 cat /proc/slabinfo …

    2026年9月21日 • 用户投稿
    800
  • VSCode整个项目怎么导出_VSCode项目打包与导出为压缩文件的完整教程

    答案:导出VSCode项目可通过手动压缩、终端命令、插件或Git克隆实现,推荐使用终端命令排除node_modules并选择zip格式以兼顾兼容性与效率。 将VSCode整个项目导出,实际上就是将项目文件夹打包成一个压缩文件,方便备份、分享或迁移。下面介绍几种常见的打包导出方法。 解决方案: 手动压…

    2026年9月21日
    200
  • SpringBoot的定时任务

    SpringBoot的定时任务SpringBoot的定时任务SpringBoot的定时任务SpringBoot的定时任务

    大家好,我是你们的老朋友全栈君。我们又见面了。 一、基于注解(@Scheduled)的定时任务 使用SpringBoot的@Scheduled注解来创建定时任务非常简单,只需几行代码就能实现。然而,@Scheduled默认是单线程运行,这意味着当启动多个任务时,一个任务的执行时间可能会影响到下一个任…

    2026年9月21日 • 用户投稿
    500
  • 使用 EMQ 搭建 MQTT 服务器

    本教程详细介绍了如何使用 emq 搭建 mqtt 服务,适用于设备联网的 mqtt 协议。 预备条件: 一台 Ubuntu 服务器或在虚拟机中安装 Ubuntu 系统emqx-ubuntu18.04-4.3.1-amd64.deb 安装包(安装包链接见文末) 安装步骤: 使用 dpkg 安装 EMQ…

    2026年9月21日
    000
  • 实时即未来:Apache Flink实践(二)

    俗话说,工欲善其事,必先利其器!这句话确实很有道理。因此,今天我们将讨论如何在版本较低的windows电脑上学习 apache flink 知识。 Windows子系统简介:Windows内置了Ubuntu子系统,这是由Microsoft官方发布的,不是虚拟机。其安装方法也非常简单。 微软官方文档对…

    2026年9月21日
    500
  • PHPComposer怎么安装_PHPComposer依赖管理工具安装与使用指南

    PHPComposer是PHP的依赖管理工具,类似npm或pip。需先安装PHP,再下载并验证composer-setup.php,执行安装生成composer.phar,推荐全局安装至/usr/local/bin/composer,运行composer –version验证。使用com…

    2026年9月21日
    100
  • 开源 串口调试助手 BaoYuanSerial 使用教程「建议收藏」

    大家好,很高兴再次与大家见面,我是你们的老朋友全栈君。 简介:本软件采用.Net5与Avalonia技术实现跨平台解决方案,适用于Linux Ubuntu和Windows系统,并已在Ubuntu20.04及Win10 Professional 20H2上成功测试。 官方下载地址: GitHub项目地…

    2026年9月21日
    200
  • 为“架构”再建个模:如何用代码描述软件架构?

    在 archguard 平台中,为了实现对架构的治理,我们需要通过代码和模型来描述所需处理的内容和数据。因此,archguard 引入了代码模型、依赖模型、变更模型等,而架构模型和架构治理模型则是两个核心的部分。其它如构建模型等,将会在后续逐步引入到系统中。 PS:本文中的架构展开是基于自动化分析需…

    2026年9月21日
    000

发表回复

登录后才能评论
关注微信