侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux bind命令:如何自定义你的键盘操作

Linux bind命令介绍

bind命令是Bash shell的内置命令,它用于设置Readline的键绑定和变量。键绑定是指键盘上的动作和函数之间的关联。所以,你可以用bind命令来改变Bash对键盘上的按键或组合键的反应。Readline是一个库,它提供了命令行编辑和历史记录功能,许多程序都使用了它,比如Bash,GDB,Python等。

Linux bind命令适用的Linux版本

bind命令适用于所有安装了Bash和Readline的Linux版本,你可以用bash --versionldd /bin/bash | grep readline来检查你的系统是否满足这些条件。如果你的系统没有安装Bash或Readline,你可以用你的包管理器来安装它们,比如在CentOS 7上,你可以用yum install bash readline,在CentOS 8上,你可以用dnf install bash readline

Linux bind命令的基本语法

bind命令的语法如下:

bind [-lpsvPSVX] [-m keymap] [-q name] [-f filename] [-u name] [-r keyseq]  [-x keyseq:shell-command] [keyseq:readline-function or readline-command]

其中,各个选项的含义如下:

  • -l: 列出所有的函数名。
  • -p: 以可重用的形式列出函数和绑定。
  • -P: 列出函数名和绑定。
  • -s: 以可重用的形式列出调用宏的键序列和它们的值。
  • -S: 列出调用宏的键序列和它们的值。
  • -v: 以可重用的形式列出变量名和值。
  • -V: 列出变量名和值。
  • -m keymap: 在当前的命令序列中使用KEYMAP作为键映射方案。可接受的键映射方案有:emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, 和 vi-insert。
  • -q name: 查询哪些键调用了指定的函数。
  • -u name: 解除绑定所有绑定到指定函数的键。
  • -r keyseq: 移除KEYSEQ的绑定。
  • -f filename: 从FILENAME中读取键绑定。
  • -x keyseq:shell-command: 当输入KEYSEQ时,执行SHELL-COMMAND。
  • -X: 以可重用的形式列出用-x绑定的键序列和相关的命令。

Linux bind命令的常用选项说明

bind命令有很多选项,但是有些比较常用,下面是一些常用选项的说明和示例:

选项说明示例
-m keymap切换键映射方案bind -m vi 切换到vi模式
-l列出所有的函数名bind -l
-p以可重用的形式列出函数和绑定bind -p
-P列出函数名和绑定bind -P
-v以可重用的形式列出变量名和值bind -v
-V列出变量名和值bind -V
-q name查询哪些键调用了指定的函数bind -q yank 查询调用yank函数的键
-u name解除绑定所有绑定到指定函数的键bind -u yank 解除绑定yank函数的键
-r keyseq移除KEYSEQ的绑定bind -r "\C-y" 移除Ctrl+y的绑定
-f filename从FILENAME中读取键绑定bind -f bind 从bind文件中读取键绑定
-x keyseq:shell-command当输入KEYSEQ时,执行SHELL-COMMANDbind -x "\C-l:date" 当输入Ctrl+l时,执行date命令

Linux bind命令的实例

下面是一些使用bind命令的实例,它们可以帮助你更好地理解和使用这个命令。

切换到vi模式

如果你习惯了vi编辑器的操作方式,你可以用bind命令来切换到vi模式,这样你就可以在命令行上使用vi的快捷键了。要切换到vi模式,只需要输入:

[linux@bashcommandnotfound.cn ~]$ bind -m vi

要切换回emacs模式(默认的模式),只需要输入:

[linux@bashcommandnotfound.cn ~]$ bind -m emacs

查询和修改键绑定

你可以用bind命令来查询和修改键绑定,比如,你可以查询调用yank函数(粘贴剪切板内容)的键是什么:

[linux@bashcommandnotfound.cn ~]$ bind -q yank
yank can be invoked via "\C-y".

你可以看到,yank函数可以通过Ctrl+y来调用。如果你想改变这个键绑定,比如改成Ctrl+i,你可以输入:

[linux@bashcommandnotfound.cn ~]$ bind "\C-i":yank

这样,你就可以用Ctrl+i来粘贴剪切板内容了。你可以再次查询yank函数的键绑定,看看是否生效:

[linux@bashcommandnotfound.cn ~]$ bind -q yank
yank can be invoked via "\C-i", "\C-y".

你可以看到,yank函数现在可以通过Ctrl+i或Ctrl+y来调用了。如果你想解除绑定Ctrl+y,你可以输入:

[linux@bashcommandnotfound.cn ~]$ bind -r "\C-y"

这样,yank函数就只能通过Ctrl+i来调用了。

从文件中读取键绑定

如果你有很多自定义的键绑定,你可以把它们写在一个文件中,然后用bind命令来从文件中读取它们。比如,你可以创建一个文件叫bind,内容如下:

"\C-i": yank
"\C-l": clear-screen
"\C-g": abort

这个文件定义了三个键绑定,分别是Ctrl+i绑定到yank函数,Ctrl+l绑定到clear-screen函数,Ctrl+g绑定到abort函数。要从这个文件中读取键绑定,你可以输入:

[linux@bashcommandnotfound.cn ~]$ bind -f bind

这样,你就可以使用这些键绑定了。

执行shell命令

你可以用bind命令来绑定一个键序列到一个shell命令,这样当你输入这个键序列时,就会执行这个shell命令。比如,你可以绑定Ctrl+l到date命令,这样当你输入Ctrl+l时,就会显示当前的日期和时间:

[linux@bashcommandnotfound.cn ~]$ bind -x "\C-l:date"
[linux@bashcommandnotfound.cn ~]$ # 按下Ctrl+l
2023年11月10日 星期五 09:24:07 CST

你可以绑定任何你想要的shell命令,只要它们是有效的。

0

评论区