192 lines
5.1 KiB
Bash
192 lines
5.1 KiB
Bash
#!/bin/bash
|
|
|
|
# 设置错误时立即退出
|
|
set -e
|
|
|
|
# 日志函数
|
|
log_info() {
|
|
echo "[INFO] $1"
|
|
}
|
|
|
|
log_warn() {
|
|
echo "[WARN] $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo "[ERROR] $1"
|
|
}
|
|
|
|
# 检查是否为root用户
|
|
if [ "$EUID" -ne 0 ]; then
|
|
log_error "请使用root权限运行此脚本"
|
|
exit 1
|
|
fi
|
|
|
|
# 获取当前用户名
|
|
CURRENT_USER=$SUDO_USER
|
|
if [ -z "$CURRENT_USER" ]; then
|
|
CURRENT_USER=$(who | awk '{print $1}' | head -n1)
|
|
fi
|
|
|
|
# 设置用户主目录
|
|
USER_HOME="/home/$CURRENT_USER"
|
|
|
|
# 更新系统包
|
|
log_info "更新系统包..."
|
|
apt-get update
|
|
apt-get upgrade -y
|
|
|
|
# 安装必要的依赖
|
|
log_info "安装必要的依赖..."
|
|
apt-get install -y \
|
|
git \
|
|
curl \
|
|
wget \
|
|
build-essential \
|
|
zsh \
|
|
sudo \
|
|
fontconfig
|
|
|
|
# 安装 Oh My Zsh
|
|
log_info "安装 Oh My Zsh..."
|
|
# 删除已存在的 Oh My Zsh 目录
|
|
if [ -d "${USER_HOME}/.oh-my-zsh" ]; then
|
|
log_info "删除已存在的 Oh My Zsh 目录..."
|
|
rm -rf ${USER_HOME}/.oh-my-zsh
|
|
fi
|
|
|
|
# 切换到用户目录
|
|
cd ${USER_HOME}
|
|
|
|
# 安装 Oh My Zsh
|
|
su - $CURRENT_USER -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended'
|
|
|
|
# 设置 zsh 为默认 shell
|
|
log_info "设置 zsh 为默认 shell..."
|
|
chsh -s $(which zsh) $CURRENT_USER
|
|
|
|
# 安装常用插件
|
|
log_info "安装常用插件..."
|
|
su - $CURRENT_USER -c "git clone https://github.com/zsh-users/zsh-autosuggestions ${USER_HOME}/.oh-my-zsh/custom/plugins/zsh-autosuggestions"
|
|
su - $CURRENT_USER -c "git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${USER_HOME}/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting"
|
|
|
|
# 配置 .zshrc
|
|
log_info "配置 .zshrc..."
|
|
# 备份现有的 .zshrc 文件
|
|
if [ -f "${USER_HOME}/.zshrc" ]; then
|
|
log_info "备份现有的 .zshrc 文件..."
|
|
mv ${USER_HOME}/.zshrc ${USER_HOME}/.zshrc.backup
|
|
fi
|
|
|
|
cat > ${USER_HOME}/.zshrc << 'EOL'
|
|
# Enable Powerlevel10k instant prompt
|
|
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
|
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
|
fi
|
|
|
|
# Path to oh-my-zsh installation
|
|
export ZSH="$HOME/.oh-my-zsh"
|
|
|
|
# Theme
|
|
ZSH_THEME="powerlevel10k/powerlevel10k"
|
|
|
|
# Plugins
|
|
plugins=(
|
|
git
|
|
docker
|
|
docker-compose
|
|
npm
|
|
node
|
|
python
|
|
pip
|
|
zsh-autosuggestions
|
|
zsh-syntax-highlighting
|
|
)
|
|
|
|
# Source oh-my-zsh
|
|
source $ZSH/oh-my-zsh.sh
|
|
|
|
# User configuration
|
|
export LANG=en_US.UTF-8
|
|
export EDITOR='vim'
|
|
export VISUAL='vim'
|
|
|
|
# 设置自动补全快捷键为逗号
|
|
bindkey ',' autosuggest-accept
|
|
|
|
# 历史记录配置
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
HISTFILE=~/.zsh_history
|
|
setopt SHARE_HISTORY
|
|
setopt HIST_IGNORE_ALL_DUPS
|
|
setopt HIST_REDUCE_BLANKS
|
|
|
|
# 目录栈配置
|
|
setopt AUTO_PUSHD
|
|
setopt PUSHD_IGNORE_DUPS
|
|
setopt PUSHD_SILENT
|
|
|
|
# 自动补全配置
|
|
autoload -Uz compinit && compinit
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
|
|
|
# Aliases
|
|
alias ll='ls -la'
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
alias ....='cd ../../..'
|
|
alias grep='grep --color=auto'
|
|
alias mkdir='mkdir -pv'
|
|
alias wget='wget -c'
|
|
alias hist='history | grep'
|
|
alias ports='netstat -tulanp'
|
|
alias path='echo -e ${PATH//:/\\n}'
|
|
alias now='date +"%T"'
|
|
alias nowdate='date +"%d-%m-%Y"'
|
|
alias update='sudo apt-get update'
|
|
alias upgrade='sudo apt-get upgrade'
|
|
alias meminfo='free -m -l -t'
|
|
alias psmem='ps auxf | sort -nr -k 4'
|
|
alias pscpu='ps auxf | sort -nr -k 3'
|
|
alias wget='wget -c'
|
|
alias getpass="openssl rand -base64 20"
|
|
alias sha1='openssl sha1'
|
|
alias ping='ping -c 5'
|
|
alias mkdir='mkdir -pv'
|
|
alias diff='colordiff'
|
|
alias mount='mount |column -t'
|
|
alias h='history'
|
|
alias j='jobs -l'
|
|
alias vi=vim
|
|
alias svi='sudo vim'
|
|
alias vis='vim "+set si"'
|
|
alias edit='vim'
|
|
|
|
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
|
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
|
EOL
|
|
|
|
# 安装 Powerlevel10k 主题
|
|
log_info "安装 Powerlevel10k 主题..."
|
|
su - $CURRENT_USER -c "git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${USER_HOME}/.oh-my-zsh/custom/themes/powerlevel10k"
|
|
|
|
# 安装字体
|
|
log_info "安装字体..."
|
|
su - $CURRENT_USER -c "mkdir -p ${USER_HOME}/.local/share/fonts"
|
|
su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf"
|
|
su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf"
|
|
su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf"
|
|
su - $CURRENT_USER -c "cd ${USER_HOME}/.local/share/fonts && curl -LO https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf"
|
|
su - $CURRENT_USER -c "fc-cache -f -v"
|
|
|
|
# 设置权限
|
|
log_info "设置权限..."
|
|
chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.oh-my-zsh
|
|
chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.zshrc
|
|
chown -R $CURRENT_USER:$CURRENT_USER ${USER_HOME}/.local
|
|
|
|
log_info "Zsh 环境配置完成!"
|
|
log_info "请重新打开终端或运行 'source ~/.zshrc' 使配置生效"
|
|
log_info "首次登录后,运行 p10k configure 来配置 Powerlevel10k 主题" |