专栏首页蓝天Bash 强大的History 命令

Bash 强大的History 命令

Bash的使用GUN readline库来处理用户输入,所以BASH也有emacs/vi 两种模式(主要是快捷键不同)(4DOS没有) 一般来说BASH缺省是emacs模式,如果想变成vi模式(如果你是vi用户)就可以了,然后你就可以用和vi一样的快捷键来编辑命令行了.(4DOS没有) set -o vi 不好意思有点远了,接下来还是history命令方面 Emacs and Vi history 编辑快捷键: Emacs 模式: CTRL-p 历史列表上一个. CTRL-n 历史列表下一个. CTRL-r 向上搜索历史列表 (incremental search). CTRL-s 向下搜索历史列表 (incremental search). Meta-p 向上搜索历史列表 non-incremental search. Meta-n 向下搜索历史列表using non-incremental search. Meta-< 移动到历史列表顶端. Meta-> 移动到历史列表末尾. Vi 模式: k 历史列表上一个. j 历史列表下一个. /string or CTRL-r 向上搜索历史列表(正则表达式). ?string or CTRL-s 向下搜索历史列表(正则表达式). n  重复上次搜索(同方向)n次 N 重复上次搜索(反方向)n次 G 移动到历史列表第N行 (for example, 15G). /* * 题外话,linux/unix的系统设计原则是KISS,和M$系统不一样,两个系统理念完全相反。 * 同时M$一个公司控制,所以什么事情都大都是一个程序解决所有问题 * linux/unix系统,不是一个工具解决所有问题,是一个工具解决一个问题,多个工具融合解决复杂问题 * 所以大家的使用理念也不应该要求一样 * M$使大家变懒了,但是初学简单,两点间基本一条路,入门快,提高慢 * linux/unix相反,东西多,路子广,两点之间多条路径,入门慢,提高快 */ History 扩展(太灵活了): Event Designators: ! 开始历史命令代换. !! 上一条命令. !n 上n条命令. !-n 当前命令行数-n. !string 最近的以string开头的历史命令. !?string? 最近的包含string的历史命令 (后一个 ? 可省). ^string1^string2^  快速代换,重复上条命令,用string2替换string1. !# 重复当前已经输入的命令行. Word Designators (word designators follow the event designators, separated by a colon): 0 命令行第0个参数(恩,和c/shell 相似,通常是命令的名字,不知道 c/shell?那当我没说). n 命令行第n个参数. ^ 命令行第一个参数 (第二个单词) $ 命令行最后一个参数. % 上次?string?搜索匹配的单词. x-y x-y的参数 (-y等价于0-y). * 所有参数(就是不包括命令的名字). x* 与x-$相同. x- x到倒数地二个参数 . Modi ers (modi ers follow word designators, separated by a colon): h 删除所有后面的路径,只留下前面的 t 删除所有前面的路径,只留下后面的 r 删除后缀.xxx, 留下文件名 e 删除文件名, 留下后缀 p 打印结果命令,但不执行(恩,测试功能) q 防止代换参数被再次替换(Quotes the substituted words, escaping further substitutions.这是原文) x Quotes the substituted words, breaking them into words at blanks and newlines. s/old/new/ 字符串替换(正则表达式,又没听过?当我没说) & 重复上次替换 g 在当前行的所有单词范围执行s或者&命令(正则.....,算了). 下面是例子 History expansion examples: $ echo a b c d e (executes `echo ab c d e`) a b c d e $ echo !!:3-$ (executes `echo c d e`) c d e $ echo !-2:*:q (executes `echo 'a b c d e'`) a b c d e $ echo !-3:1:2:4:x (executes `echo 'a' 'b' 'd'`) a b d $ echo !-4:1-3:s/a/foo/:s/b/bar/:s/c/baz/ (executes `echo foo bar baz`) foo bar baz 上面这些+小小的技巧+小g,应该能实现4DOS的所有功能了把? 什么?还是不成,那你不适合linux/unix

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 统计UPD丢包工具

    下载位置:https://github.com/eyjian/libmooon/tree/master/shell

    一见
  • C/C++常见gcc编译链接错误解决方法

    用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例: -Wl,-Bstatic -lmysq...

    一见
  • Makefile和automake中判断CPU位数

    cpu_bit=$(shell getconf LONG_BIT) ifeq ($(cpu_bit),64)     MY_CXXFLAGS= else    ...

    一见
  • 初学者玩好Linux的建议

    我把之前的一些学习经验和方法跟大家分享下,希望对大家有所帮助: 一、玩好Linux一定要经常折腾,说白了,就是动手能力一定要强。 我初学Linux那...

    wangxl
  • 设计模式专题(二十) ——职责链模式

    设计模式专题(二十)——职责链模式 (原创内容,转载请注明来源,谢谢) 一、概述 职责链模式(Chainof Responsibility),是使多个对象都有...

    用户1327360
  • Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡)

    之前写的脚本中获取 IP 地址时,未考虑虚拟网卡的情况(docker 创建的虚拟网卡),导致脚本失败,故总结下网卡相关知识。

    叨叨软件测试
  • 如何在Ubuntu 14.04上设置生产Elasticsearch集群

    Elasticsearch是一种流行的开源搜索服务器,用于实时分布式搜索和数据分析。当用于开发以外的任何其他任务时,Elasticsearch应作为集群跨多个服...

    陈树丶
  • 微信、公网播放摄像机视频方案

    之前一直都是 描述easynvr的各种功能、应用场景。也介绍了几种可以将easynvr接入公网的方案。

    EasyNVR
  • 如何在CentOS 7上设置生产Elasticsearch集群

    Elasticsearch是一种流行的开源搜索服务器,用于实时分布式搜索和数据分析。当用于开发以外的任何其他任务时,Elasticsearch应作为集群跨多个服...

    吴凌云
  • 大朋全新E3头盔y与E-Polaris激光定位亮相CES 2017

    VRPinea

扫码关注云+社区

领取腾讯云代金券