Linux--初学者的生存指南

2020-11-08 13:53:17

从Windows切换到Linux可能真的很可怕。但如果你能挺过头几个月,最终的回报将是指数级的。这就是我是如何幸存下来的。

虽然我只是个Linux的业余爱好者,但我能够挺过过渡期,而且确实从中受益良多。这些就是我给那些面临类似情况的人的笔记。

选择Ubuntu开始吧。一旦你更了解并能自己决定,你就可以选择其他口味。

熟悉以下命令ssh、pwd、ls、cd、mv、cp、scp、grep、find、rm。提示:您可以使用https://tldr.ostera.io/cp获取这些命令最常用的选项列表。

学习使用|符号。使用此符号,可以将一个命令的输出作为输入传递给下一个命令。

在我的第一家公司,我们广泛使用Windows,无论是我们用于开发的台式机,还是我们部署代码的服务器。但当我搬到我的第二家公司时,所有的一切都是在OSS上进行的,因此在那里使用Linux是强制性的。这对我来说是一项艰巨的任务。在第一个月左右的时间里,这是一场噩梦。

在经历了这场噩梦并幸存下来之后,我列出了这份清单,以帮助其他像我一样试图实现这一转变的人。

总体而言,转型是艰难的。新的环境可能会令人恐惧。如果您是从未使用过命令行的Windows用户,那么过渡到Linux可能会非常可怕。不要担心,因为这通常是许多正在经历这种转变的人的经历。知道别人也觉得很难,有时真的会让人感到安慰。

在我看来,让过渡变得困难的两个主要原因是:不熟悉和害怕搞砸。

为了解决熟悉的问题,我开始在我的办公室笔记本电脑和我的个人笔记本电脑上使用Linux。我开始阅读关于Linux的博客,并在Twitter上关注了一些有趣的Linux相关账号。我联系了擅长Linux的人。我会走到他们的隔间,让他们给我看他们的指挥历史。我从这件事中学到了比读博客多得多的东西。大多数时候,由于这只是肌肉记忆,程序员无法解释。但他们的历史是一座宝库。

我建议运行以下命令。您将深入了解您的Linux英雄经常使用的命令。

历史|awk‘{$1=“”;打印$0}’|排序|uniq-c|排序-nr|head-20。

在您办公室的Linux专家的终端上运行该命令。向他们询问一些你不熟悉的命令,你应该能够学到比几本书教会你的更多的东西。不要忘记,这些都是经过战斗考验的命令,因此比博客中的标准示例更有价值。如果您无法理解上面的命令的作用,请不要担心--我将在本文后面对其进行解释。

我使用Linux已经有几年了,但我仍然有这种恐惧。当我开始的时候,这种恐惧是多方面的。对我帮助很大的一件事是,我和我公司的Linux专业人士谈过,并列出了一份黑名单--一份我永远不应该使用或谨慎使用的命令清单。数都RM-RF在榜单上名列前茅。如果你像我一样焦虑,你可以在你的本地机器上使用https://github.com/nivekuil/rip。

当我处于害怕搞砸的阶段时,这位YouTube用户帮了我大忙:克里斯提图斯。我真希望我能多花点时间观察他,多学几个他的把戏。找到你的天使,他们会帮助你面对恐惧。

你应该学习Linux的原因有很多。在谷歌上搜索一下,你会找到成千上万篇关于为什么你应该学习Linux的文章,比如“学习Linux有什么好处”,“为什么你应该转向Linux”,以及“在学习编程的同时学习Linux值得我花时间去学习吗?”这三篇文章值得一读,但以下是我认为你应该学习的两个最重要的原因:

Linux无处不在:Linux无处不在。因此,不管您是否了解,您很有可能已经在使用Linux或从Linux中受益。因此,了解Linux的基础知识在许多情况下都会派上用场。如果你是一名程序员,那么这种可能性相当高。相当数量的应用程序部署在Linux服务器上。因此,学习它可以是救命稻草。

Linux是通用的:Linux和MAC都构建在UNIX上。因此,如果您对Linux终端感到满意,那么您应该也能够使用MAC终端中的大多数命令。Android使用Linux内核。覆盆子PI使用Linux。许多嵌入式设备使用Linux。

正如我们所看到的,学习Linux有很多原因。但如果你是一名程序员,你很有可能属于以下两个类别之一:

你读到了Linux可以做的很酷的事情,或者你从一个朋友那里听到了对Linux的赞不绝口。

您的笔记本电脑或台式机安装了非Unix操作系统。但是您的应用程序或网站部署在Linux服务器上。

如果你属于第一类,你就有世界上所有的时间。所以好好享受你的甜蜜时光吧。如果你属于第二类,那么你很有可能是在赶截止日期。所以把接下来的部分做完,把你的手弄脏。

当你想学习Linux时,你得到的第一个提示之一是“使用man命令,它是你的朋友”。虽然这有一定的道理,但对于许多首次使用的用户来说,这可能是压倒性的。您通常需要的是该命令最常用场景的选项-而这正是手册页中所缺少的。幸运的是,有一个名为TLDR的项目正试图解决这个问题。

TLDR就像是关于我会为自己编写的命令的笔记。我发现它很方便。我使用NodeJS命令sudo npm i-g tldr安装了TLDR。如果您还没有安装NodeJS,我建议您安装NodeJS,因为有很多非常方便的节点包。您可以使用Digitial Ocean的本安装手册安装NodeJS。

我想在这篇文章中分享我关于所有命令的笔记,但后来我看到了安德鲁的一篇文章,他涵盖了101个bash命令:101个bash命令和给初学者的专家提示*Andrew Jan 13·39分钟阅读下面的命令或多或少是以一种叙事式的风格列出的,所以如果你刚刚读到…。*开发至。

他把所有的命令都归类了,也有很好的例子,我不能做得比这更好了。

我发现bash配置文件或bash配置文件非常方便,因此有助于了解它们之间的区别以及它们的工作原理。

我遵循的一个经验法则是将我的所有配置添加到.bash_profile中,并确保在.bash_profile文件中加载.bashrc。我将我最喜欢的别名添加到此文件中。我将我的.bash_profile的一个基本版本保存在我的私人指南中,并将其原始版本下载到我需要它们的服务器上。

这些天我一直在寻找的一件事就是共同性。这帮助我在多种情况下利用我所知道的。例如,我们在团队中推出了很多Javascript,因为我们可以在多个场景中使用它,比如我们的网站前端,在浏览器控制台快速抓取东西,调试我们的前端或向其他网站学习,在MongoDB中加入集合,在NodeJS中用于服务器端。

强调共同性有助于我们“学一次,受益多次”--获得更大的投资回报。

回到Linux,我想选择一个命令行编辑器。我可以选择Nano、Vim或Emacs。我选择了Emacs。

Emacs中使用的大多数命令也可以在Linux Shell中使用。例如,您可以使用CTRL/CMD+A在Shell和Emacs上转到行首。在Shell和Emacs中都可以使用很多这样的命令。我认为这是一个巨大的优势。

由于它是一个命令行编辑器,您可以很容易地将其安装在任何服务器上。在我作为超级用户的每台服务器上,我通常都会安装Emacs。我不确定这是不是一种好的做法,但我总体上觉得它很方便。是的,我已经决定不学Nano或Vim。如果你想的话就烤我吧。

Linux中的管道命令允许您使用一个命令的输出作为下一个命令的输入。一旦掌握了grep、ort、awk、uniq、head和ail等几个Linux命令,这将非常有用。与这些命令配合使用的管道功能非常强大。例如,我从来不记得ls中只显示文本文件的选项是什么(我认为您也不应该记得)。我只运行以下命令。

例如,如果我们查看第一节中使用的历史处理命令:

历史|awk‘{$1=“”;打印$0}’|排序|uniq-c|排序-nr|head-20。

我们接受History命令的输出,并将其传递给awk,以便从输出中删除每行开头的行号。然后,我们将输出传递给排序命令,以便对其进行排序。然后,我们将传递输出uniq命令,以仅保留唯一行以及出现的次数。然后,我们将其传递给排序命令,以便以相反的顺序对其进行排序。然后,我们将其传递给head命令,以仅列出历史上最常用的20个命令。

如果您习惯于SDK和GUI编辑器,那么grep可能看起来没什么限制。但在大多数情况下,区别在于您可以链接grep命令的输出。这很方便。大多数情况下,我并不真正担心grep查询的性能。差别不大。只有当grep查询的性能很重要时,我才会花时间检查选项并对其进行微调。在所有其他情况下,我发现更好的方法是摆脱grep和管道,以得到我想要的东西。

因此,例如,当我想要检查已加载的服务列表时,我快速查看了模式并使用了以下命令。

我在这里所做的是,我已将结果集缩减为包含单词service的行,并再次从该结果集中筛选出也包含单词Load的行。假设除了要删除包含退出的行之外,还可以将查询修改为:

将grep与grep相结合可以在大多数情况下获得您想要的内容,而无需记住任何其他选项。

像这样的把戏还有很多。但我觉得这些应该足以让你迷上Linux,并激励你开始进一步探索它。

简短的回答是:很多。我的朋友查克里(Chakri)搜集了1500个网页,从这些网页中提取相关信息,并创建了一个方便的表格来进行自己的分析。代码是:

#!/bin/shfor i in{10000..11500}do wget-O-[http://](http://racetime.in/2019nebwdr/?bibNo=)[resultsite.com](http://racetime.in/2019nebwdr/?bibNo=11019\&;submit=SUBMIT)[/2019nebwdr/?bibNo=](http://racetime.in/2019nebwdr/?bibNo=)";$i";\&;submit=SUBMIT|grep“10 km”|sed-E‘s/<;tbody>;|<;\/tb\ody>;|<;\/table>;//g‘>;>;output.htmlone。

对我来说,在Linux上工作的主要目标是不被命令行和学习曲线搞得不知所措。我设计了我的学习路径来满足我的要求。如果这对你有效果,一定要让我知道。如果您也是成功从其他操作系统过渡到Linux的用户,请务必分享您的笔记。

当我们在学习一些东西的时候,我们在网上读到的东西太多了,需要跟踪。为此,我们建立了学习路径,帮助您在互联网上突出显示、做笔记和添加标签。把它想成是媒介,但在互联网上。