Linux命令

Ctrl+c 强制中断程序的执行
Ctrl+z 将程序挂起,fg/bg继续任务

Ctrl+d 键盘输入结束或退出终端
Ctrl+s 中断控制台输出
ctrl+q 恢复控制台输出
ctrl+l 清屏
Ctrl+a 将光标移至输入行头,相当于Home键
Ctrl+e 将光标移至输入行末,相当于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
命令 --help 查看一些它的某个命令具体参数的作用
man 命令 显示系统手册页中的内容

一行中运行多个命令。
Command 1 ; Command 2 首先运行Command1,然后运行Command2
Command 1 && Command 2 当Command1运行成功并结束,然后运行Command2
Command 1 || Command 2 当Command1运行失败时才运行Command2

文件

bin (binaries)存放二进制可执行文件
sbin (super user binaries)存放二进制可执行文件,只有root才能访问
etc (etcetera)存放系统配置文件
usr (unix shared resources)用于存放共享的系统资源
home 存放用户文件的根目录
root 超级用户目录
dev (devices)用于存放设备文件
lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt (mount)系统管理员安装临时文件系统的安装点
boot 存放用于系统引导时使用的各种文件
tmp (temporary)用于存放各种临时文件
var (variable)用于存放运行时需要改变数据的文件

文件增删改查

mkdir

创建目录和父目录a,b,c,d
mkdir -p a/b/c/d

-p 建立多级目录
-m 在建立目录的时候给目录赋于权限值

ls

-a 这个选项能显示.开头的隐藏文件
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-t 将文件依建立时间之先后次序列出
-i 显示每个文件的inode号
-m 所有项目以逗号分隔,并填满整行行宽
-R 同时列出所有子目录层
-h 将列出文件的大小以人性化格式输出
--color=tty(2个-号)显示文件的时候以色彩提示
-full-time显示文件的详细访问时间
-lc查看文件状态修改时间

rmdir

删除空目录

-p 删除多级空目录

cp

拷贝文件夹a到/tmp目录
cp -rvf a/ /tmp/

-r 复制整个目录里的内容
-p 复制文件属性
-u 有差异才复制
-i 文件已存在询问
-v 在复制文件的时候显示进度
-f 在复制的时候如果碰到目的文件名有重复就将原先的删除

mv

重命名 mv a.txt b.txt
移动文件a到/tmp目录,并重命名为b
mv -vf a /tmp/b
-i 如果目的地有相同文件名时会出现提示
-v 在搬移文件时显示进度,在移动多文件时非常有用
-u 当移动时只有源文件比目的文件新的时候才会移动
-f 强制覆盖已有的文件

touch

创建文件
touch asd.txt
创建多个文件
touch love_{1..10}_shiyanlou.txt

rm

删除机器上的所有文件
rm -rvf /
-i 在删除文件之前需要手工确认
-v 在删除文件的时候显示信息
-r 删除目录
-f 忽略提示

tr

删除、转换一段文本信息中的某些文字
-d 删除匹配的字符,注意不是全词匹配也不是按字符顺序匹配
-s 去除指定的在输入文本中连续并重复的字符
删除 "hello shiyanlou" 中所有的'o','l','h'
echo 'hello shiyanlou' | tr -d 'olh'
将"hello" 中的ll,去重为一个l

echo 'hello' | tr -s 'l'
将输入文本,全部转换为大写或小写输出
echo 'input some text here' | tr '[:lower:]' '[:upper:]'
上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的

jion

将两个文件中包含相同内容的那一行合并在一起。
-t 指定分隔符,默认为空格
-i 忽略大小写的差异
-1 指明第一个文件要用哪个字段来对比,默认对比第一个字段
-2 指明第二个文件要用哪个字段来对比,默认对比第一个字段
将/etc/passwd与/etc/group两个文件合并,指定以':'作为分隔符, 分别比对第4和第3个字段
sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group

paste

在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
-d 指定合并的分隔符,默认为 Tab
-s 不合并到一行,每个文件为一行

paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分

cat

第一个字节开始正向查看文件的内容
如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。
-b 显示文件内容的时候显示行数
-n 显示文件内容包括空行
-s 将多个空行合并成一个空行输出

tac

从最后一行开始反向查看一个文件的内容

统计当前目录下文件的个数(不包括目录)

ls -l | grep "^-" | wc -l
统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l

less

针对比较大的文件,我们就可以使用less命令打开某个文件。

按n(N)向下(上)查找。

more

查看文本文件命令

用空格向下翻页,用b向上翻页

+行数直接从给定的行数开始显示
-s 将多个空行压缩成一个空行
-p 清除屏幕后再显示

nano

文本编辑器
命令格式:nano [选项] [行号] 文件名

head

查看文件头部

-n <行数> 显示文件的最前指定的行
-c <字节数> 显示文件前N个字节数里的内容
-q 不输出文件头的内容
-v 输出文件头的内容

tail

查看文件尾部

-f 循环读取
-c <字节数> 显示文件前N个字节数里的内容
-q 不输出文件头的内容
-n <行数> 指定所显示的行数

-v 输出文件头的内容

tail -f access.log

ln

生成链接文件

命令格式:ln [选项] 源文件 链接文件

-f 删除已存在的目的文件
-i 如果碰到有重复名字的提示如何操作
-v 显示操作信息
-s 软链接选项

file

查看文件的类型

stat

显示文件或文件系统状态

命令格式:stat [选项] <文件/目录>

-f:查看指定的文件系统

stat可查看:
文件名 2. 文件尺寸 3. I节点号 4. 创建时间/访问时间/状态(属 主、组、权限)修改时间 5.权限 6.链接文件个数 7. 属主及属组等

whereis

显示一个二进制文件、源码或man的位置

which

显示一个二进制文件或可执行文件的完整路径

find

最常用的命令,命令的路径是作为第一个参数的, 基本命令格式为 find [path][option] [action] 。
sudo find /etc -name sources.list

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1搜索属于用户 'user1' 的文件和目录
find /usr/bin -type f -atime +100搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10搜索在10天内被创建或者修改过的文件
find ~ -size +1500c 查找大于1500字节的文件
find ~ -size 1500c查找等于1500字节的文件
find ~ -size -1500c查找小于1500字节的文件
find ~ -size +512k查找大于512k字节的文件
find ~ -size -1G查找小于1G字节的文件
find ~ -size +10查找大于10块的文件
find / -empty查找文件/目录字节为0的文件(即空文件)

grep

功能: 通过正则表达式查找文件中的关键字

-i:忽略大小写
-c:打印匹配的行数
-C:打印出匹配的上下文(上N行,下N行)的多少行-l:列出匹配的文件名
-L:列出不匹配的文件名
-n:打印包含匹配项的行和行标
-w:仅匹配指定的单词而非关键字
-e:索引匹配字串
-r:递归查询
-v:不输出匹配的行
-A <行号>:显示所找的匹配字段,并显示下面指定的行数的信息
-B <行号>:显示所找的匹配字段,并显示上面指定的行数的信息

grep -rn --color POST access.log查看nginx日志中的POST请求。
grep -rn --color Exception -A10 -B2 error.log看某个异常前后相关的内容
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇

正则表达式表示方法:

\忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
< 从匹配正则表达式的行开始
到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ n - m ] 范围 ;如[A-H]即包含A至H都符合要求
. 所有的单个字符
* 所有字符,长度可以为0

cut

打印每一行的某一字段

-d “n”:定义分界符,即点位
-f 取第几位的字符

-c:仅显示行中指定范围的字符

打印/etc/passwd文件中以:为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录:
cut /etc/passwd -d ':' -f 1,6
前五个(包含第五个)
cut /etc/passwd -c -5
前五个之后的(包含第五个)
cut /etc/passwd -c 5-

sort

排序
-r反转
-t参数用于指定字段的分隔符
-k 字段号用于指定对哪一个字段进行排序
-n 按照数字排序,默认情况下是以字典序排序的
cat /etc/passwd | sort -t':' -k 3 -n

wc

计数工具
行数
wc -l /etc/passwd
单词数
wc -w /etc/passwd
字节数
wc -c /etc/passwd
字符数
wc -m /etc/passwd
最长行字节数,西文字符来说,一个字符就是一个字节,但对于中文字符一个汉字是大于 2 个字节的,具体数目是由字符编码决定的
wc -L /etc/passwd

uniq

-c:在数据行前出现的次数
-d:只打印重复的行,重复的行只显示一次
-f:忽略行首的几个字段
-i:忽略大小写
-s:忽略行首的几个字母
-u:只打印唯一的行

用于过滤或者输出重复行。
因为uniq命令只能去连续重复的行,不是全文去重,所以要达到预期效果,我们先排序:

history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq
使用频率前三的命令
history |cut -c 8-|sort|uniq -dc|sort -rn -k1 |head -3

下载

wget url

sudo apt-get install axel

axel -n 10 -o /tmp/ [http://testdownload.net/test.tar.gz](http://testdownload.net/test.tar.gz)
-n 指定线程数
-o 指定另存为目录
-s 指定每秒的最大比特数
-q 静默模式

系统

who am i
查看用户

输出的第一列表示打开当前伪终端的用户的用户名,第二列的 pts/0 中 pts 表示伪终端,所谓伪是相对于 /dev/tty 设备而言的,还记得上一节讲终端时的那七个使用 [Ctrl]+[Alt]+[F1]~[F7] 进行切换的 /dev/tty 设备么,这是“真终端”,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端,pts/0 后面那个数字就表示打开的伪终端序号,第三列则表示当前伪终端的启动时间。

用户

sudo passwd lilei 设置用户lilei的密码
sudo adduser lilei 创建新用户lilei,默认为新用户在 /home 目录下创建一个工作目录
su -l lilei 切换到lilei用户
sudo deluser lilei --remove-home 删除用户

groups

groups shiyanlou


其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组
cat /etc/group | grep -E "shiyanlou"
查看自己属于哪些用户组

group_name:password:GID:user_list

sudo usermod -G sudo lilei
将其它用户加入 sudo 用户组
以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。

文件权限操作

ls -l a.txt

drwxr-xr-x 2 root root 4.0K 3月 23 2017 a.txt

第1位:文件类型(d 目录,- 普通文件,l 链接文件)
r 可读权限,w可写权限,x可执行权限(也可以用二进制表示 111 110 100 --> 764)
第2-4位:所属用户权限,用u(user)表示
第5-7位:所属组权限,用g(group)表示
第8-10位:其他用户权限,用o(other)表示
第2-10位:表示所有的权限,用a(all)表示

2是纯数字 ,表示 文件链接个数
第一个“root” 表示文件的所有者
第二个“root” 表示为文件的所在群组
“4.0K”,表示为文件长度(大小)
“3月 23 2017”,表示文件最后更新(修改)时间
“etc” 表示文件的名称

chown

改变文件的所属用户和所属组。

-R 修改指定目录及其子目录

chown -R xjj:xjj a修改a目录的用户和组为 xjj
chown user1 file1 改变一个文件的所有人属性
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chown user1:group1 file1改变一个文件的所有人和群组属性

chmod

改变文件的访问权限。

u表示当前用户 user(用户)
g表示同组用户group(用户组)
o表示其他用户others(其他用户)
a表示所有用户
+ 和 - 分别表示增加和去掉相应的权限。
r表示可读
w表示可写
x表示可执行

用数字来表示权限(r=4,w=2,x=1,-=0),
7:表示可读可写可执行,4+2+1,
6:表示可读可写,4+2
-R 修改指定目录及其子目录

chmod a+x a.sh给a.sh文件增加执行权限(这个太常用了)
chmod u+x file给file的属主增加执行权限
chmod 751 file给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file 上例的另一种形式
chmod =r file为所有用户分配读权限
chmod 444 file 同上例
chmod a-wx,a+r file同上例
chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。

df(report file system disk space usage)

显示文件系统磁盘空间的使用情况

-h 以人类可读的方式显示,KD,Mb,GB等

du (estimate file space usage)

显示指定的目录及其子目录已使用的磁盘空间的总和

-s显示指定目录的总和
-a 显示目录中所有文件的大小。
-h以人类可读的方式显示,Kb,Mb,G8等
-d参数指定查看目录的深度 # 只查看1级目录的信息
-d 0 ~
查看文件大小
du -h file

dd

转换和复制文件,也可以用在备份硬件的引导扇区、获取一定数量的随机数据或者空数据等任务中。

dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。

bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),
count用于指定块数量。
conv=ucase 将输出的英文字符转换为大写再写入文件

输出到test文件
dd of=test bs=10 count=1
输出到标准输出
dd if=/dev/stdin of=/dev/stdout bs=10 count=1

mount

-o 操作选项
-t 文件系统类型
-w|--rw|--ro权限

从/dev/zero设备创建一个容量为 256M 的空文件:
dd if=/dev/zero of=virtual.img bs=1M count=256
格式化磁盘:
sudo mkfs.ext4 virtual.img
挂载我们创建的虚拟磁盘镜像到/mnt目录:
mount -o loop -t ext4 virtual.img /mnt

卸载已挂载磁盘
sudo umount /mnt

free

显示当前内存和交换空间的使用情况

date

显示系统当前时间

top

显示当前系统中耗费资源最多的进程
查看某个进程中的线程状态
top -H -p pid

ps

较少单独使用,配参数根据需求,ps ef或者ps-aux

-e 显示所有选程,环境变量
-f 全格式显示
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
-l :较长,较详细地将PID的信息列出

ps aux查看系统所有的进程数据
ps ax 查看不与terminal有关的所有进程
ps -lA 查看系统所有的进程数据
ps axjf 查看连同一部分进程树状态

kill

kill -9 pid强制杀死一个进程

ifconfig

网卡网络配置,常用于查看当前IP地址
ifconfig etho 192.168.12.22 修改系统IP(重品后失效)

ping

ping baidu.com 测试网络的连通

hostname

查看主机名

关机

sudo shutdown now
sudo reboot now
sudo shutdown -c取消关机
sudo shutdown -r重启
sudo shutdown -f强行关闭应用程序

sudo shutdown -l注销当前用户
sudo shutdown -t 设置关机倒计时
sudo shutdown -h hours:minutes按预定时间关闭系统

export

设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。
export PATH=$PATH:/home/xjj/jdk/bin
source命令来让其立即生效
set 显示当前 Shell 所有变量,包括其内建环境变量,用户自定义变量及导出的环境变量。
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

/etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。
unset
命令删除一个环境变量

压、解缩

gzip

压缩文件成者文件夹
-d解压缩文件
gzip file1压缩一个叫做 'file1'的文件
gzip -9 file1最大程度压缩

zip

-r 参数表示递归打包包含子目录的全部内容,9 压缩级别最大1 最小,
-q 参数表示为安静模式,即不向屏幕输出信息,
-o,表示输出文件,
-l 参数将 LF 转换为 CR+LF 来达到win/linux兼容。

zip -r -9 -q -o -l shiyanlou.zip /home/shiyanlou/Desktop将目录 /home/shiyanlou/Desktop 打包成一个文件
zip file1.zip file1创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包

unzip

-q 使用安静模式
-d指定路径
-l 不解压只想查看压缩包的内容
-O(英文字母,大写 o)参数指定编码类型:(win默认会采用 GBK , Linux 默认 UTF-8 )
unzip -O GBK 中文压缩文件.zip

unzip -q shiyanlou.zip -d ziptest将文件解压到指定目录:

tar

-P 保留绝对路径符
-j 通过bzip2的支持进行压缩/解压缩
-v压缩的过程中显示文件
-c 表示创建一个 tar 包文件
-f 用于指定创建的文件名,件名必须紧跟在 -f 参数之后
-p在其他主机还原时希望保留文件的属性
-h 备份链接指向的源文件而不是链接本身
-x解包一个文件
-C 指定保存路径
-t只查看不解包文件

tar -jcv -f filename.tar.bz2 压缩
tar -jtv -f filename.tar.bz2 查询
tar -jxv -f filename.tar.bz2 -C dirname解压

rar

rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar 解压rar包

VIM


修改文本



定位命令


image

替换和取消命令

删除命令

常用快捷键


alias

alias a='find . -size +10M -type f -print0 | xargs -0 ls -Ssh | sort -z'

关闭防火墙

systemctl stop firewalld.service

禁止防火墙开机启动

systemctl disable firewalld.service

关闭SELinux

nano -w /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled保存并退出:^x->y->回车

计划任务

查看添加了哪些任务crontab -l
添加一个计划任务crontab -e
删除任务crontab -r
分 小时 天 月 星期 user-name command to be executed

启动 rsyslog,以便我们可以通过日志中的信息来了解我们的任务是否真正的被执行了
sudo apt-get install -y rsyslog
sudo service rsyslog start( Ubuntu 会默认自行启动不需要手动启动)
sudo cron -f &(实验环境中 crontab 也是不被默认启动的,同时不能在后台由 upstart 来管理,所以需要我们来启动它)

每分钟我们会在/home/shiyanlou 目录下创建一个以当前的年月日时分秒为名字的空白文件
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)

“ % ” 在 crontab 文件中,有结束命令行、换行、重定向的作用,前面加 ” \ ” 符号转义,否则,“ % ” 符号将执行其结束命令行或者换行的作用,并且其后的内容会被做为标准输入发送给前面的命令。

查看到执行任务命令之后在日志中的信息反馈
sudo tail -f /var/log/syslog

有选择的执行命令

which cowsay>/dev/null && echo "exist" || echo "not exist"
&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回 0 则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果
||在这里就是与&&相反的控制效果,当上一条命令执行结果为 ≠0($?≠0)时则执行它后面的命令
echo $?

修改root密码

ubuntu中修改root账号的密码命令:sudo passwd root

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

推荐阅读更多精彩内容