zoukankan      html  css  js  c++  java
  • linux console hot key

    在Linux环境里,有一些按键有特殊的含意。
    # Ctrl-U: 擦除一行光标前面的部分。
    # Ctrl-H: 擦除光标前面的一个字符。
    # Ctrl-D: 终止输入。(退出 shell,如果您正在使用 shell 的话)。
    # Ctrl-C: 终止当前正在运行的程序。
    # Ctrl-Z: 暂停程序。
    # Ctrl-S: 停止向屏幕输出。
    # Ctrl-Q: 重新激活向屏幕输出。

    默认的 shell,`bash’, 有历史编辑和 tab 补齐功能。


    # up-arrow: 开始历史命令搜索。
    # Ctrl-R: 开始增量历史命令搜索,可以按照关键字查查自己用过哪些命令。
    # TAB: 完整的把文件名输入到命令行。
    # Ctrl-V TAB: 输入 TAB 而不是扩展命令行。
    # Ctrl + P - 上一条命令
    # Ctrl + N - 下一条命令
    # Ctrl + U: 擦除一行光标前面的部分。
    # Ctrl + Y - 粘贴前一Ctrl+U类命令删除的字符 ,是粘贴不是撤销啊!

    下面的应用可能稍稍高级一点点
    # !! - 上一条命令
    # !-n - 倒数第N条历史命令
    # !-n:p - 打印上一条命令(不执行)
    # !?string?- 最新一条含有“string”的命令
    # !-n:gs/str1/str2/ - 将倒数第N条命令的str1替换为str2,并执行(若不加g,则仅替换
    第一个)

    其他一些有用的按键组合。
    Ctrl-Alt-Del:挂起或者重新启动系统,这三个按键在Linux下可以轻松地修改成关机的操
    作,这对于单用户的朋友还是很方便的

    # Ctrl + l - 清屏
    # Ctrl + A - 光标移到行首
    # Ctrl + E - 光标移到行尾
    # Ctrl + W - 清除光标之前一个单词
    # Ctrl + K - 清除光标到行尾的字符
    # Ctrl + T - 交换光标前两个字符
    # Ctrl + V - 输入控制字符 如Ctrl+v ,会输入^M
    # Ctrl + F - 光标后移一个字符
    # Ctrl + B - 光标前移一个字符
    # Ctrl + H - 删除光标前一个字符
    # N++F - 光标后移N个单词,N为1时可省略
    # N++B - 光标前移N个单词,N为1时可省略
    # Left-click-and-drag mouse: 选择并且拷贝到剪贴板。
    # Click middle mouse button: 使用剪贴板的内容粘贴。
    # Meta-key (Emacs terminology) 传统的是使用 Left-Alt-key.

    Linux的一个特色就是其命令多而且功能强大, 频繁输入命令不仅麻烦而且工作量较大,虽然可以使用TAB进行>;命令补足,或者使用aliase来简化某个命令的输入,但这并不能从根本上解决敲击键盘次数过多的问题。

    可以把任何命令或命令的组合指定给键盘上的某个键,可以是Alt+[A-Z],
    Ctrl-[A-Z], Alt+Shift+[A-Z], F1-F12, Ctrl-F[1-12], Alt-F[1-12], Alt+Shift+F[1-12],还有更不可思议的是甚至还可以为功能键加上“参数”,这样你按下那个键的时候,它会等待你输入相应的参数,并根据不同的参数运行不同的命令。

    当然,有一些热键会被终端所捕获,如常见的Ctrl-D/C/Q/Z等,不过没关系,可用的热键还多着呢!

    定义热键的配置文件为:/etc/inputrc 或 ~/.inputrc,定义热键的格式如下:

    "<热键对应的ASCII字符>;":"<执行的命令>;"

    其中热键对应的ASCII字符可以通过 "先按Ctrl-V, 然后按热键" 的方式来输入, 如Ctrl-G对应的字符为^G, Alt-P对应的字符为^[p, Ctrl-Alt-H对应的字符为^[^H.

    可以用C来代替Ctrl,M来代替Alt, M-C来代替Alt-Ctrl, 如C-M = Ctrl-M, M-C-H = Alt-Ctrl-M. 另外还可以用e代表^[.

    先来看一些基本的热键定义,(这里热键里的字母不区分大小写):
    "^[-":"su -C-M" # 按Alt+- 执行su - 命令,末尾C-M表示输入完定义的命令后回车,也可以更简洁地用一个 来表示.

    "M-C-G":"gaim & &>;/dev/null && disownC-M"
    # 按Ctrl-Alt-g在当前shell打开gaim, 并脱离该shell独立运行,即:即使你退出了该shell, gaim也不会关闭

    其他一些组合键可以根据自己的需要配置,偶就不多说了.

    大家也许会觉得这样定义热键太乱了,而且很难记住,还有一定的限制。这个问题在后面会得到解决。

    一般情况下,我们可以使用上下方向键来查找命令历史列表,以此重复输入命令,但是方向键离主键盘区太远,如>;果频繁使用的话,会耽误不少时间,而且挪动右手时也不太方便,有没有什么办法把方向键的功能转移到我们经常>;敲命令的地方呢? 如使用Alt+J = Down Arrow 向下查找,Alt+K=Up Arrow 向下查找

    通过定义热键可以做到这点:

    "eh":"^[OD" # move left
    # Alt-H 向左移一个字符, 相当于Left Arrowgh, 这里^[OD即向上方向键的ASCII字符,输入方式与前面提到的类似
    "el":"^[OC" # move right
    # Alt-L 向右移一个字符,相当于Right Arrow

    "ej":"^[OB" # move up
    # Alt-J 向下移动,相当于Up Arrow

    "ek":"^[OA" # move down
    # Alt-K 向上移动,相当于Down Arrow

    "ei":"^?" # left earse one character
    # Alt-I 向左删除一个字符,相当于Backspace

    "eo":delete-char # right earse one character
    # Alt-O 向右删除一个字符,相当于Delete

    "en":backward-kill-word # left kill one word
    # Alt-N 向左删除一个单词

    "em":kill-word # right kill one word
    # Alt-M 向右删除一个单词

    "ea":"^[n^[n^[n^[n^[n^[n^[n" # kill to the head
    # Alt-A 删除当前位置到开头,也就是多Alt-N几次(A-->; ahead)

    "ee":"^[m^[m^[m^[m^[m^[m^[m" # kill to the head
    # Alt-E 删除当前位置到末尾,也就是多Alt-M几次(E-->; end)

    "ep": insert-last-argumem"
    # Alt-P 插入上一个命令最后一个参数 (P-->; Paste)

    "ew": forward-word
    # 系统默认Alt-F (forward)跳到当前单词词尾,如果已在词尾,则跳到下一个单词(右边一个单词)词尾

    "eq": backward-word
    # 系统默认Alt-B (backward)跳到当前单词词首,如果已在词首,则跳到上一个单词(左边一个单词)词首

    发觉F和B键离得太远,不方便,偶分别改作Alt-Q, Alt-W, 但是Alt-F/B照样可以用

    这样输入命令的时候几乎可以不用离开主键盘区,而且移动光标,删除字符,删除单词,上下历史命令查找都集中>;在一块,比以前方便多了。 不过开始可能有些不习惯,就跟使用vi一样,但是多练几次就熟练了。

    Linux下绝大部分服务的配置是基于配置文件的,一般说来,更改了某个服务的配置文件,要使其立即生效,还需重启该服务直接的或依附的守护进程才行。难道你就不觉得“每次 vi /etc/xxx.conf 完后又 service xxx restart/reload 或 killall -HUP xxx”这样做很繁琐么?如果要配置的服务较多而且要不停地调试呢?况且我们平常使用Linux时难免会不时地终止或启动某个服务进程,输入命令的次数也不少。如果为每个服务都指定一个热键的话,似乎不大可能。如果我们赋予一个热键为一个基本键,而相应的服务为其“参数”,那又如何呢?

    举个例子,赋予Alt-S (S-->;Start)为启动服务的基本键,服务名的前2个字符为启动“参数”,那么就可以像下面那样随意启动某个服务了:
    "essm":"service smb start "
    # es=Alt-s, sm=smb,
    # 即:按下Alt-s后紧跟着再输入sm(这时输入的sm并不会显示在终端上),就可以启动samba的服务进程了,不必担心按下键与输入“参数”间的时间延迟问题,你按下Alt-s,然后去外面兜一圈回来,再接着输入sm,照样可以。

    "esht":"service httpd start " # ht=httpd,启动Apache服务

    类似地,我们赋予
    Alt-D(D-->; shutDown) 为停止服务的基本键
    Alt-R(R-->; Restart) 为重启服务的基本键
    Alt-T(T-->; Status) 为查看服务状态的基本键
    Alt-C(C-->; Configure) 为打开服务对应的主配置文件的基本键
    如:"ecnf":"vi /etc/exports " # Alt-c+nf 打开NFS的配置文件
    "ecsm":"vi /etc/samba/smb.conf " # Alt-c+sm 打开smb的配置文件

    如果某个服务(如ssh)有2个配置文件,可以在其后再加一个数字,如:
    "ecssh1":"vi /etc/ssh/sshd_config " # 打开sshd服务端配置文件
    "ecssh2":"vi /etc/ssh/ssh_config " # 打开sshd客户端配置文件

    如果要执行某个应用程序呢?可以用Alt-x做基本键(x-->; eXeccute) 如:
    "exga":"gaim & &>;/dev/null && disown && clean "
    "exxm":"xmms & &>;/dev/null && disown && clean "
    "exvm":"vmware & &>;/dev/null && disown && clean " "exna":"nautilus & &>;/dev/null && disown && clean "
    等等....

    到现在为止我们只要按1个组合键+2个字符就可以实现下面众多的功能:
    1. 执行指定的应用程序
    2. 启动|重启|关闭|指定的服务进程
    3. 查看指定服务的状态
    4. 打开指定服务的指定配置文件

    thinking and coding
  • 相关阅读:
    如何使用jackson美化输出json/xml
    使用Jackson在Java中处理JSON
    用 Jackson 来处理 JSON
    writeValueAsString封装成工具类
    周鸿袆:360回归是出于国家安全考虑(硬件有硬件独特的规律,硬件不可能有很高的利润,核心的价值还是硬件背后承载的软件和云端的服务)
    Unicode 7.0.1中文支持非常好
    六个编程范型将改变你对编程的看法(好多奇怪的语言和奇怪的想法)
    delphi多版本安装方法
    UAC就不能一次添加、永久信任吗?
    数学符号及读法大全
  • 原文地址:https://www.cnblogs.com/codesir/p/4198080.html
Copyright © 2011-2022 走看看