awesome-macos-command, As developer use your macOS terminal command statements to do awesome things.
很棒的macOS命令行,作为开发者,使用你的macOS终端命令语句做些很棒的事情。
.......................
xcode-select --install
xcode-select --print-path
xcode-select -switch xcode_folder_path
xcode-select -version
xcodebuild -version
xcodebuild -showsdks
xcodebuild -list
xcodebuild -sdk iphonesimulator10.0
xcodebuild -sdk iphonesimulator10.0 -configuration Debug
xcodebuild clean -sdk iphonesimulator10.0 -configuration Debug
xcrun simctl delete unavailable
defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID
ssh-keygen -t rsa -C “your_email@youremail.com”
ssh -T git@github.com
git config --global user.name "username"
git config --global user.email "your_email@youremail.com"
git init // 初始化Git仓库
git add . //添加所有文件(只是在本地准备好,注意那个“.”表示所有文件)
git commit -m 'create project' //引号中是说明信息
git remote add origin git@github.com:shaojiankui/JKCategories.git //添加远程Git地址
git push origin master //上传到远程git
git add . //修改好本地文件后,如果添加了内容则要先git add
git commit -a -m 'new feature' //修改(本地)
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master
上传到远程git,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,指定远程分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
git push origin :master
//等同于
git push origin --delete master
git branch
git branch -r
git branch -a
git branch newbranch
git branch newbranch2.6 v2.6
git push origin newbranch2.6
git checkout newbranch2.6
git branch -m | -M oldbranch newbranch
如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。
git branch -d | -D branchname
git branch -d -r branchname
git push origin :branchname //推送到服务器
git tag 或者 git tag -l
与切换分支命令相同
git checkout tagname //查看标签信息
用git show命令可以查看标签的版本信息:
git show 1.4
git tag -a 1.4 -m 'version 1.4' //注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。
git push origin –tags //上传所有tag到远程git
打标签不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的SHA(通过git log获取)。
git tag -a 1.5 0ea9addc03b44e73415c8fadb5e73999f569fc21
git tag -d 1.4 //删除本地tag
git push origin :refs/tags/1.4 //删除服务器tag
git reflog show或git log -g
security find-identity -v -p codesigning
codesign -s 'iPhone Developer: 6077782@qq.com (W26TLN2W63)' Example.app
为了重新设置签名,你必须带上 -f 参数,有了这个参数,codesign 会用你选择的签名替换掉已经存在的那一个:
codesign -f -s 'iPhone Developer: 6077782@qq.com (W26TLN2W63)' Example.app
codesign 还可以为你提供有关一个可执行文件签名状态的信息,这些信息在出现不明错误时会提供巨大的帮助:
codesign -vv -d Example.app
codesign --verify Example.app
codesign -d --entitlements - Example.app
security cms -D -i test.mobileprovision
security cms -D -i test.mobileprovision | perl -nle 'print $& if m{(?<=<data>).*?(?=</data>)}' | base64 -D > mobile.cer
gem sources -l
gem sources --remove https://rubygems.org
gem sources --add http://gems.ruby-china.org/
sudo gem update -n /usr/local/bin --system
//如果 gem -v还是老版本,执行
sudo update_rubygems
sudo gem install -n /usr/local/bin GEM_NAME_HERE
sudo gem install -n /usr/local/bin cocoapods
pod --version
先删除,再添加,再更新
pod repo remove master
pod repo add master http://git.oschina.net/akuandev/Specs.git
//pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update
pod search AFNetworking
pod setup
执行pod install和pod update的时候,cocoapods都会默认更新一次spec仓库比较耗时作。如果spec版本库不需要更新,给这两个命令加一个参数(--no-repo-update)跳过spec版本库更新
pod install --no-repo-update
pod update --no-repo-update
brew list
brew update
brew deps
brew install softname
brew uninstall softname
brew search /softna*/ //
svn checkout svn://192.168.1.1/pro/domain
svn add file
svn add *.php //(添加当前目录下所有的php文件)
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
svn commit -m "add test file for my test" test.php
svn ci //简写
svn lock -m "LockMessage" [--force] PATH
svn lock -m "lock test file" test.php
svn unlock PATH
svn update -r m path
svn up //简写
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
svn status path //(目录下的文件和子目录的状态,正常状态不显示),【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
//或者
delete test.php
svn ci -m 'delete test file'
svn log path
svn info path
svn diff -r m:n path(对版本m和版本n比较差异)
svn revert PATH
svn diff -r m:n path(对版本m和版本n比较差异)
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID
defaults write com.apple.finder AppleShowAllFiles -bool true //显示
defaults write com.apple.finder AppleShowAllFiles -bool false //隐藏
defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME"="Baidu";}'
defaults write com.apple.Xcode ORGANIZATIONNAME "Baidu"
find . -name "*view.h*"
find . -name "*.rmvb" -maxdept 1
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
find . -name '*.sql'| awk -F "." '{print $2}'|xargs -I'{}' mv ./{}.sql ./{}.txt
find ./ -name ".DS_Store" | xargs rm -Rf
sudo find ./ -name ".DS_Store" -depth -exec rm {} \;
find . -iname "Demo-Info.plist" |xargs git rm -rf --cached
find . -name "*.m" -or -name "*.h" |xargs grep -v "^$"|wc -l
//grep -v "^$"是去掉空行
find . "(" -name "*.m" -or -name "*.strings" -or -name "*.h" ")" -print | xargs wc -l
lipo -info /Users/Jakey/libData.a
lipo -detailed_info /Users/Jakey/libData.a //详细信息
lipo -info /Users/Jakey/libData.Framework/libData
find . -name *.a -exec lipo -info "{}" \;
lipo -thin armv7 libData.a -output libData.a.armv7
lipo –create Release-iphoneos/libiphone.a Debig-iphonesimulator/libiphone.a –output libiphone.a
sudo mount -t nfs 192.168.1.109:/Share /Users/jakey/nfs
openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
chflags nohidden ~/Library/
ifconfig en0 |grep ether
sudo ifconfig en0 ether XX-XX-XX-XX-XX-XX
openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
networksetup -listallnetworkservices
sudo networksetup-setdnsservers AirPort 192.168.10.200
sudo networksetup -setdnsservers networkservice DNS1 DNS2
sudo networksetup -setdnsservers AirPort 192.168.10.200 8.8.8.8
###清空DNS缓存
dscacheutil -flushcache
sudo route -n flush
sudo route delete 0.0.0.0
sudo route add -net 0.0.0.0 192.168.1.1
sudo route add 10.200.0.0 10.200.22.254
sudo route add 10.0.1.0/24 10.200.22.254
显示网络接口(interface)信息。如接口名称,接口类型,接口的IP地址,硬件的MAC地址等。
ifconfig en0 up/down
sudo ifconfig en0 192.168.1.33
ARP协议用在局域网(LAN)内部。借用ARP协议,设备可以知道同一局域网内的IP-MAC对应关系。当我们访问一个本地IP地址时,设备根据该对应关系,与对应的MAC地址通信。通过ARP工具,我们可以知道局域网内的通信是否正常。
arp -a
sudo arping -I eth0 192.168.1.1 //arping需要自行安装
sudo arp-scan -l //arp-scan需要自行安装
sudo tcpdump -i en0 arp
tcpdump是一款网络抓包工具。它可以监听网络接口不同层的通信,并过滤出特定的内容,比如特定协议、特定端口等等。我们上面已经使用tcpdump监听了ARP协议通信。这里我们来看更多的监听方式。
sudo tcpdump -i en0
sudo tcpdump -A -i en0
sudo tcpdump -i en0 'port 8080'
sudo tcpdump -i eth1 src 192.168.1.200
sudo tcpdump -i eth1 dst 192.168.1.101 and port 80
sudo tcpdump -w record.pcap -i lo0
网络层是一个广域的互联网,互联网上的设备用IP地址识别。ping是向某个IP地址发送ICMP协议的ECHO_REQUEST请求。收到该请求的设备,将返回ICMP回复。如果ping到某个IP地址,那么说明该IP地址的设备可以经网络层顺利到达。
ping 192.168.1.1
局域网通过路由器,接入广域的互联网。互联网上的通信往往要经过多个路由器接力。途中路由器的故障,可能导致互联网访问异常。
netstat -nr
traceroute 74.125.128.99
traceroute -I 74.125.128.99
sudo traceroute -T -p 80 74.125.128.99
DNS是在域名和IP之间进行翻译。DNS故障会导致我们无法通过域名访问某个网址。
host www.baidu.com
whois www.baidu.com
curl http://www.skyfox.org
-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地
curl -o mynews.html http://dev.skyfox.org/news.html
curl -O http://dev.skyfox.org/news.html
通过使用-C选项可对大文件使用断点续传功能
curl -C - -O http://dev.skyfox.org/news.html
CURL同样支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件
# 列出public_html下的所有文件夹和文件
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
# 下载xss.php文件
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
通过 -T 选项可将指定的本地文件上传到FTP服务器上
# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
-x 选项可以为CURL添加代理功能
# 指定代理主机和端口
curl -x proxysever.test.com:3128 http://google.co.in
# 将网站的cookies信息保存到sugarcookies文件中
curl -D sugarcookies http://localhost/sugarcrm/index.php
# 使用上次保存的cookie信息
curl -b sugarcookies http://localhost/sugarcrm/index.php
默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据 可以通过 --data/-d 方式指定使用POST方式传递数据
# GET
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
# POST
curl -u username --data "param1=value1¶m2=value" https://api.github.com
# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
curl --data @filename https://github.api.com/authorizations
# CURL 发送磁盘上面的JSON文件
curl -X POST -H 'content-type: application/json' -d @myjsonfile.txt http://some.url/param
# CURL在命令行直接发送JSON结构数据
curl -H "Content-Type: application/json" -d '{"user":{"uid":123,"username":"woshishui"},"baseinfo":"afsdaa"}' http://api.skyfox.org/project/afndemo/getTypes.do
spctl manages the security assessment policy subsystem.
spctl --assess --verbose /Applications/Xcode.app
系统有一个保护叫做 Gatekeeper , 这个是防止第三方应用访问你的隐私信息的. 如果你想关掉或者开启在终端里输入
#关掉
sudo spctl --master-disable
#开启
sudo spctl --master-enable