Linux Shell 腳本編寫指南——第一章


本文為Linux Shell Scripting Tutorial (LSST) v2.0學(xué)習(xí)記錄


第一章

本章節(jié)學(xué)習(xí)任務(wù):

  • 了解什么是shell腳本
  • 了解Linux kernel, shell, bash and scripting basic

1.1 Linux是什么

Linux是一個(gè)基于Unix的開源操作系統(tǒng),Linus Torvalds是其開發(fā)者,同時(shí)也得到了世界上很多開發(fā)者的幫助正卧,他的特性包括但不限于:

  • 免費(fèi)
  • 類Unix系統(tǒng)
  • 開源
  • 網(wǎng)絡(luò)操作系統(tǒng)

嚴(yán)格意義上來(lái)說(shuō)柠新,Linux是一個(gè)kernel(內(nèi)核)炉擅,kernel提供了對(duì)計(jì)算機(jī)硬件和資源的訪問(wèn)與操作:

  • 文件和數(shù)據(jù)
  • 運(yùn)行中的程序
  • 加載程序到內(nèi)存
  • 網(wǎng)絡(luò)
  • 安全和防火墻
  • 赂苗。帆离。独榴。等等

但是一個(gè)系統(tǒng)只有kernels是不夠的僧叉,日常的使用需求還要求系統(tǒng)攜帶文本編輯器、郵件客戶端棺榔、瀏覽器瓶堕、辦公應(yīng)用等;所以就有了基于Linux kernel并整合了多種工具的Linux發(fā)行版症歇,一般來(lái)說(shuō)郎笆,發(fā)行版需要具有以下的特征:

  • Linux kernel
  • GUN應(yīng)用
  • 圖形使用界面
  • 辦公應(yīng)用
  • 軟件開發(fā)工具和編譯器
  • 充足的可使用的軟件包
  • Linux 安裝程序(腳本)
  • Linux管理工具(例如增加使用者,安裝軟件等)
  • 一個(gè)整合了這些特性的shell

有些公司在使用Linux的時(shí)候需要技術(shù)支持忘晤,就催生了一些公司例如 Red HatNovell 等公司發(fā)行收費(fèi)的Linux發(fā)行版并提供技術(shù)支持宛蚓,當(dāng)然開源社區(qū)也有完全免費(fèi)的產(chǎn)品例如DebianGentoo等。目前世界上有超過(guò)200種Linux發(fā)行版设塔。

1.2 誰(shuí)創(chuàng)建了Linux

1991年凄吏,Linus Torvalds在大學(xué)期間接觸到了UNIX,他當(dāng)時(shí)使用的是一個(gè)適用于科研的Unix版本(Minix)闰蛔,但是Minix有著不少缺陷痕钢,于是他就開發(fā)了他自己的"Minix",也就是后來(lái)的Linux钞护,Linux的開源也就是從這個(gè)時(shí)候開始的盖喷。

Linus Torvalds

Linux是Linus開發(fā)的kernel,Linux與GUN項(xiàng)目中的系統(tǒng)程序與庫(kù)綁定在一起难咕,創(chuàng)造了一個(gè)可用性很高的操作系統(tǒng)课梳。有時(shí)候大家會(huì)把Linux說(shuō)成GUN/Linux是因?yàn)長(zhǎng)inux是直接整合的GUN項(xiàng)目距辆,另外需要知道的是,Linus Torvalds是Linux kernel的創(chuàng)作者暮刃,而不是Linux系統(tǒng)的擁有者[1]

Linux 發(fā)布版 = Linux kernel + GUN 系統(tǒng)實(shí)用程序和庫(kù) + 安裝腳本 + 管理程序

另外需要注意的是跨算,Linux目前有很多發(fā)行版,以適應(yīng)服務(wù)器椭懊、桌面诸蚕、工作站等一系列的需求。

額外鏈接:

Linus Torvalds profile at Google+

Linus Torvalds

Linus's Blog (not updated anymore)

1.3 在哪里下載Linux

通過(guò)網(wǎng)絡(luò)進(jìn)行下載是最方便的氧猬,以下是推薦的數(shù)款發(fā)布版本(下列不予翻譯):

  • Fedora Linux - Fedora is a distribution of Linux based on Red Hat linux, developed by the Fedora Project. Fedora is good for both desktop and laptop usage including sys admins.
  • CentOS Linux - CentOS is a community-supported, mainly free software operating system based on Red Hat Enterprise Linux. CentOS is good for server usage.
  • Debian Linux - Debian focuses on stability and security and is used as a base for many other distributions such as Ubuntu. Debian stable is good for server usage.
  • Ubuntu Linux - Ubuntu originally based on the Debian Linux distribution. Ubuntu is designed primarily for desktop usage, though netbook and server editions exist as well.
  • OpenSuse Linux - openSUSE is a general purpose Linux distribution and sponsored by Novell. However, it is quite popular on Laptop and desktop usage.
  • Slackware Linux - It was one of the earliest operating systems to be built on top of the Linux kernel and is the oldest currently being maintained. Slackware is pretty popular among the hardcore Linux users and sys admins.
  • Linux Mint Linux - Linux Mint provides an up-to-date, stable operating system for the average user, with a strong focus on usability and ease of installation.
  • PCLinuxOS Linux - PCLinuxOS comes with KDE Plasma Desktop as its default user interface. It is a primarily free software operating system for personal computers aimed at ease of use.
  • Mandriva Linux - Mandriva Linux is a French Linux distribution distributed by Mandriva. It uses the RPM Package Manager.
  • Sabayon Linux - Sabayon is based upon Gentoo Linux and it follows the OOTB (Out of the Box) philosophy, having the goal to give the user a wide number of applications ready to use and a self-configured operating system.
  • Arch Linux - Arch Linux is a Linux distribution intended to be lightweight and simple. The design approach of the development team focuses on simplicity, elegance, code correctness and minimalism.
  • Gentoo Linux - Gentoo Linux is a computer operating system built on top of the Linux kernel and based on the Portage package management system.

1.4 如何安裝Linux

1.5 什么是Linux Kernel

kernel是Linux操作系統(tǒng)的核心背犯,每個(gè)Linux發(fā)行版都會(huì)包括兩個(gè)部分:

  1. Linux kernel
  2. Linux shell

kernel的作用包括文件管理、多任務(wù)處理盅抚、內(nèi)存管理漠魏、輸入輸出設(shè)備管理、進(jìn)程管理妄均、設(shè)備管理柱锹、網(wǎng)絡(luò)管理(包括ipv4和ipv6)以及一系列更加深入的功能。kernel決定誰(shuí)會(huì)使用這些資源已經(jīng)什么時(shí)候用丰包,用多久禁熏。

Kernel

1.6 什么是Linux Shell

計(jì)算機(jī)能夠理解的語(yǔ)言為二進(jìn)制語(yǔ)言(binary language),早期我們都是使用二進(jìn)制語(yǔ)言進(jìn)行操控電腦邑彪,但是對(duì)我們而言很難閱讀及理解瞧毙。因此,在一個(gè)操作系統(tǒng)內(nèi)有一個(gè)特別的程序叫做shell锌蓄,shell接受人類可以輕易理解的指令并將其轉(zhuǎn)化為kernel可以讀入和處理的語(yǔ)言升筏。

Shell是什么

  • shell是一個(gè)面對(duì)用戶的程序,或者說(shuō)它是提供給用戶的交互環(huán)境
  • 它是一個(gè)解釋器瘸爽,從標(biāo)準(zhǔn)輸入設(shè)備例如鍵盤?或者文件讀入指令并執(zhí)行
  • shell在用戶登入或者打開終端的時(shí)候啟動(dòng)
  • 執(zhí)行系統(tǒng)程序快捷和簡(jiǎn)單的方法
  • shell不是kernel的一部分您访,但是調(diào)用系統(tǒng)kernel執(zhí)行程序
  • 現(xiàn)在 Linux中可用的shell包括:

注意:所有的shell做的都是同一種工作灵汪,只是理解不一樣的語(yǔ)法和提供不一樣的內(nèi)建功能,微軟開發(fā)的 MS-DOS(Microsoft Disk Operating System)叫做 COMMAND.COM柑潦, 行使的是和shell一樣的功能享言,只不過(guò)還不是那么強(qiáng)大

命令提示符 (Shell Prompt)

有多種方式可以操作shell:

  • 終端:桌面版Linux一般都會(huì)提供一個(gè)基于登陸系統(tǒng)的圖形用戶界面,一旦登陸就可以通過(guò)XTerm/GTerm/KTerm等應(yīng)用操作shell
  • 通過(guò)secure shell:一旦登錄遠(yuǎn)端服務(wù)器或者工作站就會(huì)得到一個(gè)命令提示符
  • 通過(guò)console:有些Linux提供基于文件的登陸系統(tǒng)渗鬼,一般來(lái)說(shuō)在登陸以后同樣會(huì)得到一個(gè)命令提示符

如何知道我現(xiàn)在有哪些shell

執(zhí)行以下的命令即可完成:

new@Chevy-PC:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen

多個(gè)結(jié)果意味著你的Linux支持多個(gè)shell

命令行界面 (Command Line Interface, CLI)

shell提供了連接Linux的界面览露,你可以通過(guò)鍵盤或者其他輸入設(shè)備完成操作,shell同時(shí)也可以成為命令行界面 (Command Line Interface)譬胎, 發(fā)現(xiàn)現(xiàn)在使用的shell可以通過(guò)使用以下命令:

new@Chevy-PC:~$ echo $SHELL
/bin/bash
new@Chevy-PC:~$ ps $$
  PID TTY      STAT   TIME COMMAND
    4 tty1     S      0:00 -bash
new@Chevy-PC:~$ ps -p $$
  PID TTY          TIME CMD
    4 tty1     00:00:00 bash

這就說(shuō)明我目前使用的是bash shell

基本的命令行操作

你可以使用以下的組合鍵去編輯和撤銷命令:

  • CTRL + L : 清理當(dāng)前屏幕.
  • CTRL + W : 清理光標(biāo)所在處的單詞
  • CTRL + U : 清理全行命令
  • Up鍵和Down鍵 : 回溯之前/之后的命令 (command history).
  • Tab : 自動(dòng)補(bǔ)全命令/目錄名等等
  • CTRL + R : 搜索命令記錄 (command history)
  • CTRL + C : 終止當(dāng)前命令
  • CTRL + T : 交換光標(biāo)前的最后兩個(gè)字符
  • ESC + T : 交換光標(biāo)前的最后兩個(gè)單詞
  • CTRL + H : 刪除從光標(biāo)處開始的字母

執(zhí)行一個(gè)命令

簡(jiǎn)單的鍵入你的命令然后回車即可差牛,例如date命令可以查看當(dāng)前的時(shí)間命锄, man data命令可以查看date命令的使用文檔,info date可以查看date命令的信息文檔偏化,同時(shí)常見(jiàn)的命令都會(huì)有-h / --help參數(shù)用以展示幫助選項(xiàng):

new@Chevy-PC:~$ date
Thu Jul 11 10:35:03 DST 2019
new@Chevy-PC:~$ man date
DATE(1)                                      User Commands                                      DATE(1)

NAME
       date - print or set the system date and time

SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION
       Display the current time in the given FORMAT, or set the system date.

       Mandatory arguments to long options are mandatory for short options too.

       -d, --date=STRING
              display time described by STRING, not 'now'

       --debug
              annotate the parsed date, and warn about questionable usage to stderr

       -f, --file=DATEFILE
              like --date; once for each line of DATEFILE

       -I[FMT], --iso-8601[=FMT]
              output  date/time  in  ISO 8601 format.  FMT='date' for date only (the default), 'hours',
              'minutes', 'seconds', or 'ns' for date and time to  the  indicated  precision.   Example:
              2006-08-14T02:34:56-06:00

 Manual page date(1) line 1 (press h for help or q to quit)
new@Chevy-PC:~$ info date 
 Next: arch invocation,  Up: System context

21.1 ‘date’: Print or set system date and time
==============================================

Synopses:

     date [OPTION]... [+FORMAT]
     date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]

   Invoking ‘date’ with no FORMAT argument is equivalent to invoking it
with a default format that depends on the ‘LC_TIME’ locale category.  In
the default C locale, this format is ‘'+%a %b %e %H:%M:%S %Z %Y'’, so
the output looks like ‘Thu Mar  3 13:47:51 PST 2005’.

   Normally, ‘date’ uses the time zone rules indicated by the ‘TZ’
environment variable, or the system default rules if ‘TZ’ is not set.
*Note Specifying the Time Zone with ‘TZ’: (libc)TZ Variable.

   If given an argument that starts with a ‘+’, ‘date’ prints the
current date and time (or the date and time specified by the ‘--date’
option, see below) in the format defined by that argument, which is
similar to that of the ‘strftime’ function.  Except for conversion
specifiers, which start with ‘%’, characters in the format string are
printed unchanged.  The conversion specifiers are described below.

   An exit status of zero indicates success, and a nonzero value
-----Info: (coreutils)date invocation, 40 lines --Top-----------------------------------------------------Welcome to Info version 6.5.  Type H for help, h for tutorial.

1.7 UNIX的哲學(xué)

Unix哲學(xué)是基于Unix操作系統(tǒng)主要開發(fā)人員的經(jīng)驗(yàn)開發(fā)軟件的哲學(xué)方法脐恩,下面的哲學(xué)方法也適用于Linux操作系統(tǒng):

  • Do one thing and do it well - Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
  • Everything is file - Ease of use and security is offered by treating hardware as a file.
  • Small is beautiful.
  • Store data and configuration in flat text files - Text file is a universal interface. Easy to create, backup and move to another system.
  • Use shell scripts to increase leverage and portability - Use shell script to automate common tasks across various UNIX / Linux installations.
  • Chain programs together to complete complex task - Use shell pipes and filters to chain small utilities that perform one task at time.
  • Choose portability over efficiency.
  • Keep it Simple, Stupid (KISS).

額外鏈接:

1.8 什么 是shell腳本

一般來(lái)說(shuō),shell是交互性的 侦讨,也就是說(shuō)你輸入命令驶冒,shell接受并執(zhí)行,返回結(jié)果韵卤。但是骗污,如果你儲(chǔ)存一系列的命令在一個(gè)文本文件里面然后執(zhí)行,這也就是shell程序(shell program)或者稱為shell腳本(shell script)

每個(gè)shell腳本都會(huì)包括一下幾個(gè)部分:

  • Shell kewwords 例如if...else語(yǔ)句怜俐, do...while語(yǔ)句
  • Shell commands 例如pwd, test, echo, continue, type等命令
  • Linux binary commands 例如w, who, free, etc等
  • 文本處理程序例如grep, awk, cut等
  • 函數(shù)可以將多個(gè)操作整合進(jìn)一個(gè)函數(shù)
  • 控制流例如if...then...else或者shell loop去執(zhí)行重復(fù)的操作

每個(gè)腳本都有一個(gè)目的

  • 特殊目的:備份數(shù)據(jù)或者上傳數(shù)據(jù)庫(kù)(例如每隔一段時(shí)間執(zhí)行某個(gè)腳本將將數(shù)據(jù)重新備份)
  • 執(zhí)行命令:每個(gè)shell腳本就像一條條命令那樣被簡(jiǎn)單執(zhí)行(使用腳本處理某個(gè)數(shù)據(jù))
  • 腳本代碼利用:Shell腳本可以從現(xiàn)有腳本擴(kuò)展身堡。此外,還可以使用函數(shù)文件來(lái)打包經(jīng)常使用的任務(wù)

1.9 為什么使用shell腳本

當(dāng)你在終端不停執(zhí)行重復(fù)命令的時(shí)候拍鲤,shell腳本就顯得很有用

特性:

  • shell腳本可以從命令行或者文件讀入數(shù)據(jù)參數(shù),然后將結(jié)果返回到屏幕
  • 當(dāng)你在重復(fù)執(zhí)行同一個(gè)任務(wù)的時(shí)候汞扎,你就應(yīng)該使用shell腳本來(lái)減少你的工作量
    • 創(chuàng)建自己的實(shí)用工具
    • 自動(dòng)化的輸入或者輸出
    • 定制管理任務(wù)
    • 因?yàn)槟_本的重復(fù)性及經(jīng)過(guò)測(cè)試季稳,所以會(huì)減少犯錯(cuò)的幾率

常見(jiàn)的應(yīng)用場(chǎng)景:

  • 管理你的Linux系統(tǒng)
  • 數(shù)據(jù)備份和創(chuàng)建快照
  • 轉(zhuǎn)儲(chǔ)Oracle或者M(jìn)ySQL數(shù)據(jù)庫(kù)進(jìn)行備份
  • 創(chuàng)建基于電子郵件的警報(bào)系統(tǒng)
  • 找出什么程序吃掉了你部分的系統(tǒng)資源
  • 找出可用的內(nèi)存
  • 找i出所有登陸的用戶以及他們?cè)谧鍪裁?/li>
  • 找出所有失敗的登陸記錄,如果同一個(gè)IP在重復(fù)嘗試失敗的登錄澈魄,通過(guò)防火墻封掉該IP
  • 根據(jù)你的安全策略進(jìn)行用戶管理
  • 找出本地或者遠(yuǎn)程服務(wù)器的信息
  • 配置服務(wù)器

優(yōu)勢(shì):

  • 使用簡(jiǎn)單
  • 快速啟動(dòng)
  • 節(jié)約時(shí)間
  • 系統(tǒng)管理任務(wù)自動(dòng)化
  • Shell腳本可以在幾乎任何現(xiàn)代UNIX / Linux / BSD / Mac OS X操作系統(tǒng)上執(zhí)行景鼠,因?yàn)樗鼈兪怯媒忉屨Z(yǔ)言編寫的

劣勢(shì):

  • 不同平臺(tái)間會(huì)出現(xiàn)比較復(fù)雜的問(wèn)題
  • 運(yùn)行速度緩慢
  • 每一個(gè)shell命令都會(huì)開啟一個(gè)新進(jìn)程

本教程使用那種shell?

Bash shell

學(xué)習(xí)目標(biāo)

完成本次課程以后痹扇,你可以學(xué)到:

  • 理解Linux shell編程的基礎(chǔ)
  • 自行編寫自動(dòng)化的腳本
  • 自定義shell啟動(dòng)文件
  • 創(chuàng)建漂亮的實(shí)用程序
  • 控制你的管理任務(wù)铛漓,如Linux用戶管理,Linux系統(tǒng)監(jiān)控等

本章節(jié)復(fù)習(xí)題

  1. 什么是shell

徐爺?shù)幕卮穑阂环N交互環(huán)境鲫构,充當(dāng)用戶和kernel之間的解釋

  1. 寫下一個(gè)命令浓恶,列出終端下的文件

ls

  1. 寫下一個(gè)命令,以逆創(chuàng)建時(shí)間的順序列出所有以'.perl'結(jié)尾的文件信息

ls -r *.perl

  1. 寫下一個(gè)命令结笨,列出你在運(yùn)行的程序

ps -aux | grep youranme or top -u yourname

  1. 寫下一個(gè)命令包晰,列出待打印的文件

lpq 需要安裝軟件

  1. 寫下一個(gè)命令,刪除3個(gè)文件分別叫做 file1.txt, file2.txt, and data1.txt

rm file1.txt file2.txt data1.txt

  1. 寫下一個(gè)命令炕吸,在/tmp文件夾下創(chuàng)建一個(gè)子目錄foo

mkdir -p /tmp/foo

  1. 寫下一個(gè)命令伐憾,刪除剛剛創(chuàng)建的目錄

rmdir /tmp/foo

  1. 寫下一個(gè)命令,列出ls命令所有的選項(xiàng)

man lsor man ls


  1. GNU/Linux FAQ by Richard Stallman ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赫模,一起剝皮案震驚了整個(gè)濱河市树肃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瀑罗,老刑警劉巖胸嘴,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莉钙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡筛谚,警方通過(guò)查閱死者的電腦和手機(jī)磁玉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)驾讲,“玉大人蚊伞,你說(shuō)我怎么就攤上這事∷泵” “怎么了时迫?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谓晌。 經(jīng)常有香客問(wèn)我掠拳,道長(zhǎng),這世上最難降的妖魔是什么纸肉? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任溺欧,我火速辦了婚禮,結(jié)果婚禮上柏肪,老公的妹妹穿的比我還像新娘姐刁。我一直安慰自己,他們只是感情好烦味,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布聂使。 她就那樣靜靜地躺著,像睡著了一般谬俄。 火紅的嫁衣襯著肌膚如雪柏靶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天溃论,我揣著相機(jī)與錄音屎蜓,去河邊找鬼。 笑死蔬芥,一個(gè)胖子當(dāng)著我的面吹牛梆靖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笔诵,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼返吻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了乎婿?” 一聲冷哼從身側(cè)響起测僵,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捍靠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沐旨,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年榨婆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磁携。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡良风,死狀恐怖谊迄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烟央,我是刑警寧澤统诺,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站疑俭,受9級(jí)特大地震影響粮呢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钞艇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一啄寡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧香璃,春花似錦这难、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嵌溢。三九已至眯牧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赖草,已是汗流浹背学少。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秧骑,地道東北人版确。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乎折,于是被迫代替她去往敵國(guó)和親绒疗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345