我想在处理Linux / Unix的shell的时候不要再浪费宝贵的时间。
如果我能理解,那会很好。 除此以外:
你看,这是瘫痪我的Linux / Unix生活的东西。
作为程序员,我想在这方面做得更好。 我想最好是用广泛使用的bash shell,但我可能是错的。 无论使用什么工具,我都需要了解它的内涵。
什么是最终的解决scheme?
手册页可能是“最终”的解决方案。 我总是惊讶于他们所包含的宝石。
你甚至可以用man bash
来回答你在这个问题上提出的一些问题。
只是为了好玩:
. run.sh
. run.sh
—“源代码” . run.sh
的代码。 通常,这用于将环境变量获取到当前的shell进程中。 你可能不想要这个名为run.sh
的脚本。
./run.sh
—执行当前目录run.sh
脚本。 通常,当前目录不在默认路径中(请参阅$PATH
),因此您需要明确地调出相对位置。 的.
字符的使用与第1项中的不同。
. ./run.sh
. ./run.sh
—输入当前目录run.sh
脚本。 这结合使用.
来自项目#1和#2。
sh run.sh
—在run.sh
上使用sh
shell解释器。 Bourne shell通常是运行shell脚本的缺省值,所以这可能与第2项相同,除了它在$PATH
找到第一个run.sh
,而不是在当前目录中的run.sh
sh ./run.sh
—这通常和#2一样,除了字母之外。
命令行界面,比如各种shell解释器,往往是非常深奥的,因为它们需要将很多的意义打包成少量的字符。 否则,打字需要很长时间。
在学习方面,我建议使用bash
或ksh
并且不要让任何人谈论你,直到你感到舒服为止。 请不要使用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运行的所有不同命令行应用程序的更多信息,那么这些应用程序更依赖于发行版,因此请查看您最喜爱的发行版的文档。
有一些体面的在线指南,可以帮助您在外壳中感觉更舒适。 例如:
花些时间阅读这些教程,最重要的是在shell中玩。 很快,它会开始感觉像$ HOME。 (好吧,对不起的双关语抱歉…)
使用shell很多,输入“[prog-name] –help”,很多输入“man [prog-name]”,并记录什么有效和什么没有 – 即使这些笔记看起来很明显当时。 到明天为止,他们可能不会那么明显。 OTOH,在几个星期内,他们肯定应该!
在许多关于使用shell的书籍中,有一些比较喜欢,比如从Bash到Z Shell (包括Bash和Z),通过shell脚本教程或者Gnu的Bash手册。
虽然坚持Bash可能是最好的,而只是学习,鱼壳可能会更容易使用。 我玩了几个星期,虽然它看起来不像bash那么强大,但它看起来非常友好。
我真正在Linux中学习的方式是安装gentoo。 它需要永远,但你开始看到一切如何联系在一起。
去抢最新的指示,并开始关注他们。 做足够的时间,它开始坚持。
过了一段时间,您可以从头开始建设一切。
我发现尝试使用手册页学习一个新的命令有时有点压倒一切。
我更喜欢手册来刷新我的记忆。
当我想要学习一个命令时,我会查找示例,然后使用手册页来微调我想要的操作。