`

快速编辑 Shell 命令行

阅读更多

这片文章不错,做个备份,转载如下:

作者: robinswan
来自: LinuxSir.Org
摘要: 对于 Linux / Unix 这类从内核得到整体架构,再到哪怕是最小的一个应用小软件都以文本来支撑的系统,没有娴熟的命令行技巧确实是玩不转的。希望本文能对你提高命令行使用效率有帮助。

目录

前言;

一、自动补齐:[Tab]
二、查找和执行历史命令:[Ctrl + r]
三、取消本次命令输入:[Ctrl + c]
四、光标跳转快捷键;
五、编辑命令的快捷键;
六、配置提示;
七、综合练习;
八、关于本文;
九、相关文档;


++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++

前言

快速编辑 Shell 命令行

想起听得最多的就是 *nux 的初学者说最烦就是 Linux / Unix 的命令行,所以就有了这个题目。如果你是个性急的人可以先尝试下文章结尾的综合练习体会一下 Shell 的快捷键,也许这样再看全文会更有趣。

其实,命令行适应了,可能比图形界面更有效率。至少对我来说是这样,我现在一看见那些所谓的 IDE 就有眼花缭乱感觉,真正用来写代码的面积都被挤到只有一包烟那么大了,呵呵。有时为找个选项花很长时间找对话框,也很痛苦吧。

为什么那么多人害怕命令行呢?

我想最大的问题就是很多人觉得命令行的输入和编辑都很“慢”,很低效。但是对于 Linux / Unix 这类从内核得到整体架构,再到哪怕是最小的一个应用小软件都以文本来支撑的系统,没有娴熟的命令行技巧确实是玩不转的。希望本文能对你提高命令行使用效率有帮助。

但是由于 Linux / Unix 的发行版实在是太多,Shell 的主流版本也有好几个,所以,本文所说的内容,可能和你的系统有出入,但是思想是一样的,在你自己的平台上摸索一下,你也会找到你的平台太下编辑命令行的技巧和规律。

另外,Shell 的很多快捷键和 VIM, Emacs 的快捷键是相通的,所以,熟练使用 Shell 快捷键,对适应 *nux 下的其他软件有很好的启示作用。

命令行的技巧除了本文提到的,还有很多,你可以自己慢慢积累,收集和体会。当然如果你经常需要输入很繁琐的命令,那么建议你自己写 Shell 脚本,定义 function, alias 等技巧来实现。

我目前使用的系统配置

内核: 2.6.14-gentoo-r5;
系统发行版: Gentoo Linux -- 2005.1;
Shell 版本: Gun bash -- 3.00.16
X Server: Xorg -- 6.8.2;
窗口系统: Gnome -- 2.10.1;
终端: gnome-terminal -- 2.10.0;

现在就开始吧


一、自动补齐:[Tab]

这个技巧很多人都应该会了,就是当输入命令,目录或者是文件名的时候按 [Tab] 键。系统就会帮你补齐可能要输入的东西,如果有多个选择系统会列表出来。你可以看清楚之后再多输入一个或多个 charactor ,再按[Tab]。

实验:

$ ec

按[Tab], 补齐为:
$ echo


二、查找和执行历史命令:[Ctrl + r], [Ctrl + p], [Ctrl + n]

在终端中按捉 [Ctrl] 键的同时 [r] 键,出现提示:(reverse-i-search), 此时你尝试一下输入你以前输入过的命令,当你每输入一个字符的时候,终端都会滚动显示你的历史命令。当显示到你想找的合适的历史命令的时候,直接 [Enter],就执行了历史命令。

另外, [Ctrl + p][Ctrl + n] 快速向前或向后滚动查找一个历史命令,对于快速提取刚刚执行过不久的命令很有用。

实验:

$ echo "hello, world" [Enter]

$ hello, world

[Ctrl + r ] (接着输入 echo)

(reverse-i-search)`ch': echo "hello,world" [Enter]
$hello,world


三、取消本次命令输入:[Ctrl + c]

这个快捷键可以使你从一个可能你已经厌烦了的命令中安全地退出!!也许是个不值一提的小技巧,但是经验告诉我它很有用。很多 Unix 初学者会习惯性地按 [Enter] 以摆脱困境,但是说不定就会发生灾难性的事件,譬如删除了一个重要的配置文件:(


四、光标跳转快捷键:

为了方便大家记忆,加点英语助记语在后面 :)

[Ctrl + a] 跳转至命令行首    Ahead of line
[Ctrl + e] 跳转至命令行尾    End of line

[Ctrl + f] 向前跳转一个字符  jump Forward one character
[Ctrl + b] 向后跳转一个字符  jump Backward one character

[Alt + f] 向前跳转到下一个字的第一个字符
[Alt + b] 向后跳转到下一个字的第一个字符


五、编辑命令的快捷键:

[Ctrl + w] 向后删除一个字,用来对付刚刚输入的错误字很有用

[Ctrl + u] 从光标当前位置删除所有字符至行首
[Ctrl + k] 从光标当前位置删除所有字符至行尾

[Ctrl + d] 删除光标当前位置的字符

[Ctrl + y] 粘贴最后一个被删除的字

[Alt + d] 删除从光标当前位置,到当前字的结尾字符


六、配置提示;

如果你是用 Gnome 下的终端窗口 gnome-teminal ,上面的 Gnu Shell 快捷键会跟 Gnome 的窗口快捷键有冲突。

那么你需要做如下配置:

在 gnome-terminal 的菜单栏中选 "Edit" -] "Keyboard Shortcuts ..."打开 "Keyboard Shortcuts" 对话框,并勾选下面两个复选项

"Disable all menu access keys (such as Alt+f to open File menu)"
"Disable menu shortcut key (F10 by default)"

至于 KDE 下应该怎么配 KDE 的终端窗口,请熟悉 KDE 的朋友补充一下,我很久没用 KDE 了,也没装。


七、综合练习;

上面列举的快捷键,练习2~3天应该就能熟练,为了大家快速理解和记忆,我们来做个小小的综合练习:

第一步:echo

$ echo "hello, world." [Enter]

我们先输入 echo "hello, world" 这个命令,然后回车,也就看到了终端的输出:

$ hello, world.

第二步:[Ctrl + r]

我们试试找出历史命令 echo "hello, world.",这时,我们按[e],[c],[h]这三个键,这个历史命令大概已经找到了,
终端的显示应该是这样:

(reverse-i-search)`ech': echo "hello,world."

现在,如果[Enter]就会再一次执行这个命令,但我们现在来练习一下命令行的编辑。

第三步:[Ctrl + a]

这样,我们就取出了历史命令 echo "hello, world.",并且将光标定位到行首,此时,光标应该在 echo 命令的 e 字符上高亮。
终端的显示应该是这样:

$ echo "hello,world"


第四步:[Alt + d]

删除了命令 echo, 并且光标仍然在行首,终端显示为:

$ "hello, world."


第五步:输入命令 "printf"

我们尝试一下用 Posix 的系统调用 printf 来替代 shell 命令 echo,输入[p][r][i][n][t][f],此时终端显示为:

$ printf "hello, world."

并且光标在 f 字符后面高亮。

第六步:[Ctrl + e]

光标跳转到命令行尾部。

第七步:[Ctrl + b]

光标后退一个字符,此时光标应处于后双引号 " 处高亮。

第八步:输入换行转义符 "\n"

输入[\][n] ,此时的终端显示应该为:

$ printf "hello, world.\n"

可以[Enter]执行了。


八、关于本文;

当你熟练的时候,上面的步骤应该在20秒之内就完成了吧,希望大家都能成为命令行的高手!!!


九、相关文档;

《快速编辑 Shell 命令行》
《Linux Shell简介》
《Linux 命令及可执行程序路径的设置》

1
0
分享到:
评论
1 楼 niwtsew 2010-02-20  
本人用的是bash,感觉楼主的快捷键是在emacs模式下才有效,如果set -o vi 模式下不少快捷键就不生效。

相关推荐

    Linux 宝库 - 快速编辑 Shell 命令行.mht

    Linux 宝库 - 快速编辑 Shell 命令行.mht

    在Shell命令行处理JSON数据的方法

    jq 允许你直接在命令行下对 JSON 进行操作,包括分片、过滤、转换等等。 让我们通过几个例子来说明 jq 的功能: 一、输出格式化,漂亮的打印效果 如果我们用文本编辑器打开 JSON,有时候可能看起来会一团糟,但是...

    Linux命令、编辑器和shell编程

    对于想要深入理解和操作Linux的用户来说,掌握Linux命令、编辑器和Shell编程至关重要。本教程针对初学者,旨在帮助他们快速入门并精通这些基础知识。 1. **Linux命令**: Linux命令行界面是其强大的工具之一,它...

    win10如何快速打开CMD命令行窗口

    首先打开注册表编辑器(`Win + R`,输入`regedit`),导航至`HKEY_CLASSES_ROOT\Directory\Background\shell`。在这里,新建一个项,命名为“命令提示符”或你喜欢的名称,然后在新项下再新建一个名为`Command`的...

    Android shell命令行中过滤adb logcat输出的几种方法

    本文将详细介绍如何在Android shell命令行中使用adb logcat命令进行有效的日志过滤,提高开发效率。 首先,我们可以通过指定白名单来过滤输出,只显示我们需要的日志。这是通过管道操作与grep命令结合实现的。例如...

    linux-aliasme一个shell脚本用于在命令行中组织你的别名

    本文将深入探讨"aliasme",这是一个专门用于管理和组织Linux命令行别名的shell脚本。 "aliasme"是一款开源工具,旨在帮助用户更加系统地管理和定制他们的命令行别名。通过这个脚本,你可以更方便地创建、编辑和管理...

    HC110110009 命令行基础

    命令行编辑功能是VRP命令行的重要组成部分,提供了各种命令编辑功能来帮助网络管理员快速地配置和管理网络设备。主要包括光标移动、删除字符、补全命令等功能。 五、命令在线帮助 命令在线帮助是VRP命令行的重要...

    Shell脚本编程详解

    **编辑Shell程序** Shell程序通常是一系列Linux命令的组合,可以通过Shell解释器来逐条执行。下面是一个简单的示例,用于显示当前日期以及一条祝福语: ```sh #!/bin/sh echo "Mr.$USER, Today is:" echo "$(date ...

    eclipce开启命令行插件

    2. **自定义快捷键**:允许用户设置快捷键来快速打开命令行视图,提高工作效率。 3. **路径自动完成**:在输入命令时,插件可能会提供路径自动完成功能,减少手动输入的错误。 4. **环境变量集成**:插件会继承...

    shell shell练习 shell入门

    Shell是Linux和Unix系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过命令行执行各种操作。本篇文章将深入探讨Shell的基础知识,包括其概念、重要性、基本语法以及如何进行Shell编程练习...

    shellcmd_v2.1:添加右键菜单项以快速打开CMD/命令提示符/命令行/命令窗口/DOS

    标题“shellcmd_v2.1:添加右键菜单项以快速打开CMD/命令提示符/命令行/命令窗口/DOS”涉及的是一个实用工具,它通过批处理技术为Windows操作系统添加了一个功能,允许用户在桌面、文件夹或任何文件上右键点击,快速...

    LINUX命令、编辑器与SHELL编程PDF.part01

    本书覆盖超过80个核心工具、shell编程、编辑器和编程工具,能使您成为真正的Linux高手,它是掌握强大的Linux命令行的捷径。  本书是目前所能找到的最实用、最全面的Linux指南和参考手册,也是唯一一本提供以下全部...

    快乐的 Linux 命令行.pdf

    书中详细介绍了shell,它是命令行的精髓。Shell是一种解释器,接收用户输入的命令并执行。终端仿真器是我们在屏幕上看到的窗口,用于输入命令。首次接触时,你可能只是简单地键入一些命令,但很快就会发现命令历史...

    快乐的Linux命令行

    书中详细介绍了shell,这是Linux命令行的核心。shell是一种命令解释器,它接收用户的输入并执行相应的操作。在2.1章节中,讲解了终端仿真器,这是我们在图形界面上看到的命令行窗口。初次接触时,读者会了解如何启动...

    快乐的linux命令行

    - **命令行编辑**:在命令行中,高效地编辑命令可以大大提高工作效率。了解如何使用命令行编辑功能是非常重要的。 - **移动光标**:熟练掌握光标移动技巧可以节省大量时间。例如,使用`Ctrl+A`移动到行首、`Ctrl+E`...

    Linux命令行大全.pdf

    熟练掌握键盘高级操作技巧,如命令行编辑、移动光标、修改文本、剪切和粘贴文本、自动补全等,可以大幅提高用户使用命令行的效率。这些都是高级用户应当掌握的技巧。 权限管理是维护系统安全的重要部分,书中介绍了...

Global site tag (gtag.js) - Google Analytics