Linux bind命令介绍
bind命令是Bash shell的内置命令,它用于设置Readline的键绑定和变量。键绑定是指键盘上的动作和函数之间的关联。所以,你可以用bind命令来改变Bash对键盘上的按键或组合键的反应。Readline是一个库,它提供了命令行编辑和历史记录功能,许多程序都使用了它,比如Bash,GDB,Python等。
Linux bind命令适用的Linux版本
bind命令适用于所有安装了Bash和Readline的Linux版本,你可以用bash --version和ldd /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-COMMAND | bind -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命令,只要它们是有效的。
      
      
      
评论区