Ubuntu一键配置脚本

经常在网上看到安装完Ubuntu之后应该做的十件事情之类的文章,于是我自己写了一个Ubuntu的配置脚本:
我的Ubuntu版本是14.04LTS

参见我的github地址

首先获取当前的目录:

#!/bin/bash
# 需要sudo来执行
dir=`pwd`

1,脚本需要sudo来执行,所以需要判断是否具有root权限:

function rootness {
    if [[ $EUID -ne 0 ]]
    then
        echo "Error:This script must be run as root!" 1>&2
        exit 1
    fi
}

2,apt-get

function apt_conf {
    apt-get clean
    apt-get autoclean
    apt-get update
    apt-get -y upgrade
    apt-get -y dist-upgrade
}

3,git的配置:

function git_conf {
    apt-get -y install git
    cp $dir/gitconfig ~/.gitconfig
}

这里简单地把我自己的gitconfig文件作为了.gitconfig

[user]
    name = Xiong Jun
    email = adairjun@gmail.com
[color]
    ui = true
[alias]
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
[core]
    editor = vim

4,ubuntu写代码必备之terminator的配置:
除了下载terminator之外,还有terminator的配色方案以及ls的配色方案就是.dircolors

function term_conf {
    apt-get -y install terminator
    git clone https://github.com/ghuntley/terminator-solarized.git $dir
    mkdir -p ~/.config/terminator/
    cp $dir/terminator-solarized/config ~/.config/terminator
    #把默认的配色方案设置为solarized-dark
    sed -i "{/^\s*#/d; /solarized-dark/d; /solarized-light/,+5d}" ~/.config/terminator/config
    git clone https://github.com/seebi/dircolors-solarized.git
    cp $dir/dircolors-solarized/dircolors.256dark ~/.dircolors
    rm -rf $dir/terminator-solarized/
    rm -rf $dir/dircolors-solarized/
}

5,写代码的杀手级编辑器vim怎么能忘记配置呢?

function vim_conf {
    cp $dir/vimrc ~/.vimrc
    mkdir ~/.vim
    cp -R $dir/doc/ ~/.vim/
}

这里的vimrc根据的是我的.vimrc
http://blog.csdn.net/u014120684/article/details/44280211

至于doc这个目录则是汉化版本的help

6,多终端的tmux神器也不能忘了:

function tmux_conf {
    apt-get -y install tmux
    cp $dir/tmux.conf ~/.tmux.conf
}

同样:这里的tmux.conf用的是:
http://blog.csdn.net/u014120684/article/details/44281197

7,等下可是要安装chrome的,如果不改hosts的话,GFW可是不会让我下载chrome的deb:

function hosts_conf {
    git clone https://github.com/racaljk/hosts.git
    cat ./hosts/hosts >> /etc/hosts
    rm -rf ./hosts/
}

8,sublime_text也是一个杀手级别的编辑器:

function sublime_conf {
    dpkg -i $dir/sublime-text_build-3083_amd64.deb
}

至于sublime_text的deb可以直接访问 http://www.sublimetext.com/3 来下载

9,用JAVA编程JDK是必备的:
不过首先要做的是移除自带的openjdk

function jdk_conf {
    apt-get -y autoremove openjdk
    cd /usr/local/lib
    tar -zxvf $dir/jdk-8u45-linux-x64.tar.gz
    cat > /etc/profile <<EOF
export JAVA_HOME=/usr/local/lib/jdk1.8.0_45
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=/usr/local/lib/jdk1.8.0_45/lib
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
    source /etc/profile
    cd $dir
}

这里下载的只是jdk的1.8.0_45版本,请配合自己下载的版本修改这个函数

10,有了jdk,不能忘了eclipse:

function eclipse_conf {
    cd /opt
    tar -zxvf $dir/eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz
    cd $dir
}

linux的/opt目录是 Optional application software packages,就是安装第三方软件的目录啦,以后用tarball安装第三方软件最好解压到这个目录下,方便管理

11,chrome安装:

function chrome_conf {
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    dpkg -i google-chrome-stable_current_amd64.deb 
}

如果先前没有改hosts文件wget可是不会成功的

12,浏览器的flash安装:

function flash_conf {
    apt-get -y install flashplugin-nonfree 
    update-flashplugin-nonfree --install 
}

13,搜狗拼音输入法:

function sogou_conf {
    dpkg -i $dir/sogoupinyin_1.2.0.0056_amd64.deb
}

下载搜狗拼音的安装包前往:http://pinyin.sogou.com/linux/?r=pinyin

14,接下来的这个配置可厉害,让你的ubuntu更加漂亮:
infinality提供了freetype的patches, 目的是提供最好的字体渲染效果。

function infinality_conf {
    add-apt-repository ppa:no1wantdthisname/ppa
    apt-get update
    apt-get -y upgrade
    apt-get -y install fontconfig-infinality
    bash /etc/fonts/infinality/infctl.sh setstyle osx2
}

我参考了这篇文章:http://askubuntu.com/questions/527349/font-rendering-problem-in-ubuntu

15,接来下隆重登场的是替代bash的终极Shell: zsh
以及必不可少的oh-my-zsh和autojump

function zsh_conf {
    apt-get -y install zsh
    chsh -s /bin/zsh
    git clone https://github.com/robbyrussell/oh-my-zsh.git /$HOME/.oh-my-zsh
    cp /$HOME/.oh-my-zsh/templates/zshrc.zsh-template /$HOME/.zshrc
    apt-get -y install autojump
    cat > /$HOME/.zshrc <<EOF
PROMPT=$'[%{$fg[white]%}%n@%m%{$reset_color%} %~]%# '

alias ll='ls -l' 
alias vi='vim'
alias grep="grep --color=auto"
alias egrep="egrep --color=auto"
alias diff="colordiff"
alias javac="javac -J-Dfile.encoding=utf8"
alias java="java -ea"

export TERM=xterm-256color

if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "\$(dircolors -b ~/.dircolors)" || eval "\$(dircolors -b)"
    alias ls='ls --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

[[ -s /usr/share/autojump/autojump.zsh ]] && . /usr/share/autojump/autojump.zsh
EOF
    source /$HOME/.zshrc
}

16,介绍一下我使用的小工具:

function other_conf {
    apt-get -y install tree pstree ack-grep colordiff
    apt-get -y install unrar unzip
    # 安装几个我常用的小工具,秒杀top的htop,两款流量监控工具iftop和nethogs,很好用的下载工具aria2:
    apt-get -y install htop iftop nethogs aria2 
    # Python类工具需要:
    apt-get -y install python-dev python-greenlet python-gevent python-vte python-openssl python-crypto python-appindicator python-bs4 libnss3-tools
}

17,如果你的网卡和我一样是bcm43225,那么可能会出现上网很慢的情况,这估计是网卡驱动问题,这样解决:

#如果用的是bcm网卡,用这个来解决网络慢的问题
#如果单独执行这个函数,最后需要重启
function bcm_conf {
    apt-get -y install bcmwl-kernel-source       
    cat >> /etc/modprobe.d/blacklist.conf <<EOF
blacklist b43
blacklist ssb
blacklist brcmsmac
EOF
}

我参考了这篇文章:http://blog.sina.com.cn/s/blog_73b6331101016haq.html

18,最后的一点配置,就是脚本参数,如果单独执行这个脚本,什么参数都不传:

./build_ubuntu.sh

那么就按如下来执行:

if [ -z "$1" ]
then
    rootness
    apt_conf
    git_conf
    term_conf
    vim_conf
    tmux_conf
    hosts_conf
    sublime_conf
    jdk_conf
    eclipse_conf
    chrome_conf
    flash_conf
    sogou_conf
    infinality_conf
    zsh_conf
    other_conf

    reboot
fi

如果传了参数:

while [ -n "$1" ]
do
    case "$1" in 
    --apt)   apt_conf ;;
    --git)   git_conf ;;
    --term)  term_conf ;;
    --vim)   vim_conf ;;
    --tmux)  tmux_conf ;;
    --hosts) hosts_conf ;;
    --sub)   sublime_conf ;;
    --jdk)   jdk_conf ;;
    --ecl)   eclipse_conf ;;
    --chr)   chrome_conf ;;
    --fla)   flash_conf ;;
    --sog)   sogou_conf ;;
    --inf)   infinality_conf ;;
    --zsh)   zsh_conf ;;
    --oth)   other_conf ;;
    --bcm)   bcm_conf ;;

    --) shift                         #使用shift将当前的参数双破折线移除
        break ;;
    *)  echo "$1 is not a option" ;;
    esac
    shift
done

count=1
for param in $@
do
    echo "para $count: $param"
    count=$[ $count+1 ]
done

分离参数和选项:linux处理这个问题的方式是使用双破折线(–)。bash和其他shell会用双破折线来表明选项结束了。看到双破折线之后,shell会将剩下的命令行参数当作参数来处理,而不是选项。
由于以后可能会扩展脚本,所以这里先使用这个。

你可能感兴趣的:(linux)