shell - 为什么要学习Shell编程?

标签 shell programming-languages

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

3年前关闭。




Improve this question




我为什么要学习 Shell 编程?在现实世界中可以用它做什么?你能告诉我一些可以用它完成的强大功能或一些特殊功能,以说服我现在应该开始学习 shell 编程吗?

最佳答案

学习 shell 编程有十亿零一个理由。主要原因之一是系统管理。

Here is an example需要根据同一目录中的另一个文件重命名 ~750 个文件的人。这是通过 3 行 shell 脚本完成的。要获得更多示例,只需搜索带有标签的问题 [bash], [sed] or [awk] .

当有人让我向他们展示一个很酷的“shell 编程”示例时,我总是向他们展示这个 awk 1-liner(甚至可能是 1-worder?)。它将过滤列表以仅显示唯一值而不更改原始顺序。这很重要,因为大多数其他解决方案要求您首先对列表进行排序,这会破坏原始顺序。

$ echo -e "apple\npear\napple\nbanana\nmango\npear\nbanana" | awk '!a[$0]++'
apple
pear
banana
mango

awk 命令说明

非排序的独特魔法发生在 !a[$0]++ .由于 awk 支持关联数组,它使用当前记录(又名行)$0作为数组的键 a[] .如果之前没有见过该 key ,a[$0]评估为 0 (零)这是 awk 未设置索引的默认值。然后我们否定这个值以返回 TRUE在该键第一次出现时。 a[$0]然后递增,以便后续点击此键将返回 FALSE因此永远不会打印重复值。我们还利用了 awk 默认为 print $0 的事实。 (打印当前记录/行)如果表达式返回 TRUE没有更多 { commands }给出。

如果您仍然不明白,请不要担心,这是一个非常简洁和优化的版本,它可能是一个更长的 awk 脚本。

关于shell - 为什么要学习Shell编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4464311/

相关文章:

java - 从 C++ 到 Java 的转变

programming-languages - 在程序中使用括号会降低可读性的例子有哪些?

c++ - 经典C++(C with Classes)的Call/Return特性,现代语言有哪些?

linux - 如何让 awk 命令在 Bash 脚本中工作?

programming-languages - 是什么使Julia不适合通用编程?

qt - 学习诺基亚应用从哪里开始?

未找到 Linux shell 脚本,但它确实存在

shell - Google Cloud Shell 编辑器未加载资源

mysql - 在文本文件中添加两列并加载到 sql

bash - 如何在 Unix 上查找所有文件并用逗号分隔结果?