基本
shell是一个C语言编写的程序,我们可以用这个应用程序来访问操作系统内核的服务
shell脚本
shell脚本,是一种为shell编写的脚本程序,我们平时说的shell一般都是在说写shell脚本,而不是开发shell
下面我们利用shell,编写一个脚本,使得以后在iOS开发中可以快速的创建一个项目分类的文件夹
(本质就是达到一个快速创建项目分类的目的)(以下指令均在终端中操作)
1)首先我们在桌面创建一个文件夹,并且进入编写指令
Last login: Fri Dec 25 11:32:35 on ttys003
zhangjinzhao:~ ZhangJinzhao$ cd /Users/lanou3g/Desktop/
zhangjinzhao:Desktop ZhangJinzhao$ mkdir shellDemo && cd shellDemo
2)此时我们已经进入到了创建的shellDemo文件夹下,然后我们需要在这个文件夹下面创建一个"makeProjectDir.sh"文件,并写入你需要创建的文件夹名称
zhangjinzhao:shellDemo ZhangJinzhao$ vim makeProjectDir.sh
终端进入
vim makeProjectDir.sh(如果存在直接打开,不存在创建后打开)
此时进入文件,如果是编辑模式,即可以进行编辑,或者是命令模式
编辑模式—>ESC+shift+冒号键+w键,此时可以写入
编辑模式—>ESC+shift+冒号键+q键,此时已经离开
编辑模式—>ESC+shift+冒号键+wq键,此时写入并离开
编辑模式—>ESC+shift+冒号键+wq!键,强制写入并离开
命令模式—>i键—>进入编辑模式
set nu:显示行号
ESC后 输入dd 可以删掉一行
#! /bin/bash
#shell脚本
mkdir classes && cd classes
mkdir Appdelegate General Helpers Marco Models Resources Scenes Vendors
3) 此时我们的文件夹名称就已经列入完毕,退出后执行
zhangjinzhao:shellDemo ZhangJinzhao$ chmod +x makeProjectDir.sh
只有输入上面这行命令,终端才会知道此文件是脚本文件,成为终端可读,才会当它是命令行处理,下面执行脚本
zhangjinzhao:shellDemo ZhangJinzhao$ makeProjectDir.sh
4)此时我们就可以看到桌面上我们创建的shellDemo文件夹,里面有我们创建的简单分类,不仅如此我们现在可以在任何文件夹下执行这个指令都会生成此类文件分类(辛苦这一次,以后是不是很便捷呢)
zhangjinzhao:shellDemo ZhangJinzhao$ makeProjectDir.sh
5)注意:如果在此时,我们重新打开一个终端想要执行上面指令之前要先执行下面指令,这时候在新的终端下,才会认可我们之前那个终端的操作
zhangjinzhao:Scenes ZhangJinzhao$ source ~/.bash_profile
以上就是我们利用简单的shell语言,编写能够快速创建项目分类的一个指令.
下面我们再利用shell语言,解决一个小小的实际问题.
当我们每次创建一个工程的时候,同时会生成一对Appdelegate(.h,.m)文件,此时我们导入刚刚创建的项目分类文件夹的时候,我想要把这对Appdelegate文件,相应的放到我们的/classes/Appdelegate文件夹里面.
1)首先再次打开我们之前创建的makeProjectDir.sh,进行如下操作
#! /bin/bash
#shell脚本
mkdir classes && cd classes
mkdir Appdelegate General Helpers Marco Models Resources Scenes Verdors
#当前路径是在classes里面,要取到上一级(..)的appdelegate文件,移动到classes下的appdelegate文件夹下
#mv 原文件 目的文件
mv ../AppDelegate.h Appdelegate/Appdelegate.h
mv ../AppDelegate.m Appdelegate/Appdelegate.m
#echo 在终端输出一段文字
echo "创建项目文件夹成功"
2)我们打开终端,回到桌面下,在系统下追加一个自己的路径
zhangjinzhao:Desktop ZhangJinzhao$ vim ~/.bash_profile
3)进入之后,输入下面
#在系统环境变量后面追加一个路径
export PATH="$PATH:/Users/lanou3g/Desktop/shellDemo"
4)此时我们就可以建立一个项目文件夹,之后终端在项目文件夹下执行下面指令,就可以成功创建项目分类文件,并且把对应的Appdelegate文件,相应的放到我们的/classes/Appdelegate文件夹里面.
zhangjinzhao:Desktop ZhangJinzhao$ cd /Users/lanou3g/Desktop/text/textProject/textProject
zhangjinzhao:textProject ZhangJinzhao$ makeProjectDir.sh
创建项目文件夹成功
zhangjinzhao:textProject ZhangJinzhao$
另外我们还可以再写一个shell文件,以后我们可以通过指令创建出Views Models Controllers三个文件夹
1)在之前的shellDemo里面再创建一个shell文件
zhangjinzhao:shellDemo ZhangJinzhao$ vim makeModule.sh
2)进入后输入
# !/bin/bash
#判断是否传入一个参数
#$1 是调用脚本时传进来的第一个参数
# shell中得脚本 判断if 时需要和test组合起来
if test $1
then
#判断结果是yes 会执行这儿
mkdir $1
cd $1
mkdir Views Models Controllers
echo "$!模块创建成功"
else
#判断结果是no 会执行这儿
echo "请输入一个模块名称"
fi
3)之后(上面提到过,一定要执行以下)
zhangjinzhao:shellDemo ZhangJinzhao$ chmod +x makeModule.sh
4)然后执行下面指令查看是否成功
zhangjinzhao:shellDemo ZhangJinzhao$ cd ..
zhangjinzhao:Desktop ZhangJinzhao$ cd /Users/lanou3g/Desktop/text/classes/Scenes
zhangjinzhao:Scenes ZhangJinzhao$ makeModule.sh 首页
模块创建成功
zhangjinzhao:Scenes ZhangJinzhao$
至此我们就完成了利用shell指令对创建项目文件夹的便捷创建,总结以后,我们再创建文件夹,就简便多了
1)当我们随便的创建了一个项目之后,在对应的终端内输入以下指令,即可创建一个名为classes(自己设置的)项目文件夹
zhangjinzhao:textProject ZhangJinzhao$ makeProjectDir.sh
2)再在对应的项目文件夹下面,对应的终端内输入以下指令,即可创建对应的 Views Models Controllers文件夹,例如:
zhangjinzhao:Scenes ZhangJinzhao$ makeModule.sh 首页
再次强调: 如果指令不生效的时候,也许你是在一个新的终端进行的操作,此时别忘了在前面加上一个
zhangjinzhao:shellDemo ZhangJinzhao$ source ~/.bash_profile