移动开发技术前沿权哥的技术之路生产效率

Linux 命令与 Shell 脚本

2017-11-09  本文已影响296人  Lefe

Linux 命令与 Shell 脚本

【Linux文件处理 Day1】

前几天主要介绍了正则表达式的使用方法,这一期打算介绍一些 Linux 命令和 Shell 脚本,这些知识虽然不是我们必须要掌握的,但是它可以提高工作效率,而且这些知识对于开发者来说都是通用的,Android,iOS,后端,前端等,都需要一些 Linux 和正则表达式的知识。对于iOS开发者来说,Linux 的一些操作命令是薄弱环节,作者打算花费几天时间总结一下这方面的知识,旨在能够帮助更多同学不再害怕“命令”。如果在文中有不正确的地方,希望同学们能指点小弟一下。

【特别说明】下文提到所有的命令行的根路径均为:/Users/wangsuyan/desktop/linux,使用 man 某个命令 ,比如 man rm,可以查看详细使用。

【Linux字符处理 Day2】

【Shell 脚本 Day3】

经过前几天对 Linux 命令的学习,已经掌握了大部分常用的命令,但是如果想要做的更好,可以学习一下 Shell 脚本,它可以把多条命令按自己的方式来执行。它可以提高我们的工作效率。比如最常见的是 pod install 命令,每次需要在终端输入:

cd /Users/wangsuyan/Desktop/project/Kmart
pod install

这种输入需要我们切换到项目的根目录,我们往往不记得自己项目的目录,查找时比较耗时。我们完全可以使用一个脚本(podlgsk.sh),直接执行(./podlgsk.sh)。

#!/bin/bash
cd /Users/wangsuyan/desktop/project/Kmart
pod install

执行(执行前需要给脚本执行权限,chmod +x podlgsk.sh):

$ ./podlgsk.sh

感受到脚本的“魅力”后,我们可以感受一下 @唐巧_body 查找未使用的图片的 shell 脚本。关于查找项目中未使用的图片也可以参考这里的 Python 脚本,用了你就会爱上它(开玩笑呢,别当真)。

#!/bin/sh

cd /Users/wangsuyan/Desktop/project/Kmart
PROJ=`find . -name '*.xib' -o -name '*.[mh]'`

for png in `find . -name '*.png'`
do
    name=`basename $png`
    if ! grep -qhs "$name" "$PROJ"; then
        echo "$png is not referenced"
    fi
done

【解析】

  1. cd /Users/wangsuyan/Desktop/project/Kmart,进入项目所在的目录;
  2. 查找项目中所有 png 图片;
  3. 遍历所有的 png 图片,使用 grep 命令查找项目中是否使用过该图片,如果未使用将打印出 xxx is not referenced;

【知识点】
cd 命令(进入项目的根目录);
find 命令(查找符合要求的文件,这里注意查找 xib,.h 和 .m 文件);
grep 命令(查找文本内容);
正则表达式,比如:'.[hm]' 和 '.xib'。 关于正则表达式的使用,上一期已经专门介绍了
Shell 脚本中的 for 循环,if 条件判断。

了解了 Shell 脚本的使用后,下一次将介绍一些它的基本语法,帮助读者可以看懂 Shell 脚本。

【Shell 脚本 Day4】

使用 Pod 的同学经常会遇到 "error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation." 错误,其实是 [CP] Check Pods Manifest.lock 这个脚本所起的作用。

Pod 中有 Manifest.lock 和 Podfile.lock 这两个文件,只要这两个文件的内容不一样就会报错上面这个错误。Podfile.lock 是大家共用的文件(用来保证我们每个人的Pod库版本一样),而Manifest.lock是本地的文件(自己用)。而【图2】中这个脚本正是做这样的事情。

解释下这个脚本:
shell 脚本总是以:#!/bin/bash 或者 #!/bin/sh 开头,它主要告诉系统执行这个文件需要那个解释器,进入 /bin 目录下可以看到 bash 和 sh 解释器;

echo "This is a test shell created by Lefe_x"
exit 1
if 条件 ; then
fi

如何在终端执行脚本:
假如有个叫 podlgsk.sh 的脚本,只要给予它执行权限(chmod +x podlgsk.sh),注意只需要给一次执行权限就行,下次运行脚本时就不需要给予执行权限了,然后直接 ./podlgsk.sh 即可。

===== 我是有底线的 ======
喜欢我的文章,欢迎关注我的新浪微博 Lefe_x,我会不定期的分享一些开发技巧

上一篇下一篇

猜你喜欢

热点阅读