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

目录

前言;

  • 快速编辑 Shell 命令行;
    为什么那么多人害怕命令行呢?
    我目前使用的系统配置

一、自动补齐:[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 命令及可执行程序路径的设置》

转自: http://www.linuxsir.org/main/?q=node/151#5

快速编辑 Shell 命令行相关推荐

  1. linux shell 宏定义_Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

  2. 122.Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

  3. 13分页和shell命令行模式

    技术交流QQ群:1027579432,欢迎你的加入! 本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源! 1.为什么先讲分页功能 2.快速添加新的博客 shell命令行模式 ...

  4. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  5. Ubuntu 新建用户 Shell 命令行显示异常

    目录 相关环境 问题描述 问题原因 解决方法 解决方法一 解决方法二 附录 相关环境 Ubuntu 20.04  问题描述 在使用 Ubuntu 系统 root 用户创建一个普通用户后,发现 Shel ...

  6. 快乐的shell命令行

    快乐的shell命令行 PART1--基础 1.权限 #超级用户权限 $普通用户 2.复制粘贴 复制:鼠标左键沿着文本拖动高亮的文本被复制到X管理的缓冲区(或者双击一个单词) 粘贴:鼠标中键 3.简单 ...

  7. 2021年大数据Hadoop(八):HDFS的Shell命令行使用

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的Shell命 ...

  8. golang 命令行_如何使用Golang编写快速有趣的命令行应用程序

    golang 命令行 by Peter Benjamin 彼得·本杰明(Peter Benjamin) 如何使用Golang编写快速有趣的命令行应用程序 (How to write fast, fun ...

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

    几种在shell命令行中过滤adb logcat输出的方法 分类标签: LogCat  ADB 我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流 ...

最新文章

  1. E - 秋实大哥与战争
  2. 【SSH】——Hibernate三种状态之间的转化
  3. C++检查图是否为二部图的算法(附完整源码)
  4. java判断读到末尾_Flink实战:自定义KafkaDeserializationSchema(Java/Scala)
  5. 睡眠音频分割及识别问题(一)
  6. c++ 三维数组 初始化_013 JAVA 多维数组及数组的拷贝、冒泡排序、二分法查找...
  7. 从相识到相惜:Redis与计算存储分离四部曲
  8. 微信公众号,微信授权进不去
  9. J2EE6 servlet session超时机制
  10. C# 以MDF文件连接数据库
  11. IDEA 各版本下载地址
  12. 想转行学IT,到底要不要去培训机构?
  13. igs时间和utc_世界协调时间(UTC)与中国标准时间
  14. 计算机RAM ,ROM,NOR FLASH ,NAND FLASH和手机RAM,ROM大家庭血缘关系图
  15. 叫我大掌柜怎么改地区
  16. vue结合Waterfall做图片瀑布流展示
  17. 存算分离后,VxRail动态计算节点构建虚拟化更给力
  18. Java 高并发第三阶段实战---Java并发包深入解析与使用详解
  19. mmdetection训练自己的VOC数据集及常见问题
  20. java 基本数据类型的默认初始值

热门文章

  1. SpringBoot+Vue使用Get请求时提示:Error parsing HTTP request header
  2. ASP.NET中使用Cache类来缓存页面的信息
  3. Jquery控制select实现dataTables数据联动刷新
  4. 过程质量保证PQA的几个关键方面
  5. 软件需求说明的前世和今生
  6. vscode快捷键大全
  7. 因为有了这个画图工具集,老师同学都说我画的图有特色(Processon,draw.io,Xmind)
  8. 周四话运营:如何提高用户留存?
  9. 融 360、中邮消费金融、作业帮分享数据分析产品选型心得
  10. 极致的线上产品设计与终极数据分析工具,两者缺一不可(中)