全部学习汇总: GreyZhang/bash_basic: my learning note about bash shell. (github.com)
跋:看了一下,这个可能是我大约十年前的学习笔记了,脑海中都没有多少那时候的记忆痕迹了。然而,当初的一些时间消磨的确是给今天的我带来了很多充实。
自从选择了Linux作为自己的个人电脑平台后,我似乎还是一直热衷于GUI。不可否认,我很喜欢漂亮的界面,如果手头的电脑是mac,我想我转投苹果阵营是板上钉钉的结果。但是现实的情况很残酷,我不是高富帅,玩不起水果。我甚至连买个windows软件的钱都得考虑一下,考虑的结果还是放弃购买使用Linux。我也不否认,Linux是一个非常优秀的操作系统门类。然而,我最不能够否认的是在Linux的世界,我是一只小菜鸟。
工作之后,工作性质的原因我学过一点点批处理,也自学了matlab的M语言、perl语言等。当然,最主要的目的就是要简化我手头反复操作的工作,让工作多少走向自动化。说到了批处理,说到了调用的自动化等等东西,我想接触过Linux的人全都不会记不起这个系统,也不会想不起shell。
生活中我喜欢随手拍照,以前用手机,现在也走风高大上地买了相机。为了传到各个论坛,有时候各种处理各种压缩,各种改名字。前段时间网络上搜来了一段代码,经过不知道多少次调用把照片压缩到我想要的大小。工作中养成的直觉在催促我改进一下这个环节。
“不怕执行效率低,怕的是需要人一次次地不断重复工作”。这是我对待当前自己工作、生活态势的态度。好吧,那就尝试改进。下载了一本500页的shell教程,看了50页后决定放弃,更好的方式是凭借自己的直觉加网络搜索的方式学习。
先看一下自己网上找到的代码:
#!/bin/bash
echo "resize image who is bigger than 1000k";
for i in `find . -size +1000k`;
do
convert $i -resize 90% $i;
echo "resize image $i to 90%";
Done
学了perl语言,第一句我很熟悉。这句看着像注释的非注释是用于知名shell解析器。接下来输出一个压缩提示。再往下的for循环则是工作的核心,找出当前目录下大于5000k的照片压缩到5000k。i是找出的文件,加个$作为变量引用。至于压缩,当前得提前安装imagemagick。这样,如果照片都是5M以上,一轮压缩显然完不成工作。好了,进一步自动化修正需求来啦!
修改代码如下:
#!/bin/bash
echo "resize image who is bigger than 5000k";
while(find . -size +1000k)
do
for i in `find . -size +1000k`;
do
convert $i -resize 90% $i;
echo "resize image $i to 90%";
done
done
While循环的意思还是很明显的,为了习惯我自己的阅读习惯,我对代码的缩进排版也做了一点点调整。当然,我猜测着find指令会返回一个可以用作布尔值判断的返回值。尝试运行了一下,一次性压缩完毕的结果出现了,但是最终shell不能够退出。没办法强制退出。
但是看看文件的详细信息,似乎一切已经完成,期待改进。