Forgetful Alann

In youth we learn, in age we understand.

0%

Bash 行操作


Bash 内置了 Readline 库,提供了许多命令行操作的功能。

设置编辑模式


Bash 默认使用的是 Emacs 快捷键,可以临时更改成 vi 快捷键:

1
set -o vi

如果想要永久改动,需要修改 ~/.inputrc文件:

1
set editing-mode vi

关闭 Readline 库功能:

1
bash --noediting

光标移动


  • ctrl + a : 移动到行首
  • ctrl + e :移动到行尾
  • ctrl + b :向前移动一个字符
  • ctrl + f :向后移动一个字符
  • alt + b :移动到当前单词词首
  • alt + f :移动到当前单词词尾

清除屏幕


ctrl + l

编辑操作


有关编辑命令行内容的操作:

  • ctrl + d : 删除光标位置的字符,如果没有字符则退出终端
  • ctrl + w :删除光标位置前面的单词
  • ctrl + t :交换光标位置和前面位置的字符
  • alt + t :光标位置的词与前面的词交换位置
  • alt + l :光标位置至词尾转化为小写
  • alt + u :光标位置至词尾转化为大写

剪切粘贴:

  • ctrl + k :剪切光标位置到行尾的文本
  • ctrl + u :剪切光标位置到行首的文本
  • alt + d :剪切光标位置到词尾
  • alt + backspace :剪切光标位置到词首
  • ctrl + y : 在光标位置粘贴文本

Alt 键可用 Esc 键代替。

操作历史


  • Bash 的操作历史默认保存在 ~/.bash_history 中(zsh 保存在 .zsh_history 中),环境变量$HISTFILE保存了这个路径。

  • 语法 !string 可以从历史记录中匹配最近开头是 string 的命令。

1
2
echo hahaha
!e // 匹配 echo hahaha

注意,类似于模式扩展, !str会扩展历史命令,放在字符串中要小心,可以在 !前加反斜杠转义。

  • 使用 ctrl + r 可以搜索历史命令

history

使用 history 命令可以查看历史执行过的命令,越近的命令行号越大。

  • 如果不希望保存本次的操作历史,可以设置环境变量 HISTSIZE 为 0
1
export HISTSIZE=0
  • 可以使用行号执行对应的命令:
1
!100
  • history -c 可以清除操作历史

其它相关命令


  • !! :执行上一条命令
  • !n : 执行历史中的第 n 号命令
  • !-n : 执行之前第 n 条命令
  • !string : 执行最近一个以 string 开头的命令
  • !?String : 执行最近一条包含 string 的命令
  • ^str1^str2 :执行最近一条包含 str1 的命令,将其替换为 str2