Linux 探索之旅 | 第二部分第六课:Nano 文本编辑器和终端配置

-- 简书作者 谢恩铭 转载请注明出处

内容简介


  1. 第二部分第六课:Nano文本编辑器和终端配置
  2. 第二部分第七课预告:软件安装,如虎添翼

Nano,初学者的文本编辑器


上一课 Linux探索之旅 | 第二部分第五课:用户和权限,有权就任性 中,我们学习了不少知识点,估计大家都比较辛苦。

这一课比较简单,没有什么太难的概念。不过这一课会讲如何配置终端噢。

大家可以 泡个泡面,烤只烤鸡;剥个卤蛋,慢慢来看。

之前的课程中,我们已经学会了在终端中用多种不同的方式来查看文件的内容,但是我们还不知道如何在终端中修改文件的内容。

为什么我们把文本编辑器推迟到现在来说呢?因为这是终端可以提供的强大功能之一。

在Linux终端的文本编辑器当中,比较著名的有:Nano,Vim,Emacs,等等。其他文本编辑器还有Gedit,Sublime等等。当然了,我们不可能列举所有的文本编辑器,太多了。

在这些文本编辑器当中,Nano是比较适合初学者上手的。之所以称其为初学者的文本编辑器,绝没有贬低Nano的意思,Nano的功能很强大,只是比较容易入门。

之后的课程我们会用专门的一课来学习Vim,要入门Vim可能需要下点功夫。然后也会聊聊Emacs。

小编写过一篇关于Emacs的文章:程序员小助手 | Emacs,最强编辑器,没有之一

Nano初体验


说起nano这个英语单词,很多人可能不陌生。

nano是“毫微”的意思,也就是10的-9次方。
著名的纳米科技的“纳米”就是nanometer,由nano和meter组成,nano是“十亿分之一”,meter是“米”。
所以纳米就是十亿分之一米。
「一米」与「一纳米」的大小相比較,相当于地球的直径和地球上的一颗玻璃弹珠之间的差距。

我们这个文本编辑器叫做nano,应该是取其“短小精悍”的寓意吧。“麻雀虽小,五脏俱全”。

Nano相比Vim或Emacs,确实小巧简单很多,不及后两者复杂和强大。但是对于入门文本编辑器还是很合适的。

Nano是一个文本编辑器,不是文本处理器


你真知道什么是文本编辑器吗?它和文本处理器又有什么区别呢?

  • 文本编辑器:是这样一种软件,它可以编辑和查看文本文件,但是不能对文字做格式处理(例如:加粗,斜体,改变颜色,改变字体大小,添加超链接等等)。
    常见的有Windows下的记事本,Mac OS X下的文本编辑,Linux下的vi、emacs、gedit,DOS下的edit等。在Linux下,默认系统中至少安装了一种文本编辑器。当然,在Mac OS X下,nano也是默认安装的。

  • 文本处理器:也是一种软件,又叫文档编辑器,不仅可以编辑和查看文档,而且可以对其文字进行格式处理(加下划线,设为标题,插入图片等等)。这些软件只能在图形界面下使用。
    常见的有Windows下的Word,Mac OS X下的Pages,Linux下的OpenOffice Writer等。

文本编辑器处理的文件格式和文本处理器的文件格式一般也不同。

那么什么时候我们需要用到文本编辑器呢?

我们可以用文本编辑器来编辑纯文本文件。纯文本格式,就是没有任何文本修饰的,没有任何粗体,下划线,斜体,图形,符号或特殊字符及特殊打印格式的文本。只保存文本,不保存其格式设置。

在Windows下,我们比较熟悉的纯文本文件就是.txt结尾的文本文档了。在Linux和Mac OS下,后缀名没那么重要,不少纯文本文件是没有后缀名的。

文本编辑器对于程序员来说又是必不可少的。它可以让我们编辑各种编程语言的代码程序:.c(C语言代码文件),.cpp(C++代码文件),.py(Python代码文件),.php(PHP代码文件),.java(Java代码文件),.xml(XML代码文件)等等。

总之,如果你“不幸”成为了一个程序员,那么文本编辑器的学习是逃不了的,这是你的吃饭家伙。

即使你不是程序员,不需要写代码,但是很多系统的配置文件也需要用文本编辑器来编辑。

在学习了如何使用Nano之后,我们会学习如何修改两个配置文件:.nanorc和.bashrc。这两个文件能让我们分别配置nano和终端。

揭开Nano的面纱


Nano的全称其实是GNU Nano。还记得我们的老朋友GNU么?

是的,就是那个我们提过的GNU项目,在Linux探索之旅 | 开宗明义+第一部分第一课:什么是Linux?中讲过。

GNU还有个基金会,由Richard Stallman(理查德·斯托曼)于1985年10月创建,叫自由软件基金会(英语:Free Software Foundation,FSF)是一个致力于推广自由软件的美国民间非营利性组织。其主要工作是执行GNU计划,开发更多的自由软件。

GNU计划(英语:GNU Project),又译为“革奴计划”,一个自由软件集体协作项目,1983年9月27日由理查德·斯托曼在麻省理工学院公开发起。它的目标是创建一套完全自由的操作系统,称为GNU。理查德·斯托曼最早在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。 GNU是“GNU is Not Unix”(意思是“GNU不是Unix”)的递归缩写。为避免与单词gnu(非洲牛羚,发音与“new”相同)混淆,斯托曼宣布GNU发音应为“Guh-NOO”(/ˈgnuː/ ),与“canoe”发音相似。其中,Emacs就是由这个计划孵化而出。

我们的Linux的全称也是GNU Linux。因为Linus Torvalds基本只是开发了LInux的内核,Linux的外部程序都是来自世界各地的GNU社区程序员编写。

Nano的设计灵感来自于一个叫Pico的文本编辑器,pico是“10的-12次方”,万亿分之一,比nano还要小1000倍。我们平时说的皮米picometer(由pico和meter(英语“米”)连结而成),就是万亿分之一米。

当然了,nano其实也是 Nano is ANOther editor(意思是“nano是另一种编辑器”)的递归缩写。

有趣的老外最爱在编程里用递归来命名了。比如Linux是Linux is not Unix(意思是“Linux不是Unix”)的递归缩写。

启动nano


因为Ubuntu预装了nano,因此要启动nano,只需要在终端中输入

nano复制代码

回车,就打开了nano文本编辑器:

如上图所见,我们的Nano文本编辑器就是长这样的,是不是很简洁?

而你现在就可以在里面输入文字了,如下图:

看到了吗,我输入了两句英语。

Hello, how are you ?  (Hello,你好吗?)

I am typing in nano, it is wonderful...  (我正在nano里打字,棒极了...)复制代码

Nano就是这么方便,因为并不是所有文本编辑器都可以一上来就输入文字的。比如Vim,要输入文字还得先做其他操作,以后的课会学到。

如果你有使用Emacs的经验,那你可能觉得这一点和Emacs还挺像的,Emacs也是一上来就可以输入文字。

Nano中的键盘快捷键


在上图中的终端下部,我们可以看到有两行帮助文档,如下图:

^ 这个符号表示键盘的Ctrl键,所以这些都是Nano的快捷键组合。比如,^X标明的是Exit,那么就是退出Nano,因为exit是英语“退出”的意思。

这些快捷键组合中虽然字母都是大写,但其实就是键盘上对应的字母键,并不需要用Shift键来将其变为大写。

以下给出一些常用的Nano组合快捷键:

  • Ctrl+G:显示帮助文档

  • Ctrl+O:保存文件

  • Ctrl+R:打开其他文件

  • Ctrl+Y:上一个屏幕

  • Ctrl+V:下一个屏幕

  • Ctrl+K:剪切当前一行

  • Ctrl+X:退出

  • Ctrl+W:查找

  • Ctrl+U:黏贴刚剪切的内容

  • Ctrl+/:替换

  • Ctrl+F:向前移动一格光标

  • Ctrl+B:向后移动一格光标

  • Ctrl+P:向上移动一行

  • Ctrl+N:向下移动一行

其他还有不少快捷键,一般Nano都会在你操作的屏幕上提醒。所以很方便。但是再论学好英语对编程的帮助,看到这些提示了吗?都是英语写的。对于程序员, 为什么英语比数学更重要? 如何学习

当然了,我们用键盘上的方向键(上,下,左,右)也可以控制光标移动。PaUp和PaDn也分别与Ctrl+Y和Ctrl+V功能一样。

如果你比较熟悉这些快捷键组合之后,你觉得nano下方的帮助文档有点碍眼,那你也可以让它消失,只要先按Esc键,再按X键,帮助文档就没了。如果要重新调出帮助文档,则同样操作。

Nano的参数


刚才我们打开nano时,是单独用了nano这个命令。当然,nano命令也可以带参数的。

最常用的参数当然就是要打开的文件名咯,例如:

nano file.txt复制代码

就会用nano打开file.txt,如果你对file.txt有写的权限,那你就可以用nano来修改这个文件了。

如果file.txt文件不存在,那么就会创建一个空文件,名字叫做file.txt,并用nano打开。

nano的其他参数有不少,不过小编挑了三个个人觉得比较实用的:

  • -m:激活鼠标。如果没有-m参数,那么鼠标在nano里是不起作用的,加了-m参数鼠标可以通过点击来控制光标的位置。

  • -i:激活自动缩进的功能。这对于程序员写代码太有用了。

  • -A:激活智能Home键的功能。通常状况下,我们按下键盘的Home键,我们的光标会立即跳到一行的最开始,如果用了-A这个参数,那么按下Home键它会智能地判断,如果一行的开始处有缩进,那么它会使光标跳转到紧跟在缩进之后,而不是一行的最开始。

如果我们要同时激活三个属性,只需要这样用:

nano -miA file.txt复制代码

通过.nanorc来配置Nano


现在,既然我们已经初步了解了如何使用nano(当然了,要熟练使用还需要多实践咯)。

我们也看到,nano实在很易用,只需要熟悉一些常用的键盘快捷键组合就可以了。

在今天这课的开始处,我们说了要学习用文本编辑器修改一些配置文件。

Nano也有一个配置文件,用于设置nano的一些选项。这个文件叫做 .nanorc

注意,.nanorc的最前面有一个点,表明这是一个隐藏文件。
像这样的配置文件,如果用ls -l命令是列不出来的,需要用ls -a来列出。

一般Linux中的配置文件大多以点开头,而且多以rc结尾。比如vim的配置文件 .vimrc,bash shell的配置文件.bashrc,等等。

那这个rc是什么意思呢?当然了,不理解rc什么意思没有关系,不过我们来满足一下自己的好奇心:

Linux或Unix的许多程序在启动时,都需要“rc”后缀的初始文件或配置文件。

“rc”,它是“runcomm”的缩写――即“run command”(运行命令)的简写。 "rc" 是取自 "runcom", 来自麻省理工学院在 1965 年发展的 CTSS系统。相关文献曾记载这一段话:"具有从档案中取出一系列命令来执行的功能;这称为 "run commands" 又称为 "runcom",而这种档案又称为一个 runcom (a runcom)。

" rc”是很多脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。如/etc/rc(连接到/etc/rc.d/rc)是Linux启动的主脚本,而.bashrc是当Linux的bash shell启动后所运行的脚本。

每个Linux的用户都可以在自己的家目录创建.nanorc这个文件,在每次nano启动前,它会读取此配置文件。

在小编的情况,因为我的用户名是oscar,所以我的.nanorc文件应该是 /home/oscar/.nanorc

但是,我查找了,在我的家目录中,并没有.nanorc这个文件。在你的情况,可能有,也可能没有。但是不要紧。因为如果在你的家目录没有.nanorc,那么nano会用全局的配置文件。

创建.nanorc


如果你的家目录里也没有.nanorc,那么你可以创建一个。怎么创建呢?很简单:

nano .nanorc复制代码

在这个.nanorc文件中,你可以输入你的配置信息。

每一行一句配置语句,配置语句是以set(用于激活。set是英语“放置,设置”的意思)或unset(用于关闭)开头,后接你要配置的项目。例如:

set mouse复制代码

这句话就用于激活鼠标(mouse是英语“鼠标”的意思)。有了这句话,那么每次nano启动时都会激活鼠标操作了,我们启动nano就不必写-m这个参数了,是不是很方便?

我们也可如法炮制,使得我们不用每次启动nano都加上-i和-A参数:

set autoindent复制代码

这句是用于激活自动缩进,相当于-i参数的作用。

set smarthome复制代码

这句用于激活智能Home键。

如下图所示:

如果要保存文件,只要按下Ctrl+O,它会提示你文件名是.nanorc。因为我们已经指定了文件名,直接按下回车,这三行就写入到了.nanorc中。可以看到终端提示:[Wrote 3 lines],表示“写入了3行”。

如果你完成了配置,那么可以按下Ctrl+X来退出nano。

下次你再启动nano的时候,你会发现:鼠标被激活了,自动缩进也激活了,智能Home键也激活了。

配置文件可以大大提高我们的工作效率。

全局的nanorc和语法高亮


在每个用户的家目录中的.nanorc这个文件非常实用,因为它可以帮助你设置自己的nano选项。

但是,如果你的Linux系统中有几十个用户,你想要为所有这些用户都激活nano的鼠标操作,难道你要登录每一个用户的账户,然后在他们各自的.nanorc中添加 set mouse这句话么?那上百个用户呢?岂不是要累坏了。

Linux系统的开发者早就想到了这一点。事实上,nano有一个全局的配置文件,是为系统上所有用户所公共调用的,也叫nanorc,但是在/etc中,是/etc/nanorc。这回nanorc前面没有点了。

这个全局的nano配置文件只能被root用户修改,因为是在系统文件夹/etc中。

在我们以前的课程Linux探索之旅 | 第二部分第三课:文件和目录,组织不会亏待你中,我们介绍过/etc这个目录,它里面存放系统的配置文件。一般为所有用户共用。

因此,如果我们要修改这个文件,建议用sudo命令。

sudo nano /etc/nanorc复制代码

输入你的用户密码,就打开了这个配置文件,如下图:

可以看到这个配置文件内容就很多了,当然也有很多是注释,也就是以#开头的。你可以向下滚动这个文件,会发现有300行(小编的情况)。

在这个配置文件里,有所有可以放置在你自己的.nanorc中的语句。比如 set autoindent。但是这些配置语句都是以#开头,就是说默认是注释掉的,也就是说在全局说来,这些配置语句不生效。如果你在/etc/nanorc中把那些配置语句前面的#去掉,就会对全局用户生效了。

在这个/etc/nanorc文件的结尾处,你会看到有一块专门设置语法高亮(就是文本会有颜色之分)的区域,如下图:

比如,有C/C++代码的语法高亮,nanorc文件的语法高亮,CSS文件的语法高亮,下面还有很多类型的文件的语法高亮。

在小编的情况,这些include前面并没有#,就是说语法高亮对所有用户都是开启的,但你的情况也许每个include语句前面有#号,表示没有开启全局的语法高亮,建议删除那个#,来开启。

按Ctrl+O来保存修改,然后Ctrl+X退出。当然,也可以直接Ctrl+X,它问你是否保存修改,输入y(表示yes,“是”)或n(表示no,“不是”)或Ctrl+C取消。

通过.bashrc配置终端


对于nano,我们有一个配置文件叫.nanorc。其实对于我们的终端,也有一个配置文件,叫做.bashrc,这是用户个人的终端配置文件。在小编的情况,位于 /home/oscar/.bashrc

这个文件一般来说是默认存在的。不像我们的.nanorc可能还要自己创建。

我们打开家目录下的终端配置文件看看,只要输入以下命令:

nano ~/.bashrc复制代码

.bashrc文件比较复杂,初看可能会有点眼花缭乱的感觉。我们暂时不会深入学习它的语法,因为其实bash是一种shell。

我们以后的课程会重点来学习shell。暂时只要理解了解shell是外壳程序(shell是英语“外壳”的意思),是用于解释我们输入终端的各种命令的。

Shell是一个用户跟操作系统之间的一个命令解释器,也就是用户与Linux操作系统之间沟通的桥梁。

bash是最常用的一种shell程序,Ubuntu和大部分常见的Linux发行版默认的shell程序就是bash。

.bashrc就是bash这个shell程序的配置文件。

所以bashrc本身的语法也是bash的语法,是一种脚本语言。我们以后会学到,暂时不需要理解。

我们在之前的课程Linux探索之旅 | 第二部分第二课:命令行,世界尽在掌握中讲过,我们可以通过配置文件来修改我们的命令行提示符:

oscar@oscar-laptop:~$复制代码

你的情况肯定和我不一样,我们在以前的课程中也解释过命令行提示符的各个部分的含义。

在.bashrc文件中,我们可以修改命令行提示符的样式,如果你觉得目前的命令行提示符太繁琐太长了,你可以把它改短一些,简洁一些。

把我们的.bashrc文件向下拉,可以看到有好几行类似这样的:

上图中,我们看到有PS1开头的行。这个就是设置命令行提示符的样式的。

\u表示用户名(例如小编的用户名是oscar),\h是电脑的名称(小编的情况是oscar-laptop),@就是分割用户名和电脑名的那个@号。等等。

如果你学过shell语法,那么你可以试着修改。

这里我们不带大家修改了,因为比较复杂,对于初学者来说,不要把.bashrc文件搞乱了为好。

不过我们来学习一下如何将命令行提示符设为高亮(就是不再是白色的了,而是彩色的)。

看到有一行是#force_color_prompt=yes 了吗?

去掉 #force_color_prompt=yes 最前面那个分号之后,保存退出,再启动一个新的终端,可以看到我们的命令行提示符已经高亮显示了,有颜色了,是不是感觉颜值瞬间提高了很多?嗯嗯。

创建别名


别名是这样一些命令,在你运行时会转换为其他命令。就好比我的英文名是oscar,那别人呼叫oscar的时候,我知道其实是叫我。

别名的英语是alias。如果我们向下查找我们的.bashrc文件,会发现有alias开头的行,如下所示:

也不难理解:

  • 当我们在终端输入比如ll(两个小写的L),其实就是等同于 ls -alF

  • 当我们在终端输入比如la,其实就是等同于 ls -A

  • 等等。

所以说,别名设置得好,可以降低我们的工作量,因为输入ll总比输入ll -alF简单吧。

在.bashrc中创建别名的语法是这样的:

alias name='command'复制代码

name就是别名的名字,而command就是替换别名的实际的终端命令。

全局的bashrc


之前的nano有全局的配置文件:/etc/nanorc

我们的终端所有的bash也有它的全局配置文件:/etc/bash.bashrc

对于每个用户来说,家目录下的.bashrc文件的优先级比系统的/etc/bash.bashrc文件高。
例如同样的配置选项,如果.bashrc和/etc/bash.bashrc不同,那么以.bashrc的为准。

profile配置文件


在我们的家目录下,其实还有一个.profile文件,而且它也有对应的全局profile文件,是 /etc/profile

profile在英语中是“外观,轮廓”的意思。那么这个profile文件和bashrc有什么区别呢?

简单来说是这样的:

  • profile这个配置文件是用户登录的终端的配置文件,也就是我们以前学过的tty1~tty6这6个命令行终端(没有图形界面的,分别通过Ctrl+Alt+F1~F6进入)。profile是这些需要登录的,非图形界面的终端的配置文件。

  • bashrc这个配置文件是不用用户登录的终端,也就是我们一直在使用的终端形式,图形化的终端的情况。这种终端是读取.bashrc为配置文件的。

有一点需要记住:profile文件会调用.bashrc,所以其实我们修改了.bashrc,也就是间接修改了profile文件。因为profile文件会用profile本身的配置再加上.bashrc的配置。

可以用下图帮助理解:

在我们修改了.bashrc和profile文件后,默认是在用户下次登录系统时才能生效。但是我们可以用source命令来使改动立即生效:

source .bashrc复制代码
source .profile复制代码

总结


  1. 文本编辑器也是一种程序,它可以打开文本文件(比如说Windows中的记事本就是一种文本编辑器),也可以用于修改文件内容(如果有写的权限的话)。我们程序员经常用文本编辑器来编写代码,也会用它来修改配置文件。

  2. 有一些文本编辑器功能非常完善,可以做很多事情,例如Vim和Emacs。

  3. Nano是最容易上手的文本编辑器之一,所以我们初学Linux的时候才会用它来做例子。

  4. 在Nano中我们可以用很多键盘快捷键来帮助我们:Ctrl+w用于查找;Ctrl+x用于退出;Ctrl+o用于保存,等等。

  5. 我们可以用Nano来修改.bashrc这个终端的配置文件,也可以修改.nanorc这个nano的配置文件。这样我们就可以定制我们的软件了。

第二部分第七课预告


今天的课就到这里,一起加油吧!

下一课我们学习:Linux探索之旅 | 第二部分第七课:软件安装,如虎添翼


微信公众号「程序员联盟」ProgrammerLeague
我是谢恩铭,在巴黎奋斗的软件工程师。
我的简介
我的经历
热爱生活,喜欢游泳,略懂烹饪。
人生格言:“向着标杆直跑”

你可能感兴趣的:(Linux 探索之旅 | 第二部分第六课:Nano 文本编辑器和终端配置)