mac安装 homebrew

#!/bin/bash

set -u

# First check if the OS is Linux.

if [[ "$(uname)" = "Linux" ]]; then

  HOMEBREW_ON_LINUX=1

fi

# On macOS, this script installs to /usr/local only.

# On Linux, it installs to /home/linuxbrew/.linuxbrew if you have sudo access

# and ~/.linuxbrew otherwise.

# To install elsewhere (which is unsupported)

# you can untar https://github.com/Homebrew/brew/tarball/master

# anywhere you like.

if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then

  HOMEBREW_PREFIX="/usr/local"

  HOMEBREW_REPOSITORY="/usr/local/Homebrew"

  HOMEBREW_CACHE="${HOME}/Library/Caches/Homebrew"

  STAT="stat -f"

  CHOWN="/usr/sbin/chown"

  CHGRP="/usr/bin/chgrp"

  GROUP="admin"

  TOUCH="/usr/bin/touch"

else

  HOMEBREW_PREFIX_DEFAULT="/home/linuxbrew/.linuxbrew"

  HOMEBREW_CACHE="${HOME}/.cache/Homebrew"

  STAT="stat --printf"

  CHOWN="/bin/chown"

  CHGRP="/bin/chgrp"

  GROUP="$(id -gn)"

  TOUCH="/bin/touch"

fi

BREW_REPO="https://github.com/Homebrew/brew"

# TODO: bump version when new macOS is released

MACOS_LATEST_SUPPORTED="10.15"

# TODO: bump version when new macOS is released

MACOS_OLDEST_SUPPORTED="10.13"

# no analytics during installation

export HOMEBREW_NO_ANALYTICS_THIS_RUN=1

export HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT=1

# string formatters

if [[ -t 1 ]]; then

  tty_escape() { printf "\033[%sm" "$1"; }

else

  tty_escape() { :; }

fi

tty_mkbold() { tty_escape "1;$1"; }

tty_underline="$(tty_escape "4;39")"

tty_blue="$(tty_mkbold 34)"

tty_red="$(tty_mkbold 31)"

tty_bold="$(tty_mkbold 39)"

tty_reset="$(tty_escape 0)"

have_sudo_access() {

  if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then

    /usr/bin/sudo -l mkdir &>/dev/null

    HAVE_SUDO_ACCESS="$?"

  fi

  if [[ -z "${HOMEBREW_ON_LINUX-}" ]] && [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then

    abort "Need sudo access on macOS!"

  fi

  return "$HAVE_SUDO_ACCESS"

}

shell_join() {

  local arg

  printf "%s" "$1"

  shift

  for arg in "$@"; do

    printf " "

    printf "%s" "${arg// /\ }"

  done

}

chomp() {

  printf "%s" "${1/"$'\n'"/}"

}

ohai() {

  printf "${tty_blue}==>${tty_bold} %s${tty_reset}\n" "$(shell_join "$@")"

}

warn() {

  printf "${tty_red}Warning${tty_reset}: %s\n" "$(chomp "$1")"

}

abort() {

  printf "%s\n" "$1"

  exit 1

}

execute() {

  if ! "$@"; then

    abort "$(printf "Failed during: %s" "$(shell_join "$@")")"

  fi

}

execute_sudo() {

  local -a args=("$@")

  if [[ -n "${SUDO_ASKPASS-}" ]]; then

    args=("-A" "${args[@]}")

  fi

  if have_sudo_access; then

    ohai "/usr/bin/sudo" "${args[@]}"

    execute "/usr/bin/sudo" "${args[@]}"

  else

    ohai "${args[@]}"

    execute "${args[@]}"

  fi

}

getc() {

  local save_state

  save_state=$(/bin/stty -g)

  /bin/stty raw -echo

  IFS= read -r -n 1 -d '' "$@"

  /bin/stty "$save_state"

}

wait_for_user() {

  local c

  echo

  echo "Press RETURN to continue or any other key to abort"

  getc c

  # we test for \r and \n because some stuff does \r instead

  if ! [[ "$c" == $'\r' || "$c" == $'\n' ]]; then

    exit 1

  fi

}

major_minor() {

  echo "${1%%.*}.$(x="${1#*.}"; echo "${x%%.*}")"

}

if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then

  macos_version="$(major_minor "$(/usr/bin/sw_vers -productVersion)")"

fi

version_gt() {

  [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -gt "${2#*.}" ]]

}

version_ge() {

  [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -ge "${2#*.}" ]]

}

version_lt() {

  [[ "${1%.*}" -lt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -lt "${2#*.}" ]]

}

should_install_git() {

  if [[ $(command -v git) ]]; then

    return 1

  fi

}

should_install_command_line_tools() {

  if [[ -n "${HOMEBREW_ON_LINUX-}" ]]; then

    return 1

  fi

  if version_gt "$macos_version" "10.13"; then

    ! [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]]

  else

    ! [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]] ||

      ! [[ -e "/usr/include/iconv.h" ]]

  fi

}

get_permission() {

  $STAT "%A" "$1"

}

user_only_chmod() {

  [[ -d "$1" ]] && [[ "$(get_permission "$1")" != "755" ]]

}

exists_but_not_writable() {

  [[ -e "$1" ]] && ! [[ -r "$1" && -w "$1" && -x "$1" ]]

}

get_owner() {

  $STAT "%u" "$1"

}

file_not_owned() {

  [[ "$(get_owner "$1")" != "$(id -u)" ]]

}

get_group() {

  $STAT "%g" "$1"

}

file_not_grpowned() {

  [[ " $(id -G "$USER") " != *" $(get_group "$1") "*  ]]

}

# USER isn't always set so provide a fall back for the installer and subprocesses.

if [[ -z "${USER-}" ]]; then

  USER="$(chomp "$(id -un)")"

  export USER

fi

# Invalidate sudo timestamp before exiting (if it wasn't active before).

if ! /usr/bin/sudo -n -v 2>/dev/null; then

  trap '/usr/bin/sudo -k' EXIT

fi

# Things can fail later if `pwd` doesn't exist.

# Also sudo prints a warning message for no good reason

cd "/usr" || exit 1

####################################################################### script

if should_install_git; then

    abort "$(cat <<EOABORT

You must install Git before installing Homebrew. See:

  ${tty_underline}https://docs.brew.sh/Installation${tty_reset}

EOABORT

)"

fi

if [[ -n "${HOMEBREW_ON_LINUX-}" ]]; then

  if [[ -n "${CI-}" ]] || [[ -w "$HOMEBREW_PREFIX_DEFAULT" ]] || [[ -w "/home/linuxbrew" ]] || [[ -w "/home" ]]; then

    HOMEBREW_PREFIX="$HOMEBREW_PREFIX_DEFAULT"

  else

    trap exit SIGINT

    sudo_output="$(/usr/bin/sudo -n -l mkdir 2>&1)"

    sudo_exit_code="$?"

    if [[ "$sudo_exit_code" -ne 0 ]] && [[ "$sudo_output" = "sudo: a password is required" ]]; then

      ohai "Select the Homebrew installation directory"

      echo "- ${tty_bold}Enter your password${tty_reset} to install to ${tty_underline}${HOMEBREW_PREFIX_DEFAULT}${tty_reset} (${tty_bold}recommended${tty_reset})"

      echo "- ${tty_bold}Press Control-D${tty_reset} to install to ${tty_underline}$HOME/.linuxbrew${tty_reset}"

      echo "- ${tty_bold}Press Control-C${tty_reset} to cancel installation"

    fi

    if have_sudo_access; then

      HOMEBREW_PREFIX="$HOMEBREW_PREFIX_DEFAULT"

    else

      HOMEBREW_PREFIX="$HOME/.linuxbrew"

    fi

    trap - SIGINT

  fi

  HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew"

fi

if [[ "$UID" == "0" ]]; then

  abort "Don't run this as root!"

elif [[ -d "$HOMEBREW_PREFIX" && ! -x "$HOMEBREW_PREFIX" ]]; then

  abort "$(cat <<EOABORT

The Homebrew prefix, ${HOMEBREW_PREFIX}, exists but is not searchable. If this is

not intentional, please restore the default permissions and try running the

installer again:

    sudo chmod 775 ${HOMEBREW_PREFIX}

EOABORT

)"

fi

if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then

  if version_lt "$macos_version" "10.7"; then

    abort "$(cat <<EOABORT

Your Mac OS X version is too old. See:

  ${tty_underline}https://github.com/mistydemeo/tigerbrew${tty_reset}

EOABORT

)"

  elif version_lt "$macos_version" "10.9"; then

    abort "Your OS X version is too old"

  elif ! [[ "$(dsmemberutil checkmembership -U "$USER" -G "$GROUP")" = *"user is a member"* ]]; then

    abort "This script requires the user $USER to be an Administrator."

  elif version_gt "$macos_version" "$MACOS_LATEST_SUPPORTED" || \

    version_lt "$macos_version" "$MACOS_OLDEST_SUPPORTED"; then

    who="We"

    what=""

    if version_gt "$macos_version" "$MACOS_LATEST_SUPPORTED"; then

      what="pre-release version"

    else

      who+=" (and Apple)"

      what="old version"

    fi

    ohai "You are using macOS ${macos_version}."

    ohai "${who} do not provide support for this ${what}."

    echo "$(cat <<EOS

This installation may not succeed.

After installation, you will encounter build failures with some formulae.

Please create pull requests instead of asking for help on Homebrew\'s GitHub,

Discourse, Twitter or IRC. You are responsible for resolving any issues you

experience while you are running this ${what}.

EOS

)

"

  fi

fi

ohai "This script will install:"

echo "${HOMEBREW_PREFIX}/bin/brew"

echo "${HOMEBREW_PREFIX}/share/doc/homebrew"

echo "${HOMEBREW_PREFIX}/share/man/man1/brew.1"

echo "${HOMEBREW_PREFIX}/share/zsh/site-functions/_brew"

echo "${HOMEBREW_PREFIX}/etc/bash_completion.d/brew"

echo "${HOMEBREW_REPOSITORY}"

# Keep relatively in sync with

# https://github.com/Homebrew/brew/blob/master/Library/Homebrew/keg.rb

directories=(bin etc include lib sbin share opt var

            Frameworks

            etc/bash_completion.d lib/pkgconfig

            share/aclocal share/doc share/info share/locale share/man

            share/man/man1 share/man/man2 share/man/man3 share/man/man4

            share/man/man5 share/man/man6 share/man/man7 share/man/man8

            var/log var/homebrew var/homebrew/linked

            bin/brew)

group_chmods=()

for dir in "${directories[@]}"; do

  if exists_but_not_writable "${HOMEBREW_PREFIX}/${dir}"; then

    group_chmods+=("${HOMEBREW_PREFIX}/${dir}")

  fi

done

# zsh refuses to read from these directories if group writable

directories=(share/zsh share/zsh/site-functions)

zsh_dirs=()

for dir in "${directories[@]}"; do

  zsh_dirs+=("${HOMEBREW_PREFIX}/${dir}")

done

directories=(bin etc include lib sbin share var opt

            share/zsh share/zsh/site-functions

            var/homebrew var/homebrew/linked

            Cellar Caskroom Homebrew Frameworks)

mkdirs=()

for dir in "${directories[@]}"; do

  if ! [[ -d "${HOMEBREW_PREFIX}/${dir}" ]]; then

    mkdirs+=("${HOMEBREW_PREFIX}/${dir}")

  fi

done

user_chmods=()

if [[ "${#zsh_dirs[@]}" -gt 0 ]]; then

  for dir in "${zsh_dirs[@]}"; do

    if user_only_chmod "${dir}"; then

      user_chmods+=("${dir}")

    fi

  done

fi

chmods=()

if [[ "${#group_chmods[@]}" -gt 0 ]]; then

  chmods+=("${group_chmods[@]}")

fi

if [[ "${#user_chmods[@]}" -gt 0 ]]; then

  chmods+=("${user_chmods[@]}")

fi

chowns=()

chgrps=()

if [[ "${#chmods[@]}" -gt 0 ]]; then

  for dir in "${chmods[@]}"; do

    if file_not_owned "${dir}"; then

      chowns+=("${dir}")

    fi

    if file_not_grpowned "${dir}"; then

      chgrps+=("${dir}")

    fi

  done

fi

if [[ "${#group_chmods[@]}" -gt 0 ]]; then

  ohai "The following existing directories will be made group writable:"

  printf "%s\n" "${group_chmods[@]}"

fi

if [[ "${#user_chmods[@]}" -gt 0 ]]; then

  ohai "The following existing directories will be made writable by user only:"

  printf "%s\n" "${user_chmods[@]}"

fi

if [[ "${#chowns[@]}" -gt 0 ]]; then

  ohai "The following existing directories will have their owner set to ${tty_underline}${USER}${tty_reset}:"

  printf "%s\n" "${chowns[@]}"

fi

if [[ "${#chgrps[@]}" -gt 0 ]]; then

  ohai "The following existing directories will have their group set to ${tty_underline}${GROUP}${tty_reset}:"

  printf "%s\n" "${chgrps[@]}"

fi

if [[ "${#mkdirs[@]}" -gt 0 ]]; then

  ohai "The following new directories will be created:"

  printf "%s\n" "${mkdirs[@]}"

fi

if should_install_command_line_tools; then

  ohai "The Xcode Command Line Tools will be installed."

fi

if [[ -t 0 && -z "${CI-}" ]]; then

  wait_for_user

fi

if [[ -d "${HOMEBREW_PREFIX}" ]]; then

  if [[ "${#chmods[@]}" -gt 0 ]]; then

    execute_sudo "/bin/chmod" "u+rwx" "${chmods[@]}"

  fi

  if [[ "${#group_chmods[@]}" -gt 0 ]]; then

    execute_sudo "/bin/chmod" "g+rwx" "${group_chmods[@]}"

  fi

  if [[ "${#user_chmods[@]}" -gt 0 ]]; then

    execute_sudo "/bin/chmod" "755" "${user_chmods[@]}"

  fi

  if [[ "${#chowns[@]}" -gt 0 ]]; then

    execute_sudo "$CHOWN" "$USER" "${chowns[@]}"

  fi

  if [[ "${#chgrps[@]}" -gt 0 ]]; then

    execute_sudo "$CHGRP" "$GROUP" "${chgrps[@]}"

  fi

else

  execute_sudo "/bin/mkdir" "-p" "${HOMEBREW_PREFIX}"

  if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then

    execute_sudo "$CHOWN" "root:wheel" "${HOMEBREW_PREFIX}"

  else

    execute_sudo "$CHOWN" "$USER:$GROUP" "${HOMEBREW_PREFIX}"

  fi

fi

if [[ "${#mkdirs[@]}" -gt 0 ]]; then

  execute_sudo "/bin/mkdir" "-p" "${mkdirs[@]}"

  execute_sudo "/bin/chmod" "g+rwx" "${mkdirs[@]}"

  execute_sudo "$CHOWN" "$USER" "${mkdirs[@]}"

  execute_sudo "$CHGRP" "$GROUP" "${mkdirs[@]}"

fi

if ! [[ -d "${HOMEBREW_CACHE}" ]]; then

  if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then

    execute_sudo "/bin/mkdir" "-p" "${HOMEBREW_CACHE}"

  else

    execute "/bin/mkdir" "-p" "${HOMEBREW_CACHE}"

  fi

fi

if exists_but_not_writable "${HOMEBREW_CACHE}"; then

  execute_sudo "/bin/chmod" "g+rwx" "${HOMEBREW_CACHE}"

fi

if file_not_owned "${HOMEBREW_CACHE}"; then

  execute_sudo "$CHOWN" "$USER" "${HOMEBREW_CACHE}"

fi

if file_not_grpowned "${HOMEBREW_CACHE}"; then

  execute_sudo "$CHGRP" "$GROUP" "${HOMEBREW_CACHE}"

fi

if [[ -d "${HOMEBREW_CACHE}" ]]; then

  execute "$TOUCH" "${HOMEBREW_CACHE}/.cleaned"

fi

if should_install_command_line_tools && version_ge "$macos_version" "10.13"; then

  ohai "Searching online for the Command Line Tools"

  # This temporary file prompts the 'softwareupdate' utility to list the Command Line Tools

  clt_placeholder="/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress"

  execute_sudo "$TOUCH" "$clt_placeholder"

  clt_label_command="/usr/sbin/softwareupdate -l |

                      grep -B 1 -E 'Command Line Tools' |

                      awk -F'*' '/^ *\\*/ {print \$2}' |

                      sed -e 's/^ *Label: //' -e 's/^ *//' |

                      sort -V |

                      tail -n1"

  clt_label="$(chomp "$(/bin/bash -c "$clt_label_command")")"

  if [[ -n "$clt_label" ]]; then

    ohai "Installing $clt_label"

    execute_sudo "/usr/sbin/softwareupdate" "-i" "$clt_label"

    execute_sudo "/bin/rm" "-f" "$clt_placeholder"

    execute_sudo "/usr/bin/xcode-select" "--switch" "/Library/Developer/CommandLineTools"

  fi

fi

# Headless install may have failed, so fallback to original 'xcode-select' method

if should_install_command_line_tools && test -t 0; then

  ohai "Installing the Command Line Tools (expect a GUI popup):"

  execute_sudo "/usr/bin/xcode-select" "--install"

  echo "Press any key when the installation has completed."

  getc

  execute_sudo "/usr/bin/xcode-select" "--switch" "/Library/Developer/CommandLineTools"

fi

if [[ -z "${HOMEBREW_ON_LINUX-}" ]] && ! output="$(/usr/bin/xcrun clang 2>&1)" && [[ "$output" == *"license"* ]]; then

  abort "$(cat <<EOABORT

You have not agreed to the Xcode license.

Before running the installer again please agree to the license by opening

Xcode.app or running:

    sudo xcodebuild -license

EOABORT

)"

fi

ohai "Downloading and installing Homebrew..."

(

  cd "${HOMEBREW_REPOSITORY}" >/dev/null || return

  # we do it in four steps to avoid merge errors when reinstalling

  execute "git" "init" "-q"

  # "git remote add" will fail if the remote is defined in the global config

  execute "git" "config" "remote.origin.url" "${BREW_REPO}"

  execute "git" "config" "remote.origin.fetch" "+refs/heads/*:refs/remotes/origin/*"

  # ensure we don't munge line endings on checkout

  execute "git" "config" "core.autocrlf" "false"

  execute "git" "fetch" "origin" "--force"

  execute "git" "fetch" "origin" "--tags" "--force"

  execute "git" "reset" "--hard" "origin/master"

  execute "ln" "-sf" "${HOMEBREW_REPOSITORY}/bin/brew" "${HOMEBREW_PREFIX}/bin/brew"

  execute "${HOMEBREW_PREFIX}/bin/brew" "update" "--force"

)

if [[ ":${PATH}:" != *":${HOMEBREW_PREFIX}/bin:"* ]]; then

  warn "${HOMEBREW_PREFIX}/bin is not in your PATH."

fi

ohai "Installation successful!"

echo

# Use the shell's audible bell.

if [[ -t 1 ]]; then

  printf "\a"

fi

# Use an extra newline and bold to avoid this being missed.

ohai "Homebrew has enabled anonymous aggregate formulae and cask analytics."

echo "$(cat <<EOS

${tty_bold}Read the analytics documentation (and how to opt-out) here:

  ${tty_underline}https://docs.brew.sh/Analytics${tty_reset}

No analytics data has been sent yet (or will be during this \`install\` run).

EOS

)

"

ohai "Homebrew is run entirely by unpaid volunteers. Please consider donating:"

echo "$(cat <<EOS

  ${tty_underline}https://github.com/Homebrew/brew#donations${tty_reset}

EOS

)

"

(

  cd "${HOMEBREW_REPOSITORY}" >/dev/null || return

  execute "git" "config" "--replace-all" "homebrew.analyticsmessage" "true"

  execute "git" "config" "--replace-all" "homebrew.caskanalyticsmessage" "true"

)

ohai "Next steps:"

echo "- Run \`brew help\` to get started"

echo "- Further documentation: "

echo "    ${tty_underline}https://docs.brew.sh${tty_reset}"

if [[ -n "${HOMEBREW_ON_LINUX-}" ]]; then

  case "$SHELL" in

    */bash*)

      if [[ -r "$HOME/.bash_profile" ]]; then

        shell_profile="$HOME/.bash_profile"

      else

        shell_profile="$HOME/.profile"

      fi

      ;;

    */zsh*)

      shell_profile="$HOME/.zprofile"

      ;;

    *)

      shell_profile="$HOME/.profile"

      ;;

  esac

  cat <<EOS

- Install the Homebrew dependencies if you have sudo access:

  ${tty_bold}Debian, Ubuntu, etc.${tty_reset}

    sudo apt-get install build-essential

  ${tty_bold}Fedora, Red Hat, CentOS, etc.${tty_reset}

    sudo yum groupinstall 'Development Tools'

  See ${tty_underline}https://docs.brew.sh/linux${tty_reset} for more information.

- Configure Homebrew in your ${tty_underline}${shell_profile}${tty_reset} by running

    echo 'eval \$(${HOMEBREW_PREFIX}/bin/brew shellenv)' >> ${shell_profile}

- Add Homebrew to your ${tty_bold}PATH${tty_reset}

    eval \$(${HOMEBREW_PREFIX}/bin/brew shellenv)

- We recommend that you install GCC by running:

    brew install gcc

EOS

fi

将以上代码保存为install.sh后执行bash install.sh

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345