Mac:终端和 shell 配置

今天不写博客了,水一篇玩玩。老祖宗说,工欲善其事,必先利其器。很多做开发的同学都喜欢 Mac,我也是,自从用了之后爱不释手,但是当帮助一些同学解决问题的时候,总是发现,有些同学的终端使用的是 Mac 自带的终端和 shell,特别难用,完全无法发挥 Mac 的威力,然后给他们推荐怎么配置一下更好用,但是发现很多同学都是,现在已经懒得一个一个同学的说了,所以今天我就写一篇文章,怎么配置更好用的终端和 shell,希望下次再遇到直接能甩给他这篇文章就行。 一. 终端,iterm2 很多同学首先使用的终端是原生终端,那个终端说实话太难用了,我都想不出来理由,这么好用的电脑,苹果是如何忍受这么难用的终端的,这里给大家推荐一个好用的终端:iterm2。官网地址:https://iterm2.com/,GitHub 地址:https://github.com/gnachman/iTerm2,怎么安装这个就不用说了,傻瓜式的。 需要说明的是,安装完成之后,iterm2 默认窗口的大小,个人感觉是有点小的,所以做了一点点修改,希望默认窗口能大一些,修改步骤如下:打开工具 iTerm –> 点击mac左上角的 iTerm2 –> Preferences –> 选择Profiles –> Window –> Settings for New Windows,修改:Columns 和 Rows,个人设置的是 140 和 36,感觉还行,然后关闭,重新打开iTerm。就可以看到你更改后的效果。 二. shell,Oh My Zsh shell 是什么,我也不想解释了,大家可以自己搜索,另外如果想查看自己电脑有几种 shell,可以使用如下命令: cat /etc/shells 在 Linux 系统里执行这个命令和 Mac 略有不同,你会发现 Mac 多了一个 zsh,也就是说,mac 为用户预装了个 zsh。不过由于早期配置过于复杂,无人问津,很多人跑来看看 zsh 的配置指南,二话不说扭头就走了。直到有一天,国外有个穷极无聊的程序员开发出了一个能够让你快速上手的 zsh 项目,叫做:oh my zsh,官网地址:https://ohmyz.sh/,Github 地址是:https://github.com/ohmyzsh/ohmyzsh 使它的配置一下子简单起来了,下面就简单说说这个 Oh My Zsh。 安装,就一步: 由于目前系统的默认 Shell 都是 bash(可以通过:echo $SHELL 查看),所以需要使用如下命令修改当前用户使用 zsh: ...

May 2, 2020 · 2 min · 270 words · Bridge Li

运维之maven版Git上线脚本

之前的文章曾写了Git怎么用和Git服务器怎么搭建,一个公司仅仅只有这些还是远远不够的,这些仅仅是对源码的管理,程序猿开发好的源码怎么编译、打包、部署上线呢?下面就需要运维来解决这个问题了,不过这一段时间公司老大让老夫负责公司的源码由SVN迁Git,有幸接触到一点这块的知识,今天记录一下,万一老夫哪天失业了转行去做运维了呢! 在开始正式文章之前,首先感谢一下我在小马金融的同事:张学军,此脚本原始版本是由学军提供的,然后加上老夫的优化,可以说没有学军的无私帮助,老夫不可能完成这个脚本的,所以,谢谢,学军! #!/bin/bash export JAVA_HOME=/usr/local/jdk1.7.0_67 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH dir_path="/apps/project/project_name" work="project_name" DATE=\`date +%Y%m%d%H%M\` tomcat="apache-tomcat-6.0.41_project_name" cd $dir_path if [ ! -d wars ];then mkdir wars fi if [ -d ROOT ];then tar cfz ROOT-$DATE.tar.gz ROOT mv ROOT-$DATE.tar.gz wars/ fi git_update(){ tag_version=$1 cd $dir_path/$work git checkout master git pull echo $tag_version git_tag=\`git tag|grep -x $tag_version\` if [ "$git_tag" = "$tag_version" ];then git checkout -b \`date +%Y%m%d%H%M\` $git_tag else printf "tag number input error n" exit 1 fi git_id1=\`git log -1 –format=%H\` git_id2=\`git show $git_tag |grep commit |awk ‘{print $2}’ |head -1\` if [ "$git_id1" != "$git_id2" ];then printf "The current git branch where inconsistent tag number is correct , please check the tag number n" exit 1 fi } tag_version=$1 if [ "$tag_version" = "" ];then printf "Please enter the version number n" exit 1 else git_update $1 echo $1 >> ${dir_path}/tag.txt fi build(){ dir_path=$1 work=$2 cd $dir_path/$work mvn package -DskipTests if [ -d $dir_path/$work/target ];then cd $dir_path/$work/target else echo "build $dir_path/$work failed" exit fi return 1 } build $dir_path $work type=$? if [ $type -eq 1 ];then cd $dir_path/$work/target work_name=\`ls |grep $work |grep -v "war|jar|gz"\` else echo "build failure" exit 1 fi if [ -d $dir_path/ROOT ];then rm -rf $dir_path/ROOT fi cd $dir_path/$work/target/ mv $work_name $dir_path/ROOT if [ -d $dir_path/ROOT ];then scp $dir_path/config.properties $dir_path/ROOT/WEB-INF/classes/ scp $dir_path/redis.properties $dir_path/ROOT/WEB-INF/classes/ scp $dir_path/jdbc.properties $dir_path/ROOT/WEB-INF/classes/ fi tomcat_status=\`ps aux |grep $tomcat |grep -v "gerp">/dev/null;echo $?\` if [ $tomcat_status -eq 0 ];then kill -9 \`ps aux |grep $tomcat |grep -v "grep"|awk ‘{print $2}’\`;rm -rf /usr/local/$tomcat/work/\*;rm -rf /usr/local/$tomcat/temp/\*;/usr/local/$tomcat/bin/startup.sh else rm -rf /usr/local/$tomcat/work/\*;rm -rf /usr/local/$tomcat/temp/\*;/usr/local/$tomcat/bin/startup.sh fi 注:里面的project_name是项目名,老夫隐藏了公司的实际项目名,就以project_name代替了,实际用的时候请根据实际情况修改 ...

October 24, 2015 · 2 min · 321 words · Bridge Li

Shell编程入门

一、Shell入门 我们先看一个小例子,永恒的经典:Hello World #!/bin/sh var="Hello World!" echo $var 保存,文件名为:hello 我们发现文件的第一行虽是一个注释,但是说明了文件的执行是由/bin/sh来执行,所以我们这么来执行这个文件: /bin/sh hello 就可以看到结果了,但我们知道在Linux下,一个文件是否可以执行是由文件属性来决定的,那么我们是否可以给他加上可执行权限,来执行这个文件呢? 先执行如下命令: chmod u+x hello 然后我们在直接敲命令:hello,看到什么现象? 所以一个文件被执行有这两个途径 二、Shell语法入门 输入/输出内部命令 ①. echo 输出命令 ②. read 输入命令 例如: #!/bin/sh echo Name: read NAME echo Phone: read PHONE echo SNAME,SPHONE > contact.txt if条件语句 在看if条件语句之前,我们先看一下:测试命令执行结果,在Linux下正确的命令执行结果为0,否则为其他值,我们可以用: echo $? 来看上一个命令的执行结果,懂了这些之后,我们在看那些常见语法 if 条件测试命令串 then 条件为真时执行的命令 else 条件为假时执行的命令 fi 注:if和then必须是两行,如果放一行,请在then前加“;” 例如: #!/bin/sh echo Input file name: read NAME if [ -d $NAME ] then echo Dir else echo Not Dir fi case条件语句 case 条件测试命令串 in 表达式1) 分支1执行的命令 ;; 表达式2) 分支2执行的命令 ;; *) 其他命令 ;; esac 例如: ...

April 19, 2015 · 2 min · 283 words · Bridge Li