如何通过Linux的shell学习你的方式

我想在处理Linux / Unix的shell的时候不要再浪费宝贵的时间。

如果我能理解,那会很好。 除此以外:

  • 为了build立一个crontab,我最终可能会失去一天。
  • 我会一直想知道为什么在这个脚本中的shebang不起作用。
  • 我会一直想知道真正的区别是什么:
    • 。 run.sh
    • ./run.sh
    • 。 ./run.sh
    • sh run.sh
    • sh./run.sh

你看,这是瘫痪我的Linux / Unix生活的东西。

作为程序员,我想在这方面做得更好。 我想最好是用广泛使用的bash shell,但我可能是错的。 无论使用什么工具,我都需要了解它的内涵。

什么是最终的解决scheme?

手册页可能是“最终”的解决方案。 我总是惊讶于他们所包含的宝石。

你甚至可以用man bash来回答你在这个问题上提出的一些问题。

只是为了好玩:

  1. . run.sh . run.sh —“源代码” . run.sh的代码。 通常,这用于将环境变量获取到当前的shell进程中。 你可能不想要这个名为run.sh的脚本。

  2. ./run.sh —执行当前目录run.sh脚本。 通常,当前目录不在默认路径中(请参阅$PATH ),因此您需要明确地调出相对位置。 的. 字符的使用与第1项中的不同。

  3. . ./run.sh . ./run.sh —输入当前目录run.sh脚本。 这结合使用. 来自项目#1和#2。

  4. sh run.sh —在run.sh上使用sh shell解释器。 Bourne shell通常是运行shell脚本的缺省值,所以这可能与第2项相同,除了它在$PATH找到第一个run.sh ,而不是在当前目录中的run.sh

  5. sh ./run.sh —这通常和#2一样,除了字母之外。

命令行界面,比如各种shell解释器,往往是非常深奥的,因为它们需要将很多的意义打包成少量的字符。 否则,打字需要很长时间。

在学习方面,我建议使用bashksh并且不要让任何人谈论你,直到你感到舒服为止。 请不要使用csh学习,或者稍后在启动Bourne类型的shell时需要注意太多。

而且, crontab条目比其他shell的使用要复杂一些。 我的猜测是你失去了时间,因为你的环境设置与命令行不同。 如果可能,我会建议从别的地方开始。

在这里试试Linux Documentation Project的BASH页面[tldp.org] 。
PS:区别在于。 与source命令相同。 这只需要读取权限。 要使用./run.sh,您需要执行权限。 当你使用'sh'时,你明确地指定了你想运行脚本的命令(在这里,你只需要读取权限)。 如果你使用一个shell来执行它,那里应该没有问题。 如果你想使用不同的程序,比如'python',你可以使用python run.py 另一个技巧是在脚本的开头添加一行#!<program> 。 在你的情况下, #!/bin/sh会做,而对于Python, #/usr/bin/env python是最好的。

我认为沉浸在这是答案。 这就像学习走路,打字,使用符合人体工程学的键盘,或键入dvorak。 完全承诺。 是的,你绝对会放慢脚步。 而且你会被迫不断地看着你的手或谷歌的东西。 但最终它会来到你身边。

有趣的故事,我做了一个ifconfig发布,我的公寓的互联网访问。 完全不知道,ifconfig续订不是一个命令。 当谷歌没有加载时不得不打电话给朋友;)dhcpcd后来,我又回到谷歌搜索的一切。

Oreily有一本较老的书 ,最后教给你bash和bash脚本。 大部分你需要知道的东西都在网上,但是传播开来。

学习的最好方法是阅读,然后尝试一下。 MAN页面通常非常有帮助,并且有大量的Shell脚本教程。 如果shell脚本是你所追求的,那么只要阅读,然后通过编写一些简单而有趣的小脚本来练习阅读的内容。 如果您正在寻找有关可以从shell运行的所有不同命令行应用程序的更多信息,那么这些应用程序更依赖于发行版,因此请查看您最喜爱的发行版的文档。

有一些体面的在线指南,可以帮助您在外壳中感觉更舒适。 例如:

  • Steve Parker的Unix / Linux Shell脚本教程
  • “UNIX Shell编程 ”由Stephen G. Kochan和Patrick H. Wood撰写,可在Google Books上在线获取。 也可以精装。 亚马逊有它。
  • 使用sh / ksh的UNIX shell脚本 。 显然是作为达特茅斯学院的一部分。 ksh是Korn shell,它足够接近bash ,信息会有用。

花些时间阅读这些教程,最重要的是在shell中玩。 很快,它会开始感觉像$ HOME。 (好吧,对不起的双关语抱歉…)

使用shell很多,输入“[prog-name] –help”,很多输入“man [prog-name]”,并记录什么有效和什么没有 – 即使这些笔记看起来很明显当时。 到明天为止,他们可能不会那么明显。 OTOH,在几个星期内,他们肯定应该!

在许多关于使用shell的书籍中,有一些比较喜欢,比如从Bash到Z Shell (包括Bash和Z),通过shell脚本教程或者Gnu的Bash手册。

虽然坚持Bash可能是最好的,而只是学习,鱼壳可能会更容易使用。 我玩了几个星期,虽然它看起来不像bash那么强大,但它看起来非常友好。

我真正在Linux中学习的方式是安装gentoo。 它需要永远,但你开始看到一切如何联系在一起。

去抢最新的指示,并开始关注他们。 做足够的时间,它开始坚持。

过了一段时间,您可以从头开始建设一切。

我发现尝试使用手册页学习一个新的命令有时有点压倒一切。

我更喜欢手册来刷新我的记忆。

当我想要学习一个命令时,我会查找示例,然后使用手册页来微调我想要的操作。