fab*_*bio 19 shell programming-languages
我为什么要学习Shell编程呢?在现实世界中可以用它做什么?你能告诉我一些可以用它或一些特殊功能完成的强大功能,以便说服我现在应该开始学习shell编程吗?
Sie*_*geX 19
学习shell编程有十亿个理由.系统管理的一个主要原因.
这是一个需要根据同一目录中的另一个文件重命名〜750个文件的人的例子.这是通过3行shell脚本完成的.要获得更多示例,只需使用标签 [bash],[sed]或[awk]搜索问题.
当有人要我向他们展示一个很酷的"shell编程"的例子时,我总是向他们展示这个awk 1-liner(甚至可能是1-worder?).它将过滤列表以仅显示唯一值而不更改原始顺序.这很重要,因为大多数其他解决方案要求您首先对列表进行排序,从而破坏原始订单.
$ echo -e "apple\npear\napple\nbanana\nmango\npear\nbanana" | awk '!a[$0]++'
apple
pear
banana
mango
Run Code Online (Sandbox Code Playgroud)
非排序独特的魔法发生在!a[$0]++.由于awk支持关联数组,因此它使用当前记录(也称为行)$0作为数组的键a[].如果之前没有看到该键,则a[$0]求值为0(零),这是awk未设置索引的默认值.然后我们否定该值以TRUE在该键的第一次出现时返回.a[$0]然后递增,使得该键上的后续命中将返回FALSE,因此永远不会打印重复值.我们还利用了awk默认为print $0(打印当前记录/行)的事实,如果表达式返回TRUE并且没有{ commands }给出进一步的表达式.
如果您仍然不明白,请不要担心,这是一个非常简洁和优化的版本,可能是一个更长的awk脚本.
老兄,如果你不想,你现在不需要学习shell编程.但是如果你想在你的计算机上实际做事,它就会派上用场.
几乎任何类型的计算机都将使用其本机shell代码编写系统脚本.因此,如果您想了解并配置它的功能,您将需要学习shell脚本.
另一个有用的东西是它将教你如何正确使用你的命令行.你不能用工具(例如cp -r foo bar)或简单的通配(例如)来做所有事情rm *.o; 即使像大规模重命名这样简单的事情也需要循环.而shell是这类工作中最简单,最合适的工具.
前几天我需要一个闹钟。
sleep 20m && madplay song.mp3
Run Code Online (Sandbox Code Playgroud)
当您了解 shell 编程时,您会发现它的用途可以简化您的生活。前面的例子很简单,有趣多过有用,但它可以为您节省大量文件系统操作和其他事情的时间。一个谷歌查询可以给你一个想法。