那么,使用终端的好处是什么?[关闭]


62

我几天前刚刚安装了Ubuntu。据我所知,终端是任何Linux发行版的重要组成部分。我现在的问题是为什么?当我查找有关它的任何内容时,放置在终端中的命令都可以通过GUI轻松完成。那么,使用终端的好处是什么?

编辑:谢谢大家的回答。经过一番摸索之后,借助您的答案,我现在可以了解其用法。我可以自豪地说,在过去的三天里,我几乎一直在使用它,并且希望很快能更好地掌握脚本。


20
您所要求的事实表明Linux作为操作系统已离一切基于CLI的时代发展了!:-)
subeh.sharma 2012年

1
这个问题的明确答案可能是Eric S. Raymond的Unix编程艺术。对于更持愤世嫉俗的(或可能更实用)的观点,请参阅Joel Spolsky的关于双文化主义的文章。
丹尼尔·普赖登

1
从一般意义上讲,使用终端的优势是表现力。它与我们所拥有的“做我想做的”界面非常接近,没有混乱和模态,在时间和实用性方面都非常重要。-这还不够全面,不能就其本身提供答案,但是快速的声音字节有望有所帮助。
MrGomez'2

在使用Ubuntu的最近5年中,我不记得有一天没有使用终端机。这是我登录后打开的第一个应用程序(我已经自动完成了它的:-)),并且仅当我的PC关闭时才会关闭。
Vikrant Chaudhary '02

2
这个问题不适合我们的问答格式。我们希望答案通常包含事实,参考或特定的专业知识;这个问题可能会征求意见辩论争论民意调查或扩大讨论范围。
jrg

Answers:


79

Unix中的终端是一个很棒的强大工具。从Windows过渡时,很难理解这一点,因为Windows(cmd.exe)shell相当缺乏,我该怎么说。大多数* nix默认弹(bashzsh,等)有几大优势:

  1. 它通过POSIX和Single Unix规范进行了标准化,因此为一台计算机编写的脚本可能会在所有POSIX兼容机器上运行(假设您将自己限制在标准命令中,该命令很多)。Microsoft习惯于在某些版本中包含工具,而在其他版本中则不包含这些工具,这使批处理编程大受打击。

  2. 因为Unix是从终端开始构建的,所以大多数内容都可以从命令行进行配置。Windows在某种程度上可以做到这一点,但是他们选择放弃16位子系统和DOS。现在,GUI是更改Windows中某些功能的唯一方法。

  3. 因为它是如此灵活。可以将命令通过管道传递在一起(ls | grep filename),可以将其捕获(gcc program.c > ./standard_out 2> ./standard_error),也可以将其替换(ls /home/`whoami`ls /home/$(whoami)

  4. 因为UNIX实用程序旨在做一件事情,并且做得很好。只要观察一下awkgrepsedwget或其他的主机。它们自己完成一项任务,但是只要给出#3和#2,它们就可以构建为功能强大的表达式。

  5. 由于能够自动执行任务。cron和bash脚本可以简化或完全自动化长,复杂和/或重复的任务。

  6. 因为人类容易出错。相对较短的shell脚本可用于以一致的方式更改设置。可以将安全检查内置到脚本中,而不必依赖用户知道哪些命令可以在不同情况下安全运行。


10
我称之为'坏蜱......这是更好地使用ls /home/$(whoami)时下:-)
ℝaphink

19
我想说的是5.,即脚本的可能性。您可以使任何事情自动化,甚至当我想拖延时,我什至都有一个脚本可以随机播放我最喜欢的系列剧集...让您的PC运转几个轮子,您也许可以编写一个脚本,从冰箱里拿啤酒,如果你放进去cron,下班回来的时候它会在门口与你会面...
TC1 2012年

6
公平地说,PowerShell在可用性方面(尽管不是标准化)改善了Windows Shell的状况。
马修·弗莱申

4
我想补充一点平衡,并提到PowerShell,甚至在此之前,从Windows XP开始,完全有可能从Windows中的CMD提示符下完成大多数任务。如前所述,区别是命令行一直是并且继续在日常使用* nix时更加重要。这有好有坏的影响。
艾伦B

9
关于6的问题–发出命令通常比按照逐步的说明告诉您如何导航GUI容易。这就是为什么Web上的许多使用说明都使用命令行的原因。对于用户来说,通常也是如此-随着您获得更多的经验,使用CLI变得更快,更容易。
Phil

36

使用终端有很多优点。争论的范围从便利性,生产力到怀旧。这里有一些 :

  1. 您(而是我)有些事情根本无法使用GUI完成。不是因为它不可行,而是因为没有人愿意为这些命令编写GUI。例如,如果我想使用某些命令,则说mdf2iso要转换文件夹中的一大堆文件。我可以使用|运算符通过管道传递输出,并且只需一次操作即可完成。

  2. 对于我们许多人来说,这只是事情的原样。请记住,这与专业知识无关。我不是Linux专家,我只是普通用户,但是我更喜欢在任何可能的地方使用命令行。关于为什么应该使用它以及为什么要使用它,这并没有太多争论。

  3. 脚本是很强大的功能。您可以使用条件if和循环for等。并结合上面的功能来做各种事情。脚本的功能没有限制。您可以自动化满足您要求的复杂任务。对于此类情况,通常很难找到符合您要求的GUI应用程序。

  4. 您甚至可以在非常低的带宽设置下通过远程登录执行任务。

  5. 如果您可以将命令指定给其他人,则帮助,编写教程等会容易得多。这样,您不必截屏。这对被帮助的人也有另一个好处,这将我们带到了下一个要点。

  6. 使用命令行通常可以使您更好地了解自己在做什么和正在做什么。

  7. 最后,它只是更快。键入几个字母并按TAB比无休止的菜单选项单击要快得多。您可以!mo用来调用以mo(例如mount)等开头的最后运行命令。

我敢肯定还有其他一千个我未能提及的原因。


在某些任务中使用cli是“有益的”,但是对于90%的日常使用来说,没有人愿意使用cli命令来使事物最小化。我所看到的是它的优势,因为您可以如此高效地执行“此”操作,但这种操作仅发生一次,例如每月一次或设置计算机时。例如,仅要复制文件,您就需要编写段落,设置权限,检查,定义选项,提供正确的空间,注意正确的大小写,通读50个文件的列表,查找其权限...在Windows gui上,您可以按ctl + a .. alt + tab ctl + c。而您完成了
穆罕默德·乌默尔

命令行有一些令人非常满意的地方,发出命令并在接受静音的情况下正确执行命令,通常仅显示错误。我几乎总是喜欢在命令行上移动和复制文件,而不是通常令人沮丧且模棱两可的拖放体验。
亨利·佛罗伦萨

18

最终呢?因为您开始编写脚本,所以编写脚本的妙处在于:

您可以更改执行操作的脚本,而不必更改执行操作的方法。

您可以为终端编写脚本,而通常不能为图形程序编写脚本,因此这就是人们使用终端的原因。

但是我感觉到“为什么要使用终端?”的提示。在你的问题。我无法为您回答,您是您而我不是您,但是这个相关问题可能会为您提供一些见解:

人们如何/为什么最终使用命令行用户?

我认为您可以确定三个阶段:(1)不愿意使用;(2)了解舒适所需的最低限度;(3)找到喜欢脚本的人。在这三个级别中,一个都可以从终端中使用。找出自己的好奇心在哪里。而且,如果仅仅决定一个人想要学习Shell脚本,的确可以很快地通过这些阶段。

  1. “我需要这个程序,所以我想我将使用命令行。”

    通常,它开始是因为人们发现他们需要专业或棘手的东西,并且Google /论坛/朋友推荐的程序变成了命令行程序。因此,他们打开一个终端,然后输入指令告诉他们键入的内容,这就是他们使用终端的方式。使您使用命令行的此类程序示例:

    • LaTeX / TeX / ConTeXt(同一系统的不同样式)采用一个文本文件,并将其转换为漂亮的PDF文档。有关示例,请参见此展示柜。我更喜欢'pp'和'LM-Volume-manuscript'。
    • rename是一个可爱的小程序,可让您根据模式重命名大量文件。一个简单的示例:rename s/myfile([0-9]+).txt/$1-myfile.txt/ 将所有名为“ bond007.txt”的文件都转换为“ 007-bond.txt”,而不管它是多少。您可能会想重命名一些音乐专辑文件。
    • 也许您想从计算机上运行一个网站,并且发现如果要告诉Web服务器运行/停止/刷新其配置,则必须发出终端命令。

    请注意,其中许多系统都有图形化前端,但这并不重要:命令行调用是常见且传统的方法,许多HOWTO都假定这样做,并且这就是它的开始方式。因为:

  2. “好吧,我现在更舒服了。”

    一旦进入命令行,人们就会开始思考:如果我可以.....会不会很容易

    • ...更改目录以查找另一个目录?cd mydir,用于“更改目录”)
    • ...快速了解此目录中的文本文件?ls *.txt,表示“列表”)
    • ...移动/重命名文件?复制文件?删除文件?mv myfile newnamecp myfile mycopyrm myfile,用于“移动”,“复制”和“删除”)
    • ...打开此文件进行编辑/查看?gedit myfileleafpad,或nano,或vim,或什么的。)

    一旦人们学会了这五个命令,他们就基本上可以适应命令行了:它们可以移动,观看和交互。它甚至功能强大:您可以使用像这样的命令一次对整个文件组进行操作mv iceland-*.jpg My_Iceland_Pics/,这不是很酷吗?

    现在,很多人高兴地停在这里。他们知道如何使用终端,他们会在需要时使用它,仅此而已。这是“终端有用”级别。谁的人喜欢的终端,但是,通常这样做,因为他们需要/想/觉得他们不能没有那个脚本提供了壮观的力量做。通常是这样开始的:

  3. “嘿,脚本只是文件中的一些命令!”

    根据个人的不同,这种认识可能会导致进一步的变化。当然,许多人只是“ meh”。没有必要学习不需要的东西。无论如何,这样的事情可能会发生:

    • 您开始使用一些小脚本来自动执行无聊的工作。有些是你自己写的。有些是你从别人那里得到的;最终,您开始修改其他人的脚本。
    • 您会发现,由于以前需要手动思考,因此以前手工完成的大量工作可以使用以下两种结构来自动化:
      • if something_is_true; then step1a; step2; else step1b; fi
      • for file in list_of_files; do process1 $file; process2 $file; step3; done
    • 面对无聊或复杂的任务,您会发现自己宁愿为此编写脚本,也不愿手工完成。这甚至不一定是为了节省时间或可重用性,仅仅是因为它更有趣。
    • 您开始大量使用“在源文件上使用脚本”工作流,因为它符合您的想法。

您可能没有经历过所有甚至所有这些事情。但是,对您的适用范围越广,终端将对越好。您将自己发现最终使用了多少。玩得开心!

发布脚本。script -> run -> result和中,input -> process -> output工作流程非常普遍,并且终端非常适合这些工作流程。除此之外,shell真的不过是另一种编程语言而已,您将了解为什么命令行用户和程序员之间会有如此巨大的重叠。


2
我猜你是用vim写这篇文章的。
jokerdino

5
@jokerdino:不,但是我应该。:-)
Esteis'2


12

前几天我只是在回答类似的问题。事实证明,此人从未使用键盘快捷键执行任何操作,因此讨论了很长时间。我希望您对这些有所了解...这将使我的观点更容易理解。

考虑使用文字处理器。如果保存文件,则可以使用键盘快捷键,例如ctrl-s。有人可能会说:“我更喜欢使用菜单。使用快捷方式并不会节省很多时间。而且,如果必须保存新文件,则必须在文件系统中导航到目录,然后键入不管怎么说。” 因此,该反对者是正确的,因为每个键盘快捷键本身不会节省大量时间。真正的节省是将快捷方式链接在一起,例如全选,剪切,粘贴。甚至文字处理器制造商都已经意识到这一点,并使得使用键盘访问文件结构更加方便,例如,能够使用制表键和箭头键访问最近的文件夹/位置。

当然,选择文本片段通常需要使用鼠标...这就是为什么程序员和进行大量编辑的人员更喜欢使用支持完全键盘使用的文本编辑器,因此您不必使用鼠标。鼠标不仅速度缓慢,而且容易出错-选择或删除错误的文本特别容易。

现在,这与命令行有什么关系?命令行的一个优点是它避免使用速度慢,容易出错的鼠标。相反,您键入并在一个位置进行输入。您不必四处寻找另一个菜单,也不必在那儿单击然后在这里。这就是人们喜欢使用网络浏览器键盘快捷键(以打开新标签/窗口,使用Gmail等)的相同原因;他们将不得不以任何方式键入URL(或电子邮件或其他内容)...为什么将手从键上移开?

但最重要的是,就像当您一起使用键盘快捷键(而不是一两个)时,它们是最强大的一样,您可以将命令链接在一起,以执行更强大的功能,这些功能可能永远需要通过GUI才能完成,或者甚至都无法想象这样做。例如,从命令行,您可以告诉您的Web浏览器,我想保持每30秒刷新一次此网页,查找特定的文本,然后在出现这种情况时,向我和一组联系人发送一封电子邮件,指出该文本已经出现在网页上。再举一个例子,您可以告诉您的计算机,我想浏览我曾经写过的所有电子邮件,寻找对这本书的参考,列出我提到过的日期以及谁约会的日期列表,以便根据频率,并将其放入我现在要输入的这封电子邮件中。


使用screen在一个控制台,我很少会使用鼠标,除非它是再浏览网站。(没有人最好提起山猫……)
哈克

1
键盘快捷键+1。这是荒谬的有多少人宣称Linux是更快,因为CLI(因此键盘)的使用,但他们不知道如何使用键盘在Windows中完成任何事情。这就像声称三轮车比带有训练轮的自行车更先进/更容易使用。
Mehrdad

我将第一个说我比Gnome更好地了解Windows键盘快捷键,但这是因为我在服务器上花费了大部分* nix时间。但是,ALT +空格+ N,ALT + TAB,ALT +空格+ M +(箭头)都具有Gnome等效项(我相信)。
哈克2012年

11

当您确切知道要执行的操作以及如何执行操作时,可以快速使用CLI。它比使用gui更有效。另外,如果要远程连接到计算机,则在慢速链接上使用CLI会容易得多。如果您对CLI感到满意,也可以利用脚本。

如果您使用cli或gui进行搜索,将获得大量点击量,例如:

http://www.computerhope.com/issues/ch000619.htm

您的问题并不是真正针对Ubuntu,Linux甚至PC的-您可以从任何支持gui和cli的系统(例如配置Cisco路由器)中就此问题进行辩论。


使用配置文件,仅从命令行编辑它们的优点之一就是知道文件正在发生什么。现在,如果追加了某个命令,您将知道文件中有多余的一行。使用GUI,有时实际上不清楚您做了什么或选中/取消选中该框会产生什么影响。我想缺点是配置文件可能很难阅读。
Chan-Ho Suh

10

答案中有很多要点,但我还有一点要说。有时,在安装或更新GUI之后,GUI应用程序将无法启动,并且没有任何错误消息。在这些情况下,打开终端窗口并从命令行启动ap会很有帮助。从GUI启动时,终端上几乎总是比显示的信息更多。


8

我最喜欢的是少打字。我怎么能听到你问。我登录,反向搜索或向上箭头)以查找上周输入的命令,然后按回车键。另一种选择是更多的鼠标单击(并记住)。

我的第二个最爱是它使回答堆栈溢出问题变得更加容易。无需屏幕截图,只需输入文字即可。


5
+1 减少打字次数。一个明显的问题是键盘界面如何减少打字,但确实如此。在查看bash历史记录之前,您并不总是意识到自己一次又一次地重复执行相同任务的频率。
艾里克·罗伯逊

我对按钮按下情况进行了小型研究,比较了鼠标和键盘。这将忽略鼠标的所有滑动,仅单击和每次键盘按键操作(此方法会低估鼠标的工作量)。我计算出使用每种方法完成一些日常任务的得分/努力。使用的唯一键盘快捷键是反向搜索(ctrl-r),箭头键和制表符。分数越低越好。总之,在大多数日常任务中,使用带有反向搜索功能的键盘(ctrl-r),箭头键和选项卡比使用鼠标省力。
ctrl-alt-delor

5

当您需要以“ root”身份执行操作时该怎么办?以root身份通过GUI登录是一个坏主意(默认情况下,我什至不认为Ubuntu允许您这样做)。

另外,请考虑将Linux GUI(X11)像其他所有东西一样只是运行程序。如果X11崩溃,您会很高兴知道您的命令行。


5

我只是想举一个例子,我发现从添加VirtualBox的PPA的说明中非常有用。添加PPA时,还应该注册公共密钥,因此GUI方法为:

  • 使用Firefox(或其他浏览器)下载密钥
  • 打开Synaptic(或其他APT gui)
  • 搜索右键菜单项
  • 浏览下载的文件
  • 最终确认

在用户指南中对此进行解释可能会很昂贵!相反,可以使用一个简单的命令行完成此操作:

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

1
除了下载密钥不需要人类意识之外,因此手动进行不必要的负担。
JustinasDūdėnas'2

3

命令行与Windows中的命令行一样运行良好-记住文本输入msdos框为黑色背景吗?

它为用户提供了一种直接向计算机发出命令的方法,而不会浪费GUI带来的计算机资源。这也是发出强大命令以执行无法通过GUI完成的事情的一种方式。

我没有敲打GUI工作方式的有用性,但是在熟练的操作人员的手中,命令行方式可以非常快速和高效。在真正的向导手中,命令行可以创造奇迹。我几乎没有摸索出各种可能性,每天都学一些新知识。我永远不会成为向导-太老了-但我希望有一天能成为一名普通的操作员...

欢迎使用Ubuntu并询问Ubuntu。这是一个好地方!!


3

对于初学者来说,使用终端非常麻烦,但是如果您开始学习如何使用它,它将变得更加容易。一旦您对它感到满意,它就会给您一种自信,让您可以在出现问题时处理问题。

例如,当gui程序拒绝启动,并且您不知道出什么问题时,您可以在终端中运行该命令,并经常在终端输出中看到问题的原因。然后,您可以将其中一些复制到搜索中,并在需要时找到答案。

您可以使用“ --help”输入命令,并获取在某些特殊情况下可能有用的命令行选项列表。

如果出现问题,并且GUI甚至根本无法运行,则通常可以从启动中打开虚拟终端或仅打开命令行,然后通过编辑配置文件或运行命令行程序来解决问题。


2

简而言之,您拥有超过一百个可以控制/通话/订购计算机的按键,而不是一只鼠标带有两个或三个按钮。您拥有的控件越多,您可以越快。

对于任何不知道打字的人来说,屏幕键盘看起来都不错。无论使用鼠标的速度如何,都不能比使用键盘的速度更快。

如果您使用的是鼠标/窗口,则就像计算机控制您并决定您可以做什么一样。当您习惯了命令行世界时,您会感觉整个系统都在您的控制之下,等待着您的下单。您需要体验一下才能理解差异。


1

我什至看不出检查答案的意义。无论如何。终端就像Windows上的CMD。早在GUI出现之前,人们就在DOS模式下(几乎是普通的Terminal)进行编程和工作。GUI的创建使任务变得越来越简单,但是有时使用GUI实际上需要做更多的工作。

例如,作为开发人员,如果我只想编译C ++程序,则不必使用复杂的IDE。IDE是一个GUI界面,具有许多简单的文本编辑器无法提供的高级功能。因此,除了下载一个非常庞大的IDE来完成一个简单任务之外,我只需编写以下代码,它将执行我的C ++程序,其可执行文件称为main

g++ -o main main.cpp
chmod 777 main
./main

如果您使用类似Python的解释器语言,则可以输入Python交互式外壳。是。有一些交互的shell,它们都包装在漂亮的GUI中,但是速度较慢且有故障(请考虑一下IDLE ...)

有时,当GUI损坏时,您可以尝试使用终端打开它。有时,Linux中的某些软件不能提供良好的GUI,或者很难找到GUI启动器的位置,您只需转到Terminal并键入,例如:

xpdf homework.pdf

这将为您打开homework.pdf。

在其他情况下,GUI无法提供足够的功能和魔力来完成您的任务。某些搜索功能非常基础,您不能应用深度搜索或复杂的搜索模式。但是通过终端,可以发出非常复杂且冗长的模式的命令。

GUI很不错,但是有时通过命令您也可以使事情变得更简单。有时您只是别无选择:您必须通过终端使用命令。


1

我想补充一点,尽管这并不是真正的优势,但似乎并未提及。

考虑一下GUI就像一个“面板”这样的事实,它可以访问实际程序具有的功能。许多软件(尤其是早期版本的软件)没有GUI,您只能在终端上运行它们。而且,正如其他人指出的那样,即使是具有GUI的应用程序,有时也没有所有功能的接口。对于这些功能,您必须使用终端。


0

每个人都很好地描述了优点,我想补充一下,除了透明度,您可以看到列出的所有依赖项及其速度。从Ubuntu删除了突触后,软件中心太迟了,尤其是在速度较慢的计算机上,这里从终端安装的速度更快。


3
尽管Synaptic不是默认安装的一部分,但仍可以从软件中心进行安装。
fragos 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.