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命令,只要它们是有效的。
评论区