何时学习编程工具的命令行版本?[关闭]


12

几乎每个编程工具都具有命令行版本。其中许多还具有gui版本。学习不同的命令以及命令行版本的各种选项/开关需要花费大量时间和记忆。

因此,我有几个问题(不一定是互斥的):

1)什么时候您会花时间学习/记住工具的命令行版本中的命令,而该命令行版本也是gui版本的?

2)我应该学习哪些工具的命令行版本?....编译器?版本控制系统?等等


如果您使用的工具提供了命令行界面,但是没有相应的文档,那么我会谨慎使用该工具。如果是这样,则为RTFM。这并不难,如果可以,请在StackOverflow.com上提问。如果您需要从命令行中找出方法,我相信您可以。如果不确定是否需要解决某些问题,则可能不需要。只要有足够的时间,生活中就会充满很多有趣的事情……
Job

Answers:


21

我可以看到两个为什么应该学习程序的命令行选项的原因:

  1. 当您需要以某种方式使程序自动化时-构建脚本,批处理等。

  2. 当您需要优化程序的行为时-减少内存占用等。

至于您应该学习哪些工具-完全取决于您接下来要做什么。


1
您始终希望能够编写一个脚本来使其自动化...

1
@Thorbjørn-不是我说的吗?还是我不清楚?
克里斯·

3
是。我只是强调了自动化部分-不了解在尝试将当前方法调整为可编写脚本的内容时,预先会导致痛苦。

9

已经有很多好的答案。我再增加一个观点。

当您想使人员脱离方程式/过程时,可以使用命令行工具替换GUI。这样做的一些原因和/或好处:

  • 您摆脱了人为错误(重复命令时)
  • 非常适合各种自动化,例如带有随机输入的部署,构建或运行测试。
  • 您将真正成为高级用户。它为您提供了一种选择,以爬上元编程的阶梯。您不必自己做任何动作(单击GUI),就可以轻松编写脚本!
  • 您可以将工具链接在一起(考虑Unix管道)。
  • 让计算机发挥作用-您无需扩展,计算机即可!

什么时候做?当发现重复自己时。

当然,有GUI的地方和时间。但是,如果您真的想利用计算机的功能并顺应摩尔定律的浪潮,则需要学习编写脚本脚本。

编辑:额外的奖金。您可以穿这件T恤了:)


7

地雷是:

1)提高生产力。对我来说,在shell中执行操作比单击即可。我说的是使用工具,而不是设置service / tool / etc,因为有时拥有一个向导并单击可以更快Next Next Next,尽管这些向导也存在于命令行版本中:)

2)在您的应用程序中使用命令行版本。例如,假设您要将PDF转换为文本文件。如果使用GUI版本,则可以。但是,如果它还提供了一个命令行界面,您可以在其中执行以下操作:./pdf2text input.pdf output.txt,那么如果您需要开发一个从PDF读取文本的应用程序,则可以轻松使用它,而无需使用任何API或进行一些调整。 。

3)学习应用程序的一般性知识。例如,如果您在Windows上安装了diff,并且有一个用于比较两个文件的前端。那很完美。但是,如果您需要在Linux上使用它呢?您可以为Linux找到相同的前端,但是如果不存在该怎么办?您将不得不再次学习如何在Linux上使用它,安装新的前端并习惯于使用它。如果您了解了如何使用命令行版本,则不需要它;)

大约3)...有些人习惯于在Windows上使用Git时会遇到很多麻烦。他们说Windows上没有很好的前端,但是如果您只是学习命令行方式,就不会有问题。它的工作方式相同。当然,问题是有时人们会害怕命令行 ;)

我建议您学习以下命令行版本:

  • gcc这样的编译器
  • gdb这样的调试器
  • git ;)
  • 以及GNU / Linux中的许多工具,您可以在Windows上使用它们,例如egrepawkfind,...

Yeahhhh +1 for git:D尽管diff是一个示例,但我不会使用real命令。我更喜欢vimdiff(尽管从技术上讲,我猜这也是终端)
替代

@mathepic你是对的,但vimdiff它也是一个命令行工具,不是吗?
奥斯卡·梅德罗斯

同时,它的ncurses(我想是不确定的),所以我做了一点区别。
选项

是的,但我也将它们用作命令行工具:)
Oscar Mederos

@mathepic:您关心的答案:gvimdiff
Lie Ryan

3

为什么需要将参数语法提交到内存?这就是man存在的原因--help/?如果您在winblowz土地上)。

我发现我可以在一分钟内查找几乎所有选项。目的是记住命令的作用,以便您知道要查找的内容!


1

在实用上,这取决于gui工具是否缺少功能,或者从命令行是否更快。

但是,使用命令行的附带好处是,您更有可能阅读文档并弄清实际情况。特别是在您的版本控制示例中,从命令行执行此操作将使您学到很多。


1
  • 编译器:自动构建将需要
  • Make或您的构建系统:自动构建会捕获错误
  • 版本控制:我认为是这样,但这是三个中最不重要的。但是然后我可以执行其他命令行操作,例如通过更改消息进行grep。

但是您不需要记住编译器或make的选项;一旦为项目设置了这些,就不必经常更改它们。


1

我觉得学习命令行工具的好处远远超过了使用GUI的好处。很多时候,GUI失去了功能,但是不能总是这样说(例如,在Windows上查看cmake-在正常情况下没有理由使用命令行)是不公平的。

就记忆而言,没有特别需要记住第一次使用该程序的命令集。只需在手册上加上书签(如果使用在线手册,否则在* nix上使用“ man”),并且如果需要特定功能(您尚未记住),请参考该手册。对这些东西的记忆应该自然而然地被利用。例如,我经常从命令行运行“ tar”和“ gzip”,但是我必须参考手册来完成我通常不执行的任务。

最重要的是,如果您要运送产品或发送某种形式的源代码或以其他方式发送给其他开发人员,则包含命令框架要比编写使用GUI的详细说明容易得多。如果开发人员不理解您使用的命令行选项,则可以简单地查找它们。向某人解释GUI并非总是最可移植的解决方案。

问候,
丹尼斯·M。



0

简短答案:更改(即使用命令行)的最佳时间是NOW。真正的男人使用键盘。真正的男人不要点击。期。

更长的答案:从长远来看,除了提高生产力并因此变得更有价值(不太可能被解雇)之外,使用命令行可以/将/应该使您更聪明(由于大量的实践/记忆)和更健康(因为在人机工程学中,同时在命令行界面中同时使用两只手而不是用鼠标一只手)。

http://www.over-yonder.net/~fullermd/rants/winstupid/1上,这是强烈推荐的文章/文章“ Windows为什么导致愚蠢


3
不管是不是在开玩笑,真正的废话不会赢得任何奖项,即使我100%同意使用CLI更有生产力,但男子气的声音也只是愚蠢的。
ocodo

0

我不知道,你应该不断尝试背诵的命令行工具的开关。如果要创建Shell脚本或执行某些任务的自动化操作,则最好查找所有内容-现在花费30秒,以避免数小时的痛苦来弄清楚以后出了什么问题。如果您一次又一次地使用相同的命令行工具,也许您应该制作一个shell脚本...

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.