虽然我不得不涉足shell脚本和命令,但我仍然认为自己是新手,我很想听听别人认为他们认为是关键知识的东西。
以下是我认为重要的一个例子:
我认为理解$ PATH至关重要。例如,为了运行psql,必须将PostgreSQL文件夹添加到$ PATH变量中,这一步骤很容易被初学者看到。
答案 0 :(得分:4)
管道概念。您可以轻松地重定向输出并将复杂任务划分为几个简单任务,这一点至关重要。
答案 1 :(得分:2)
帮自己一个忙,得到这本书:Learning the Bash Shell
答案 2 :(得分:1)
阅读并理解:
答案 3 :(得分:1)
如果您正在编写shell脚本,那么进入的一个重要习惯就是始终在变量替换上加上双引号。也就是说,始终写 "$myvariable"
(以及类似“$(mycommand)”),绝不是普通的 或$myvariable
,除非您明白为什么需要将它们排除在外。 (同样,问题不是“我应该使用引号吗?”,它是“我为什么要省略引号?”)$(mycommand)
原因是当你不加引号变量替换时,shell会做出讨厌的事情。 (那些讨厌的东西被称为字段拆分和路径名扩展。它们在某些情况下很好,但几乎从不在变量或命令替换的结果上。)
如果省略引号,您的脚本可能会在第一眼看上去有效。这是因为只有当变量的值包含一些特殊字符(空格,\
,*
,?
和[
)时才会发生令人讨厌的事情。当你创建一个名称中包含空格的文件并且你的脚本最终会删除你的源代码树/论文/宝贝图片/ ...时,这种潜在的bug往往被揭示出来。
例如,如果您的变量$filename
包含要传递给命令的文件的名称,请始终写
mycommand "$filename"
而不是 。mycommand $filename