bash使用技巧整理
2016-10-20 01:20
183 查看
说明:
这些技巧主要来自history&read line这两个库,下文中的技巧也适用其它使用该库的应用程序。bash命令可以使用ctrl + alt + e展开,参数使用ctrl x + *(glob-expand-word)展开,以查看是否与期望相符。
bash命令历史可以看成是Emacs里的一个buffer,与emacs中快捷键类似,使用bind -P命令可以查看所有readline键盘绑定。
ESC和ALT通用,只是有时其中的一个更方便使用。
连续输入几条命令之后考虑下有没有可以提高效率的地方。
I. history
^foo 删除上一条命令中的foo^foo^bar 将上一条命令的第一个foo改为bar
!! 重新执行上一条命令
!N 重新执行第N条命令
!-N 重新执行倒数第N条命令
!string 重新执行以字符串开头的命令
!?string? 重新执行包含字符串的命令
!$ 上一条命令的最后一个参数
!^ 上一条命令的第一个参数
!cmd:n 上一条命令的第n个参数
!* 上一条命令的所有参数
!*:x x表示修饰符
:s/old/new/ 对第N条指令中第一次出现的new替换为old
:gs/old/new/ 全部替换
:n 取指令的第w个参数
:p 回显命令而不是执行
:h 选取路径部分dirname
:t 选取文件名部分basename
:r 选取文件名filename
:e 选取扩展名
实例演示
root@ADT:~# rm /usr/lib/libtpn_http.so
root@ADT:~# cd !:$:h #切换到/usr/lib目录下
II. read line(Emacs风格)
移动类
Ctrl + a(head) 移到命令行首Ctrl + e(nd) 移到命令行尾
Ctrl + f(orward) 右向按字符前移
Ctrl + b(ackward) 左向按字符后移
Alt + f(orward) 右向按单词前移(以空格,斜线,点号作为word边界))
Alt + b(ackward) 左向按单词后移(以空格,斜线,点号作为word边界))
Alt + < 移动到历史记录的开始行
Alt + > 移动到历史记录的末尾行
Ctrl + x + x 在命令行首和光标之间位置切换
删除类
Alt + # 注释当前行Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Ctrl + w 从光标处删除至字首(以空格作为word边界)
ESC + Backspace 从光标处删除至字首(以空格,斜线,点号作为word边界)
Alt + d 从光标处删除至字尾
Ctrl + d 删除光标处的字符
Ctrl + h 删除光标前的字符
Ctrl + y 粘贴至光标后
大小写快速转换
Alt + c 从光标处更改为首字母大写的单词Alt + u 从光标处更改为全部大写的单词
Alt + l 从光标处更改为全部小写的单词
顺序快速调换
Alt + t 交换光标处和之前的单词Ctrl + t 交换光标处和之前的字符
撤销修改
C-/ 或 C-_Alt+r 撤销当前行的所有内容
清屏
Ctrl + lclear
查找历史命令
Ctrl + r逆向搜索历史命令行和当前命令行TIPS : 在当前行中搜索,可以快速定位到需要修改的字符:P
Ctrl + g终止搜索并还原原始命令行
Ctrl + j终止搜索并停留在查找的位置,直接使用ESC也可以实现该功能
Ctrl + p历史中的上一条命令
Ctrl + n历史中的下一条命令
alt + n\p非增量搜索
Ctrl + o执行当前命令,并选择上一条命令
插入数据
TAB completeESC + .
使用上次命令的最后一个参数,重复使用会获取上上次命令的最后一个参数,总共插入一个参数;
ESC-n + ESC + .
把上一条命令的第n个参数放在命令行上,如果重复使用,上次输出会被替换成上上条命令的第n个参数,总共插入一个参数;
Ctrl + alt + y
使用上次命令的第一个参数,如果重复使用会插入多个参数;
ESC -1 + Ctrl + alt + y
使用上次命令的最后一个参数,如果重复使用会插入多个参数;
ESC + * insert-completions
插入所有可能的补全
列出参考
ESC + ? 显示所有可用候选项ESC + ! complete-command
ESC + / complete-filename
~TabTab | ESC + ~ complete-username列出所有系统用户
$TabTab | ESC + $ complete-variable 列出所有系统变量
@TabTab | ESC + @ complete-hostname列出所有主机
=TabTab 列出当前目录下的所有文件和目录
III. 常用配置
避免重复和无用的命令加入历史记录export HISTIGNORE="&:ls:ls *:mutt:[bf]g:exit"
定制上下箭头补全bash历史命令:
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
定制Ctrl+Alt+f/b在多个文件路径之间快速移动,即以空格作为word边界移动:
bind '"\e\C-b": shell-backward-word'
bind '"\e\C-f": shell-forward-word'
IV. 其它命令
如果频繁地在多个较长的目录之间转换,使用pushd代替cd或者使用export CDPATH=/path1:/path2(类似PATH)删除某个文件之外的所有文件:(shopt -s extglob; rm -rf !(filename))
查看指定进程id但不显示grep的id:ps aux | grep 'ss[h]' #grep和正则结合,利用正则和本身字面值不同
汇总文本第三列数字的和: awk '{ x += $3 } END {print x }' myfile
快速创建一个大文件:dd if=/dev/zero of=/tmp/test bs=1M count=2048
临时修改影响程序的环境变量,而不影响其它进程: ENV_VAR=VALUE your_program
使用{}构造字符串,使用` ` 或 ()做命令替换
develop@localhost:~$cp file.c{,.bak} —> cp file.c file.c.bak
develop@localhost:~$vim {a,b,c}file.c —> vim afile.c bfile.c cfile.c
develop@localhost:~$touch {01..5}.txt —> 01.txt 02.txt 03.txt 04.txt 05.txt
相关文章推荐
- CListCtrl 使用技巧(整理补充)
- Bash 使用技巧
- Bash 使用技巧
- bash参数使用技巧
- Bash 使用技巧大补贴
- Bash readline 使用技巧
- Linux/Unix下Shell快捷键操作大集合及部分Bash使用技巧-另附Ubuntu常用快捷键
- Bash 使用技巧大补贴
- Bash 编程和使用零散整理(个人所用非系统化笔记,更新时间2011.2.4)
- WinEdt使用技巧整理
- 整理VC的使用技巧(1)
- Bash 使用技巧
- ACCESS中使用SQL语句应注意的地方、与sql server的区别及几点技巧(整理中)
- Bash 使用技巧大补贴
- C高级使用技巧整理
- Bash 使用技巧大补贴(转)
- ACCESS中使用SQL语句应注意的地方、与sql server的区别及几点技巧(整理中)
- 利用BASH提权的技巧,使用SU创建用户
- Linux/Unix下Shell快捷键操作大集合及部分Bash使用技巧-另附Ubuntu常用快捷键
- PLSQL Developer使用技巧整理