群里有人问“问个问题,Linux 命令行有没有快捷键一下从行末会到行头?经常敲了很多命令发现忘加 sudo 了,然后把命令删了重新敲一遍”。
自己还真不知道怎么操作,只知道历史命令可以使用上下光标切换。
正好早上微博有人科普,感谢龙浩的 blog 的总结,我也补充点知识,纠正一下百度知道上关于 “HISTFILESIZE” 和 “HISTSIZE” 的区别错误回答。
好吧,开始说说历史记录个数的 “HISTFILESIZE” 和 “HISTSIZE” 的区别,
默认情况下 HISTFILESIZE 和 HISTSIZE的值都是 500,表示可以记录 500 条命令记录。
- HISTFILESIZE 表示记录在文件中的命令条数
- HISTSIZE 表示记录在内存中的命令条数
当我们在 shell 命令行执行命令的时候,最近的 HISTSIZE 条命令被保存在内存当中可以使用上下光标或者 ctrl+p,ctrl+n 上下查找命令。
当退出 shell 时 HISTFILESIZE 条命令被保存到历史命令文件中,下次登录 shell 时会从历史命令文件中读取命令道内存历史命令道中。
当网络中断等异常时,你会发现之前的历史命令,下次登录时用上下光标找不到上次的历史命令,所以要正常退出或者发送探测包保持 shell 在线。
如果想增加历史命令保存的数量,可以在 ~/.bash_profile 中手动修改 HISTFILESIZE 和 HISTSIZE 这两个变量的值。
搜索操作快捷键
搜索历史命令的快捷键:Ctrl + r
它是通过关键字去匹配历史记录,执行后会提示:(reverse-i-search)`':
输入你记得的关键字去匹配,如果出现你需要的命令,按Enter就可以选择命令;如果不是请输入更精确的关键字去匹配。
移动操作快捷键
Ctrl + f-- 向右移动一个字符,当然多数人用→
Ctrl + b-- 向左移动一个字符, 多数人用←
ESC + f-- 向右移动一个单词,MAC下建议用ALT + →
ESC + b-- 向左移动一个单词,MAC下建议用ALT + ←
Ctrl + a-- 跳到行首
Ctrl + e-- 跳到行尾
删除操作快捷键
Ctrl + d-- 向右删除一个字符
Ctrl + h-- 向左删除一个字符
Ctrl + u-- 删除当前位置字符至行首(输入密码错误的时候多用下这个)
Ctrl + k-- 删除当前位置字符至行尾
Ctrl + w-- 删除从光标到当前单词开头
命令切换操作快捷键
Ctrl + p-- 上一个命令,也可以用↑
Ctrl + n-- 下一个命令,也可以用↓
其他操作快捷键
Ctrl + y-- 插入最近删除的单词
Ctrl + c-- 终止操作
Ctrl + d-- 当前操作转到后台
Ctrl + l-- 清屏 (有时候为了好看)
学完这几个快捷键组合,回答一下开始的问题吧,相信大家自己也试过了,就是ctrl+a快捷键能使光标回到行首。
原文发布时间为:2013-09-06