bash使用技巧整理
来源:互联网 发布:知乎怎么看匿名回答 编辑:程序博客网 时间:2024/06/14 16:07
说明:
- 这些技巧主要来自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 + l
clear
查找历史命令
Ctrl + r逆向搜索历史命令行和当前命令行
TIPS : 在当前行中搜索,可以快速定位到需要修改的字符:P
Ctrl + g终止搜索并还原原始命令行
Ctrl + j终止搜索并停留在查找的位置,直接使用ESC也可以实现该功能
Ctrl + p历史中的上一条命令
Ctrl + n历史中的下一条命令
alt + n\p非增量搜索
Ctrl + o执行当前命令,并选择上一条命令
插入数据
TAB complete
ESC + .
使用上次命令的最后一个参数,重复使用会获取上上次命令的最后一个参数,总共插入一个参数;
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
0 0
- bash使用技巧整理
- Bash readline 使用技巧
- Bash 使用技巧
- Bash Shell使用技巧
- Bash 使用技巧
- bash参数使用技巧
- bash使用技巧
- shell Bash使用技巧
- bash使用小技巧
- bash shell 使用技巧
- Bash readline 使用技巧
- Bash 使用技巧大补贴
- Bash 使用技巧大补贴
- Bash 使用技巧大补贴
- Bash 使用技巧大补贴
- Bash 使用技巧大补贴
- Bash功能与使用技巧
- linux bash shell 使用技巧
- 没有为SQL缓存通知启用数据库"某某某" ,使用Sql缓存依赖前,先调用EnableTableForNotifications通知数据库SqlCacheDependencyAdmin.Enabl
- fedora24安装flash插件
- 【poj 1505】 Copying Books
- 阿里云ECS用docker安装IPsec VPN
- PHP 模板方法模式
- bash使用技巧整理
- 【PAT甲级】【C++】1005. Spell It Right (20)
- JAVA GC机制
- 详解Java GC的工作原理
- 电路图1
- 51Nod-1294-修改数组
- 电路图
- Swift String 高级使用 Index 和 Rang
- 电路图