Linux中的叹号命令

2023-11-01

http://blog.sina.com.cn/s/blog_531bb76301013ulf.html

整天在shell环境下操作,不积累点快捷输入的小技巧是不行的。

最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用。

最近还找到一种快速回退上一条历史的一些小技巧,暂记录之。

1、 除了方向键上,还可以用“!!”代表上一条输入的命令,用这个的好处在于可以将这两个字符放在命令行任何位置以便于构成新的命令。

例如:

$./some-shell-command

$cat !!

则后一条命令就相当于cat./some-shell-command,这样做比先按方向键上回退一条命令,然后定位到开始,插入cat要快捷得多。

2、 除了!!,!$代表得是上一条命令中最后一个parameter,这是个更有用的变量,例如:

$ls /some-path-to-a-directory

$cat !$/some-file.txt

如果some-path-to-a-directory不幸为一个非常长的路径的时候,使用!$恰好就能省去输入这个超长路径的麻烦,这条命令实际上就相当于cat /some-path-to-a-directory/some-file.txt

3、 !str代表以历史命令中最近一条以str开头的命令。

比如!ssh就是最后一次执行ssh的命令

4、 !?str?代表历史命令中最近一条包含str的命令。

5、 !n和!-n,前者代表history命令显示出来前面的条目数为n的那条命令,后者代表当前命令条目数减去n的那条命令,例如!-3就代表3 条前的那个命令。

对比起来,1和2是相当实用的,剩下3条记得住就用,记不住也无妨了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中的叹号命令 的相关文章

  • 从编译的二进制文件创建 RPM 规范文件

    环境是AIX 7 0 RPM版本3 0 5 我对 Unix 世界很陌生 请耐心等待我的无知 我们有 3 种不同类型的文件要打包为 RPM Source binary bainary 文件 大约 160 个 Source ui mm 文件数量
  • 使用终端(或 Shell)将文件的一部分复制/粘贴到另一个文件中

    我正在尝试将 txt 文件的一部分从行号 n 复制到行号 n y 假设 1000 到 1000000 我尝试过与运营商合作sed 并且失败了 这是我尝试过的命令 sed n 1000 1000000p path first file gt
  • 在 bash 脚本中设置变量[重复]

    这个问题在这里已经有答案了 test sh 包含 A 1 B 2 我将 test sh 设置为 chmod 777 我用两个参数启动脚本 test sh first last 然后我通过输入以下内容对其进行了测试 echo FirstVar
  • 相当于 Python 中的 set -o pipelinefail 吗?

    我有一些 Python 脚本 每个脚本都大量使用排序 uniq ing 计数 gzipping 和gunzipping 以及 awking 第一次运行我使用的代码subprocess call 是的 我知道安全风险 这就是为什么我说这是第一
  • 使用 find 和 xargs 交互删除文件

    我正在尝试将一些文件从 find 命令传输到交互式删除命令 以便我可以仔细检查要删除的文件 但我遇到了一些麻烦 find name print0 xargs 0 rm i 我认为上面的方法可行 但我只得到一串 rm remove regul
  • 如何在 ruby​​ Kernel.exec 之后运行代码

    我有以下红宝石外壳 usr bin env ruby stdin each line do line pid fork exec line puts after exec gt Process pid Process wait pid en
  • Linux find 命令权限被拒绝

    我想过滤掉不必要的信息 权限被拒绝 这些是命令 的输出find type f name sources list find run lxcfs Permission denied find run sudo Permission denie
  • 如果文件没有行尾字符,则 wc -l 不计算文件的最后一个

    我需要计算 unix 文件的所有行数 该文件有 3 行 但是wc l仅给出 2 个计数 我知道它不计算最后一行 因为它没有行尾字符 任何人都可以告诉我如何计算这一行吗 grep c返回匹配行的数量 只需使用一个空字符串 作为您的匹配表达式
  • 有哪些基于对象的 shell?

    我打算写一个面向对象的shell 基于Python 我已经有很多想法了 但在实现它之前 我想通过一些现有的 shell 来激发我的灵感 我所说的面向对象的基本意思是 参数不仅仅是字符串数组 而且是对象数组 返回值也是一个对象 不仅有 std
  • system 和 shell_exec 之间的区别

    有什么区别shell exec and systemPHP 中的方法 两者都采用单个命令行参数并在 PHP 中运行 使用其中一种比另一种更好吗 请参阅此处的解释 http chipmunkninja com Program Executio
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • 使用 shell=True 将 PATH 设置为 bitbake 的“source”在 Python 中没有效果

    下面是shell脚本中的代码 source proj common tools repo etc profile d repo sh repo project init branch repo project sync source pok
  • 在 bash 中添加(收集)退出代码

    我需要依赖于脚本中的几个单独的执行 并且不想将它们全部捆绑在一个丑陋的 if 语句中 我想使用退出代码 每次执行并添加它 最后 如果这个值超过阈值 我想执行一个命令 伪代码 ALLOWEDERROR 5 run something RESU
  • 如何用awk删除以“C”开头的行?

    如何使用以下命令从文本文件中删除以 C 开头的行awk 有什么建议请 如果数据在文件中data txt then With awk awk C data txt With grep grep v C data txt 显示开头不带 C 的所
  • 如何正确使用fork、exec、wait

    我正在编写的 shell 需要执行用户提供给它的程序 这是我的程序的非常简短的简化版本 int main pid t pid getpid this is the parents pid char user input NULL size
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • SVN 提交后挂钩在提交后不会运行

    我的服务器上设置了 SVN 存储库 并且遇到提交后问题 我在 iMac 上使用 SmartSVN 作为客户端 我通过 SmartSVN 的 ssh svn 连接 我能够成功连接到 SVN 并对其进行更改 但从 SVN 客户端提交后 我的提交
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp

随机推荐

  • oracle 怎么去掉小数位,Oracle 去掉小数终了的0的方法

    Oracle 去掉小数末尾的0的方法 Oracle PL SQL查询语句有的时候要将number类型的字段转换成varchar2类型在报表或页面上经常会出现 440 4411 010 100之类的数据 要不就是小数点前面的0被to char
  • FileZilla,读取目录列表失败(425 Can‘t open data connection.)的解决办法

    因为对外FTP客户要求安全升级的原因 针对部分FTP User启用了SSL认证功能 启用方式 1 建立FTP User时 Force SSL for user login 前面打勾 2 启用被动传输模式 进入FileZilla Server
  • SpringMVC如何在web.xml中配置DispatcherServlet呢?

    转自 SpringMVC如何在web xml中配置DispatcherServlet呢 下文讲述SpringMVC中对DispatcherServlet进行配置的方法分享 如下所示 实现思路 只有在web xml中Servlet处理类指向D
  • 如何实现审核功能

    如何实现审核功能 开发工具与关键技术 VS C 作者 撰写时间 2019 7 26 如何实现审核的功能呢 首先是实现弹出审核模态框和重置表单 再通过ID获取要审核的数据和使用post获取到通过ID查询的数据 用loadDatatoForm回
  • IEqualityComparer VS System.IEquatable

    类似于IComparer
  • vuejs 原生JS 拖拽事件案例

    原生JS or Vue 事件案例合集 详细 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 Section 1 单个或多个鼠标拖拽事件的理解 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 原生
  • SpringMVC的@InitBinder的作用

    一 前言 在SpringMVC中 InitBinder注解用于自定义数据绑定的方法 在使用表单提交数据时 SpringMVC会将请求参数绑定到Java对象中 但是 有些时候请求参数的数据格式可能与Java对象的属性格式不一致 这时就需要使用
  • 初露头角!Walrus入选服贸会“数智影响力”数字化转型创新案例

    9月5日 由北京市通信管理局 工业和信息化部新闻宣传中心联合主办的 企业数字化转型论坛 在2023中国国际服务贸易交易会期间召开 论坛以 数字化引领 高质量发展 主题 旨在探讨信息技术如何与各行业深度融合 构建数字化转型新格局 赋能产业高质
  • 【转载】如何使用VSCode编译IAR

    参考原址 https blog csdn net lczdk article details 114639094 总结 安装IAR For Visual Studio Code插件 使用VSCode打开IAR prj 当前发现最方便的方法是
  • JVM第三讲 JVM从底层原理分析类加载过程

    类加载运行全过程 其中loadClass的类加载过程有如下几步 加载 gt gt 验证 gt gt 准备 gt gt 解析 gt gt 初始化 gt gt 使用 gt gt 卸载 加载 在硬盘上查找并通过IO读入字节码文件 使用到类时才会加
  • # Maven系列 - 覆盖父级pom文件某jar包版本

    Maven系列 覆盖父级pom文件某jar包版本 一般公司都会有统一的父级pom文件 指定一些通用的jar版本 比如fastjson 假如出现漏洞 最近fastjson就出现了漏洞 需要升级fastjson包 具体有哪些方式呢 具体方式 1
  • Centos7:yum安装MySQL5.7后如何设置root密码

    Centos下安装软件的方式很简单 只需要通过yum install xxx命令即可 第一步当然检查是否有mysql的yum源 命令 yum list grep mysql community 主要还是安装开源的社区版 如果没有如图所示的和
  • Subgraph Retrieval Enhanced Model for Multi-hop Knowledge Base Question Answering

    本文是LLM系列的文章 针对 Subgraph Retrieval Enhanced Model for Multi hop Knowledge Base Question Answering 的翻译 用于多跳知识库问答的子图检索增强模型
  • 共享内存在每个进程里的映射地址是不同的

    共享内存可以说是最有用的进程间通信方式 也是最快的IPC形式 两个不同进程A B共享内存的意思是 同一块物理内存被映射到进程A B各自的进程地址空间 进程A可以即时看到进程B对共享内存中数据的更新 反之亦然 由于多个进程共享同一块内存区域
  • Q格式代码配置

    最近准备自己搞实现一遍电机的foc代码 Q格式 TI的dsp的IQmath学习 自己实现的基本的Q格式的配置 brief Q format Conversion date 2020 11 7 author wangchongwei Q fo
  • python环境与模块日常:Anaconda搭配SublimeText3配置环境,安装Anaconda插件自动补全,conda、pip基础指令与镜像代理

    最近重装SublimeText3和Anaconda 然后安装了pyquery包 跑代码 from pyquery import PyQuery as pq 在cmd gt python Anaconda Prompt gt python A
  • Java开发案例:使用JDBC技术来实现QQ登录

    在实际开发中 用户信息是存放在数据库中的 登录时的账号和密码信息也需要去数据库中查询 本节将使用JDBC技术来完善QQ登录案例 1 创建数据表 并添加用户数据 在jdbc数据库中创建数据表tb qquser 并在表中插入3条数据 其执行的S
  • git 的 Debug分支

    Debug分支 在项目的正常开发过程中 之前发布过的版本可能很会出bug 这时就需要停下来现在的开发任务 先去修改bug 完成后再回来继续开发任务 git中stash提供了保存现场的功能 可以把当前工作区 暂存区中的内容不需要提交而保存下来
  • 上架发布应用市场资料准备iOS和Androd

    一 应用市场 App Store 网站 https itunesconnect apple com login 帐号 密码 360手机助手 网站 http open app 360 cn 帐号 密码 安智市场 网站 http dev anz
  • Linux中的叹号命令

    http blog sina com cn s blog 531bb76301013ulf html 整天在shell环境下操作 不积累点快捷输入的小技巧是不行的 最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了 这些对