iOS开发之命令行的魅力
命令行使用及安装
作为一个iOS开发者,命令行是我们必须使用的,下面我就简单介绍下命令行的魅力吧!第一次写博客,还是有点小激动 的!!!
注意:.如果系统有些文件夹不能创建,不能修改请看这里(命令行没有中文符号)
系统:本人系统Mac OS X 10.11.2 XCode7.2
1.文件(夹)的显示与隐藏
显示:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false
2.Mac OS X 10.11+下root权限不能修改/bin 等文件夹解决办法
重启电脑,按住 Command + R,进入到恢复界面
打开Terminal终端,然后输入
csrutil disable
如果想改回来,将disable改成enable即可
原因:10.11系统将Rootless修改成了,enable,所以我们需要关掉它, 重启电脑
1.命令行界面配置
相信我们总是有那么点小任性,希望自己的编程软件有自己独特的主题,但是往往系统默认的又不是我们想要,下面就教大家怎么修改自己漂亮的终端(Terminal),
一般终端配置文件在~/.bash_profile(没有手动创建)这个文件夹里面,在后面添加
#for color
export CLICOLOR=1
#\h:W\u\$
export PS1='\[\033[01;33m\]\u@\h\[\033[01;31m\] \W\$\[\033[00m\]’
启动看看,效果是不是变样了,另外可以修改 终端->偏好设置->下图
接下来就是我自己配置的颜色怎么样
2.vim简单配置
我只介绍简单的一种,配置用户模式下的vim ,终端输入
vim ~/.vimrc //没有就创建
文件里面输入或者粘贴 (前面是我的行号,不要粘贴)
1 set number "设置行号
2 syntax on "语法高亮
3 set tabstop=4 "tab键间隔距离4
4 set autoindent "自动对齐
5 set gdefault "行内替换
6 set ruler "在编辑过程中,在右下角显示光标位置的状态行
7 set showmatch "高亮显示对于括号
更多Vim,请参考
Mac 下Vim配置: http://blog.sina.com.cn/s/blog_5a6efa330101cumx.html
Mac 下Vim命令:http://blog.csdn.net/xdrt81y/article/details/24062117
终端和Vim都配置好了,那么我们也开始转入正题了,
3.cocoapods安装与使用
我们都知道cocoapods是一款xcode导入包的工具,给github紧密结合可以说是天衣无缝,另外还有carthage 命令(后面再说),这种包的管理模式大大节约我们来管理更新项目库的时间。开始之前,先把我们电脑里面的准备环境安装或者更新一遍吧!
1.Homebrew安装与使用
在Mac下Homebrew好像默认安装了,安装是(注意命令行没有中文符号)
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”
其他基本使用
• brew search formula # 搜索软件包
• brew install formula # 安装软件包
• brew remove formula # 移除软件包
• brew cleanup formula # 清除旧包
• brew list # 列出已安装的软件包
• brew update # 更新 Homebrew
• brew upgrade # 升级软件包
• brew home formula # 用浏览器打开
• brew info formula # 显示软件内容信息
• brew deps formula # 显示包的依赖
• brew server # 启动 web 服务器,可以通过浏览器访问
http://localhost:4567 来通过网页来管理包
• brew -h # 帮助
• brew versions formula # 列出软件包的版本
homebrew官方github:https://github.com/Homebrew/homebrew/tree/master/share/doc/homebrew#readme
2.RVM安装
安装RVM
curl -L https://get.rvm.io | bash -s stable
安装时可能会问你sudo管理员密码,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。 然后,载入 RVM环境(新开 Termal 就不用这么做了,会自动重新载入的
安装完成后,检查一下是否安装正确
rvm -v
3.安装 Ruby
列出已知的ruby版本 ,会显示最新的版本
rvm list known
然后安装最新,更新也是这个方法
rvm install 2.0.0
管理Ruby版本,需要执行下面的命令将指定版本的 Ruby设置为系统默认版本
rvm 2.0.0 --default
你也可以用其他版本号,前提是你有用 rvm install安装过那个版本,查看版本
ruby -v
4.准备工作做好了,下面来真正安装吧(前面的准备工作,不是必须的,Mac OS内置的有
$ sudo gem update --system // 先更新gem(建议VPN),国内需要切换源
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l
http://ruby.taobao.org/
上面是切换成淘宝的,国内好使,不影响pod版本
$ sudo gem install cocoapods // 安装cocoapods
$ pod setup
和安装过程是一样的,再次查看版本
$ pod --version
0.39.0
那么安装成功了,
想了解更多,去cocoapods官网:https://cocoapods.org
4.git安装与使用
1.下载dmg 安装,地址: http://git-scm.com/downloads
2.命令行安装
sudo git clone https://github.com/git/git
3.Homebrew安装
sudo brew install git
4.另外还可以其他方式安装,详情看下面链接
Mac OS X Git安装教程:http://www.cnblogs.com/ccdev/archive/2012/09/12/2682098.html
简易git安装: http://www.cocoachina.com/bbs/read.php?tid=200557
git命令: http://justcoding.iteye.com/blog/1830388
git:更新问题: http://segmentfault.com/q/1010000000095119
下面给张图片,git命令的图片(图片来源别人一篇博客,忘记帖子了)
5.xcode build 命令行打包上传
对于一个iOS开发新手来说,让给APP打包,感觉好麻烦,下面带你看命令的神奇效果
工程文件为test,首先切换到该目录。
1.清除编译对象
xcodebuild -target test clean 可以简写成 xcodebuild clean
2.编译
方法1:xcodebuild -target test -configuration Release
方法2:xcodebuild -target test 可以简写成 xcodebuild 执行后会有bulid文件
3.打包
xcrun -sdk iphoneos PackageApplication -v ./build/Release-iphoneos/test.app -o ~/test.ipa
解释:-v 后面是app文件及所在路径,-o后面则是存放的ipa文件名及预存放的位置
这里感觉是不是还是很麻烦,那么用脚本吧,
脚本步骤: 1.打开命令行
2.拖动ipa-build(脚本(shell)命令文件)到命令行(需要下载脚本仓库)
3.拖动项目主目录
4.回车就OK了(包在项目根目录build文件夹里面)
详情请看上面网址:http://blog.csdn.net/ccf0703/article/details/8588667
github脚本仓库:https://github.com/webfrogs/xcode_shell
/**************************************************************************************/
补充:看到脚本命令多么神奇了吗,其实就是把上面直接xcodebuild命令写成脚本形式,其实喜欢脚本的朋友可以学习一下脚本的基本语法使用:给你们推荐两个网站,
http://www.w3school.com.cn
http://www.runoob.com
可以学习基本的语言,比如:PHP,Python,ruby,shell,这些都是脚本语言,当然主流的语言也是应有尽有,当然学习这些脚本语言还得有一个编辑器,下面给你们推荐一款好用的:
Sublime3(大概11MB):http://www.sublimetext.com/3 (有Mac,windows,Ubuntu)版本,这是一个非常使用的工具,各种插件功能强大,
6.Mac 安装WinRar命令行解压缩
有些人是不是给我一样有强迫症,不想电脑装太多没有用的软件,那么我们就来装些命令行软件吧
• 下载RAR 5.3.0 for Mac OS X(目前最新)国内下载较慢,
官网:http://www.rarlab.com/download.htm
• 双击解压或命令行tar解压文件:rarosx-5.3.0.rar 生成目录rar
• 终端下:cd ~/Downloads/rar (即进入rar目录下)
• 使用如下命令分别安装unrar和rar命令
安装unrar命令:sudo install –c –o$USER unrar /bin
安装rar命令:sudo install –c –o$USER rar /bin
注意:命令的空格,如果成功,终端输入:rar,可以查看rar命令帮助
• 压缩文件
rar命令: rar a 生成文件名.rar 要压缩的文件或文件夹
rar a my.rar your
• 压缩文件
rar e 你的文件或文件夹 (解压到当前文件夹)
unrar x test.rar (解压到当前文件夹)
• 如果文件名含有空格,用单引号 :’test.rar’
7.Mac WebSever & PHp推送
一:Mac端服务器配置
1.启动Apache
启动:sudo apachectl start
停止:sudo apachectl stop
重启:sudo apachectl restart
查看 Apache 版本 httpd –v
2. PHP
OSX 10.11.2 已经预装了 PHP 5.5.30, 编辑 httpd.conf
sudo vi /etc/apache2/httpd.conf
取消这一行前边的注释符号 #
LoadModule php5_module libexec/apache2/libphp5.so
重启 Apache
sudo apachectl restart
查看 Apache 信息
3.权限( 不是必须的)
为了方便程序在 ~/Sites 目录下读写
sudo chmod -R a+w ~/Sites/testsite
若担心安全问题,可以使用 _www 权限,若这样做当需要 admin 权限需做验证:
sudo chown -R _www ~/Sites/testsite
二 PHP推送
1.执行PHP后台推送之前,需要你导出p12证书,具体请看下文
http://blog.csdn.net/x32sky/article/details/17527655
2.执行生成两个P12文件
1. 需要通过终端命令将这些文件转换为PEM格式:
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
2. 如果你想要移除密码,要么在导出/转换时不要设定或者执行:
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
3. 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS 时需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
例如:
openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12
openssl pkcs12 -nocerts -out key.pem -in key.p12
cat cert.pem key.pem > anps_dis_fan.pem
3.PHP推送代码
既然证书创建好了,web服务器创建好了,那么自己就快要通过浏览器访问PHP文件,接口,下面是一个apns_push.php文件用来给手机发推送的,可以自己来调试APP的推送功能了。
1.创建推送的PHP文件,放到系统 /Library/WebServer/Documents/
2.启动web服务,浏览器访问,
3.输入地址和devicetoken参数,也可以写死自己APP里面生成的自己手机的token
4.访问就可以看到输出,手机APP就会收到推送了
/***************************************php代码开始***************************/
$message,#推送的消息
'sound' => 'default', #$sound = "ping1.caf";
'badge' => 1
);
/* End of Configurable Items */
$ctx = stream_context_create();
// anps_dev_club是在同文件夹下的pem证书(配置证书)
stream_context_set_option($ctx, 'ssl', 'local_cert', 'anps_dev_club.pem');
// assume the private key passphase was removed.(输入密码)
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
// ssl://gateway.sandbox.push.apple.com:2195 这个是苹果开发测试地址
// ssl://gateway.push.apple.com:2195 苹果发布运行地址
$apnsHost='ssl://gateway.sandbox.push.apple.com:2195';
// $apnsHost='ssl://gateway.push.apple.com:2195';
#好像这个用发布和调试都可以
$fp = stream_socket_client($apnsHost, $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
#发布
// $fp = stream_socket_client($apnsHost, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
print "Failed to connect $err $errstrn";
return;
}
else {
print "Connection OKn-----";
}
# 把字典转化成 json字符串
$payload = json_encode($body);
// 这是去掉空格,什么的,因为token里面含有一些不用的符号
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
print "sending message :" . $payload . "n".$msg;
// 发生推送
$result=fwrite($fp, $msg,strlen($msg));
fclose($fp);
?>
/***************************************php代码完毕***************************/
8.sqllite 和MySQL命令行操作
1.Sqlit3 Command line
• 打开创建数据库:在你想创建或者打开的目录下执行
sqlite3 db.sqlite
• 创建表:
create table table1(userID integer primary key autoincrement,
name varchar(20),
age int,
tel varchar(11)
);
• 给表增加字段
alter table table1 add contry varchar(50);
• 表的增加、删除、修改、查询
增加:insert into table1 values(NULL,’fan’,20,’182743847);
删除:delete from table1 where userID=3;
修改:update table1 set name=’fan1’ where userID=1;
查询:select * from table1 order by name limit 10; desc;//asc
• 删除表:
drop table if exists table1;
• 从一个表里面移除一个字段的方法(创建新表)
create table table2 as select userID,name,age from table1;
• 表重新命名
alter table table2 rename to table1;
• 帮助
.help
• 查看表结构:
.tables; 表个数;.schema table1; 表结构
更多操作:http://blog.csdn.net/majiakun1/article/details/41281935
http://www.cnblogs.com/einyboy/archive/2013/03/12/2955378.html
2.mysql 命令行
使用MySQL需要安装MySQL服务,可以去官网下载:
http://www.mysql.com/downloads/
• 创建表
create table fan (userID int primary key auto_increment,name varchar(20),age int,tel varchar(11));
• 登录远程主机 (本地与远程操作是一样的)
ssh username@192.168.1.1
• 显示数据库
show databases;
• 使用数据库
use dbname;
• 显示表
show tablename;
• 显示表结构
desc tablename;
• 显示创建表结构
show create table tablename;
• 其他命令与SQLite3基本一样
8. cocos2dx连接xcode
官网下载:http://www.cocos.com/download/# (最新版本V3.9)
首先解压cocos2dx-3.9,把它放到你容易找到的地方。
然后打开命令行 cd 到cocos2dx-3.9 文件根目录下
命令行输入 ./setup.py 回车即可完成安装
创建项目
cocos new -d ~/Desktop/Game -l cpp -p com.fan.game FanGame
解释:创建一个包名是com.fan.game的FanGame项目语言是cpp(c++)
cocos new –d 目标路径
-l 语言 有cpp,lua,js
-p 包名
最后一个参数:项目名
命令就可以去找到iOS文件夹启动项目运行就可以看看效果了
题外话
1.搜索文件(夹)
find ./ -name ‘fan*’
find ./ -iname ‘fan*’
mdfind -name 文件名
mdfind ‘fan’ 查询所有包含fan的文件
mdfind -onlyin ~/Library plist 这条命令可以搜索Library文件夹中所有plist文件。
# 找到全部不包含i开头的PNG图片,是图片的执行删除
# find . ! -name "i*.png" -name "422333323223*.png" -exec rm -rf {} \;
# for i in `find . -name "*.png"`
# do
# newname='echo $i|sed'
# # `mv $i $newname`
# pwd
# done
find . -name 'CVS' -exec rm -rf {} \;
# 查找当前文件夹下,是’CVS’的文件(夹)执行删除操作
# linux或Mac 下执行.sh文件总是提示permission denied
# 如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限)
# chmod 777 *.sh
# or
# chmod +x *.sh
哎呀,写个博客还是很累人的,我只是写了一些常用的,希望有些东西能帮到你们,有什么问题可以底下留言,或者邮箱留言,下面我要睡一觉了
个人邮箱: fanxiangyang_heda@163.com
个人github: https://github.com/fanxiangyang