Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29110
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-17 23:38
文章分类

全部博文(7)

文章存档

2014年(7)

我的朋友

分类: LINUX

2014-07-25 10:32:06

Bash的使用GUN readline库来处理用户输入,所以BASH也有emacs/vi 两种模式(主要是快捷键不同)
一般来说BASH缺省是emacs模式,如果想变成vi模式(如果你是vi用户)就可以了,然后你就可以用和vi一样的快捷键来编辑命令行了.
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.
!# 重复当前已经输入的命令行.

单词指示
0 即零,第零个单词。对大多数命令来说,它指命令名
n 第n 个单词
^ 第1 个参数(单词)
$ 最后一个参数(单词)
% 最近%string% 匹配的单词
x-y 单词范围 0-y 可以写作 –y
* 除了第零个以外的所有单词 同1-$
x* x-$的简写,同x*
如果用单词指示符时没有用条目指示符,则把前一条目作为条目

.
修饰符
在可选的单词指示符后面,可以加上下列一个或多个修饰符号,每个修饰符以 :开始
h 去掉文件名的尾部,只留头部
t 去掉文件名的头部,只留尾部
r 去掉结尾的扩展名
e 去掉扩展名以外的所有部分
p 打印新的命令而不执行
q 引用替换后的单词,以备进一步替换
x 同q ,同时还在空格、制表符、换行符的地方把单词隔开
s/old/new/ 把条目中第一个old替换为 new。 / 可以为任何分隔符
& 重复上次替换
g /a 使替换在整个条目中执行,同 s一起使用
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

转载:
阅读(1328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~