老男孩教育60期-Linux文件属性-特殊符号系列-v2

运维学习交流群-点我加群:598972270

零.今日课程内容目录

Linux文件属性

ls -lhi 每一列含义
文件类型
inode和block
软硬链接
用户
权限

文件属性相关命令

which
find
whereis
tar
date

特殊符号与正则表达式

特殊符号
单引号 双引号 不加引号区别
管道
正则

一. 文件属性简介

老男孩教育-Linux文件属性-ls -lhi-v2-2019年4月8日.jpg

二.inode和block

1.含义

inode

inode index node 索引节点
inode号码相当于是我们每个人的身份证号码
inode空间

存放文件的属性信息(权限 所有者 大小 修改时间 硬链接数 文件类型)
block的位置
没有存放文件名

block

block 数据块 存放数据(文件内容)

2.关系

查看一个文件oldboy.txt 背后与inode 和block 关系?

老男孩教育-查看文件内容过程 cat oldboy.txt (inode和block).jpg
类型 inode block
文件 文件属性信息 文件内容
目录 目录属性信息 目录下面文件名字(文件名和inode对应关系)

3.特点

inode

在同一个磁盘分区中是唯一的。
每创建一个非空的文件就要占用inode 和至少1个block

block

存放数据(文件内容)
block 4k(磁盘分区大于500MB)
创建大文件10G,占用多个block
创建小文件1k, 剩余的空间将无法给别人使用。

4.查看

inode 和block数量是在创建磁盘分区(格式化)

查看 block 查看磁盘空间一共有多少还剩多少

[root@oldboyedu60-lnb ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        99G  1.6G   98G   2% /
devtmpfs        981M     0  981M   0% /dev
tmpfs           992M     0  992M   0% /dev/shm
tmpfs           992M  9.6M  982M   1% /run
tmpfs           992M     0  992M   0% /sys/fs/cgroup
/dev/sda1       197M  102M   95M  52% /boot
tmpfs           199M     0  199M   0% /run/user/0

查看inode总数

df -i 

软硬链接区别

  1. 如何创建:

a) 默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软链接。

  1. 含义:

a) 硬链接:在同一分区中inode节点号相同文件,
b) 软链接:相当于windows下面的快捷方式,存放源文件的位置(inode节点号与源文件不同)

  1. 特点:

a) 不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到
b) 软链接可以跨文件系统,硬链接不可以跨文件系统。

  1. 怎么没的(源文件,软链接,硬链接与删除)

a) 删除软链接文件,对源文件及硬链接文件无任何影响;
b) 删除文件的硬链接文件,对源文件及软链接文件无任何影响;
c) 删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
d) 同时删除源文件及其硬链接文件,整个文件才会被"真正"的删除。

老男孩教育-软硬链接区别-v2019.jpg

文件属性命令

which

find

[root@oldboyedu60-lnb oldboy]# find /oldboy/   -type f   -name "oldboy.txt"
/oldboy/oldboy.txt

找出以.txt结尾的文件

find /oldboy/   -type f   -name "*.txt"

-inum 和-samefile 了解即可
-inum找出与指定inode号码一样的文件
-samefile 找出与给定文件inode号码相同的文件


[root@oldboyedu60-lnb oldboy]# ll -i  oldboy.txt
202049772 -rw-r--r--. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# find /oldboy/ -inum 202049772
/oldboy/oldboy.txt.hard
/oldboy/oldboy.txt
[root@oldboyedu60-lnb oldboy]# find /oldboy/ -samefile  /oldboy/oldboy.txt
/oldboy/oldboy.txt.hard
/oldboy/oldboy.txt

tar

windows :winrar 压缩
Linux: tar 打包压缩

创建压缩包

tar zcf /tmp/etc.tar.gz /etc/

z 通过gzip软件进行压缩 .tar.gz tar打包 gzip 压缩
c create 创建包
v verbose 显示过程
f 指定压缩包

查看

t list 显示压缩包内容
tar tf /tmp/etc.tar.gz

解压

x extract 解压
tar xf /tmp/etc.tar.gz

解压到指定目录

tar xf /tmp/etc.tar.gz -C /opt

tar小结.png

【巨坑】tar让你迷茫的提示: Removing leading `/' from member names

【巨坑】tar让你迷茫的提示: Removing leading `/' from member names

解压压缩包中指定的文件或目录

tar zcf /tmp/etc.tar.gz   /etc 
[root@oldboyedu60-lnb opt]# ll
total 0
[root@oldboyedu60-lnb opt]# pwd
/opt
[root@oldboyedu60-lnb opt]# tar xf /tmp/etc.tar.gz   etc/hosts  etc/fstab etc/sysconfig/
[root@oldboyedu60-lnb opt]# tree 
.
└── etc
    ├── fstab
    ├── hosts
    └── sysconfig
        ├── anaconda
        ├── authconfig
        ├── cbq
        │   ├── avpkt
        │   └── cbq-0000.example
        ├── console
        ├── cpupower
        ├── crond
        ├── ebtables-config
        ├── firewalld
        ├── grub -> /etc/default/grub
        ├── init
        ├── ip6tables-config
        ├── iptables-config
        ├── irqbalance
        ├── kdump
        ├── kernel
        ├── man-db
        ├── modules
        ├── netconsole
        ├── network
        ├── network-scripts
        │   ├── ifcfg-eth0
        │   ├── ifcfg-lo
        │   ├── ifdown -> ../../../usr/sbin/ifdown
        │   ├── ifdown-bnep
        │   ├── ifdown-eth
        │   ├── ifdown-ippp
        │   ├── ifdown-ipv6
        │   ├── ifdown-isdn -> ifdown-ippp
        │   ├── ifdown-post
        │   ├── ifdown-ppp
        │   ├── ifdown-routes
        │   ├── ifdown-sit
        │   ├── ifdown-Team
        │   ├── ifdown-TeamPort
        │   ├── ifdown-tunnel
        │   ├── ifup -> ../../../usr/sbin/ifup
        │   ├── ifup-aliases
        │   ├── ifup-bnep
        │   ├── ifup-eth
        │   ├── ifup-ippp
        │   ├── ifup-ipv6
        │   ├── ifup-isdn -> ifup-ippp
        │   ├── ifup-plip
        │   ├── ifup-plusb
        │   ├── ifup-post
        │   ├── ifup-ppp
        │   ├── ifup-routes
        │   ├── ifup-sit
        │   ├── ifup-Team
        │   ├── ifup-TeamPort
        │   ├── ifup-tunnel
        │   ├── ifup-wireless
        │   ├── init.ipv6-global
        │   ├── network-functions
        │   └── network-functions-ipv6
        ├── rdisc
        ├── readonly-root
        ├── rsyncd
        ├── rsyslog
        ├── run-parts
        ├── selinux -> ../selinux/config
        ├── sshd
        ├── svnserve
        ├── trace-cmd.conf
        └── wpa_supplicant

6 directories, 65 files

【必会】vim必知必会的快捷键

https://www.jianshu.com/p/41a44acafad0

date

[root@oldboyedu60-lnb opt]# date +%F
2019-04-13
[root@oldboyedu60-lnb opt]# date +%Y-%m-%d
2019-04-13
[root@oldboyedu60-lnb opt]# date +%T
12:42:11
[root@oldboyedu60-lnb opt]# date +%H:%M:%S
12:42:25
[root@oldboyedu60-lnb opt]# date +%w
6
[root@oldboyedu60-lnb opt]# #显示当前的时间按照 年-月-日_小时-周几
[root@oldboyedu60-lnb opt]# #2019-04-13_12-6

查找根下所有以.txt 结尾、最近一天修改过、大于 1M 的文件
find / -type f -name "*.txt" -mtime -1 -size +1M

[root@oldboyedu60-lnb opt]# date -s "20111111 11:11:11"
Fri Nov 11 11:11:11 CST 2011
[root@oldboyedu60-lnb opt]# ntpdate  ntp1.aliyun.com 
13 Apr 14:56:08 ntpdate[2993]: step time server 120.25.115.20 offset 234157412.981742 sec
[root@oldboyedu60-lnb opt]# date 
Sat Apr 13 14:56:35 CST 2019

给rm命令加一个别名,让每次删除都强制提醒command not found,给出配置过程(要求配置后永久生效)

别名:
给命令起了1个昵称(小明)

作用:
1.防止执行危险命令
2.方便 省事

rm == rm -i 
cp == cp -i 
mv == mv -i 

配置别名:
第1个里程碑-查看别名

[root@oldboyedu60-lnb opt]# alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@oldboyedu60-lnb opt]# alias mv
alias mv='mv -i'

第2个里程碑-配置别名 运行rm的时候屏幕显示command bny 临时
设置别名格式

alias mv='mv -i'
alias 昵称='命令'

[root@oldboyedu60-lnb opt]# alias rm='echo command bny'
[root@oldboyedu60-lnb opt]# rm /oldboy/oldboy.txt  -fr
command bny /oldboy/oldboy.txt -fr

第3个里程碑-修改配置文件 /etc/profile 永久生效

[root@oldboyedu60-lnb ~]# tail -1  /etc/profile
alias rm='echo command bny'
[root@oldboyedu60-lnb ~]# source /etc/profile

第4个里程碑-排坑

cp mv rm 
[root@oldboyedu60-lnb ~]# cat  ~/.bashrc 
# .bashrc

# User specific aliases and functions

#alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

小结

1.命令行进行配置 临时
alias rm='echo oldboyxxx '
2.修改配置文件 永久
3.检查 生效
4.临时取消别名 \rm 或 /bin/rm 使用绝对路径

用户

UID GID

用户分类

分类 UID范围 说明
root 0 皇帝
虚拟用户/傀儡用户 1-999(C7) 1-499(C6) 满足每个进程要有一个用户和用户组 无法登陆系统
普通用户 1000以上(C7) 500(C6) 贫民 百姓

添加用户

[root@oldboyedu60-lnb ~]# useradd oldboy

查询用户信息

[root@oldboyedu60-lnb ~]# id oldboy 
uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)

设置密码

[root@oldboyedu60-lnb ~]# passwd oldboy
Changing password for user oldboy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

切换

[root@oldboyedu60-lnb ~]# su - oldboy 
[oldboy@oldboyedu60-lnb ~]$ whoami 
oldboy

[su]老男孩教育-用户切换命令图解.png

用户相关文件

  • /etc/passwd 存放用户信息
  • /etc/group 用户组信息
  • /etc/shadow 密码信息
  • /etc/gshadow 用户组密码

用户

UID GID
用户分类
用户相关文件
用户与某一个文件的关系

权限

rwx
r
read 是否可读
w
write 是否可写
x
execute 是否可以运行
执行
命令
脚本
计算

-rwxr-xr-x. 1 root root 117672 Apr 11 2018 /bin/ls
421401401
7 5 5

644 rw-r--r--
750 rwxr-x---
400 r--------

修改权限

chmod change mode 修改权限

方式1:数字

方式2:字母

用户与某一个文件的关系
    oldboy.txt
        主人  所有者      user  u 
        家人  所属用户组  group g 
        陌生人 其他人      other o 
[root@oldboyedu60-lnb oldboy]# chmod ugo+x oldboy.txt
[root@oldboyedu60-lnb oldboy]# ll oldboy.txt
-rwxr-xr-x. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# chmod a-x oldboy.txt
[root@oldboyedu60-lnb oldboy]# ll oldboy.txt
-rw-r--r--. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# chmod +x oldboy.txt
[root@oldboyedu60-lnb oldboy]# ll oldboy.txt
-rwxr-xr-x. 2 root root 136 Apr 13 11:43 oldboy.txt
[root@oldboyedu60-lnb oldboy]# chmod +x  /etc/rc.d/rc.local 
[root@oldboyedu60-lnb oldboy]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Apr 11  2018 /etc/rc.d/rc.local

chmod -R 递归修改权限

特殊符号

单引号 双引号 不加引号区别 反引号

'' 单引号所见即所得

"" 双引号和单引号类似 里面的特殊符号会被解析(运行) $ ``
不加引号 和双引号类似,但是可以使用{}

[root@oldboyedu60-lnb oldboy]# echo '$UID $HOSTNAME {1..5}'
$UID $HOSTNAME {1..5}
[root@oldboyedu60-lnb oldboy]# echo "$UID $HOSTNAME {1..5}"
0 oldboyedu60-lnb {1..5}
[root@oldboyedu60-lnb oldboy]# echo $UID $HOSTNAME {1..5}
0 oldboyedu60-lnb 1 2 3 4 5

反引号 `` == $() 优先执行命令

[root@oldboyedu60-lnb oldboy]# which mkdir 
/usr/bin/mkdir
[root@oldboyedu60-lnb oldboy]# ls -l /usr/bin/mkdir 
-rwxr-xr-x. 1 root root 79760 Apr 11  2018 /usr/bin/mkdir
[root@oldboyedu60-lnb oldboy]# ls -l which mkdir 
ls: cannot access which: No such file or directory
ls: cannot access mkdir: No such file or directory
[root@oldboyedu60-lnb oldboy]# ls -l $(which mkdir )
-rwxr-xr-x. 1 root root 79760 Apr 11  2018 /usr/bin/mkdir
[root@oldboyedu60-lnb oldboy]# ls -l $(which ls )

管道 |

命令1 | 命令2
把命令1结果 通过管道传递给 命令2使用

[root@oldboyedu60-lnb ~]# rpm -qa |grep tree 
tree-1.6.0-10.el7.x86_64
[root@oldboyedu60-lnb ~]# rpm -qa |grep ssh
libssh2-1.4.3-10.el7_2.1.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64

find 命令与管道配合

找出/oldboy下面以.txt结尾的文件 并删除(ls -l )

第1个里程碑-找出想要的文件

[root@oldboyedu60-lnb oldboy]# find /oldboy/ -type f -name "*.txt"
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
/oldboy/oldboy04.txt
/oldboy/oldboy05.txt
/oldboy/oldboy06.txt
/oldboy/oldboy07.txt
/oldboy/oldboy08.txt
/oldboy/oldboy09.txt
/oldboy/oldboy10.txt

第2个里程碑- xargs处理

[root@oldboyedu60-lnb ~]# find /oldboy/ -type f -name "*.txt"|ls -l
total 12
-rw-------. 1 root root 1503 Mar 23 14:58 anaconda-ks.cfg
-rw-r--r--. 1 root root    7 Apr 13 11:13 lidao.txt
-rw-r--r--. 1 root root   21 Mar 30 17:47 oldboy.txt
[root@oldboyedu60-lnb ~]# find /oldboy/ -type f -name "*.txt"|xargs  ls -l
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy02.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy03.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy04.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy05.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy06.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy07.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy08.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy09.txt
-rw-r--r--. 1 root root 0 Mar 30 10:04 /oldboy/oldboy10.txt

find +|xargs 管道前面的文字符号通过|xargs 处理变成参数(文件名)

find习题多方法

方法1
find /oldboy/ -type f -name "*.txt"|xargs ls -l

方法2
ls -l $(find /oldboy/ -type f -name "*.txt")
ls -l find /oldboy/ -type f -name "*.txt"

方法3 熟悉
find /oldboy/ -type f -name "*.txt" -exec ls -l {} ;

例题:找出/etc/下面以.conf结尾的文件打包备份到 /tmp下面 /tmp/conf.tar.gz

find /oldboy/ -type f -name “*.txt” |xargs ls -l

'' "" . ()

‘’ ”“ 。()

方法1:
[root@oldboyedu60-lnb ~]# find /etc/ -type f -name "*.conf" |xargs tar zcf /tmp/conf-xargs.tar.gz
tar: Removing leading `/' from member names
[root@oldboyedu60-lnb ~]# tar tf /tmp/conf-xargs.tar.gz

方法2
[root@oldboyedu60-lnb ~]# tar zcf /tmp/conf-dao.tar.gz $( find /etc/ -type f -name "*.conf")
tar: Removing leading `/' from member names
[root@oldboyedu60-lnb ~]# tar tf /tmp/conf-dao.tar.gz

方法3:
无法使用 压缩包会只保留最后一次的文件
find /etc/ -type f -name "*.conf" -exec tar zcf /tmp/conf-exec.tar.gz {} ;

find /etc/ -type f -name "*.conf" -exec tar zcf /tmp/conf-exec.tar.gz {} +

管道小结:

基础用法
把前一个命令结果传递后面的命令
rpm -qa |grep tree

其他用法
find与|xargs 管道前面的文字符号通过|xargs 处理变成参数(文件名)
找出所要的文件然后删除/显示详细信息/替换
找出所要的文件然后压缩

通配符:方便我们查找文件

*.txt 以.txt结尾的文件

  • 所有

{} 生成序列

[root@oldboyedu60-lnb ~]# echo {a..z} {0..9}
a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
[root@oldboyedu60-lnb ~]# echo oldboy{01..9}
oldboy01 oldboy02 oldboy03 oldboy04 oldboy05 oldboy06 oldboy07 oldboy08 oldboy09

[root@oldboyedu60-lnb ~]# touch oldboy.txt
[root@oldboyedu60-lnb ~]# cp  oldboy.txt{,.bak}
[root@oldboyedu60-lnb ~]# echo  oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[root@oldboyedu60-lnb ~]# echo  A{,C}
A AC
[root@oldboyedu60-lnb ~]# echo  A{B,C}
AB AC

() 
[]
{} 

? 任意1个字符
[]
[^]

通配符VS正则

名称 作用 支持的命令
通配符 方便我们查找文件 大部分的命令都可以使用
正则 方便我们进行过滤 三剑客 Python Go
cat oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY! 

^

[root@oldboyedu60-lnb oldboy]# grep '^m'  oldboy.txt
my blog is http://oldboy.blog.51cto.com 
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu60-lnb oldboy]# ls -l / |grep '^d'
drwxr-xr-x.   3 root root   37 Mar 23 17:07 alex
dr-xr-xr-x.   5 root root 4096 Mar 23 14:58 boot
drwxr-xr-x.  19 root root 3180 Mar 30 16:34 dev
drwxr-xr-x.  80 root root 8192 Apr 13 15:33 etc
drwxr-xr-x.   3 root root   20 Apr 13 15:32 home
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root  250 Apr 13 17:58 oldboy
drwxr-xr-x.   3 root root   17 Apr 13 14:45 opt
dr-xr-xr-x. 128 root root    0 Mar 30 16:34 proc
dr-xr-x---.   2 root root  224 Apr 13 17:58 root
drwxr-xr-x.  23 root root  620 Apr 13 14:52 run
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Mar 30 16:34 sys
drwxrwxrwt.   8 root root  267 Apr 13 17:57 tmp
drwxr-xr-x.  13 root root  155 Mar 23 14:50 usr
drwxr-xr-x.  19 root root  267 Mar 23 15:08 var
[root@oldboyedu60-lnb oldboy]# grep -n '^$' oldboy.txt
3:
8:
[root@oldboyedu60-lnb oldboy]# grep -v '^$' oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

下次:

正则
sed替换
awk取列
权限 13章
用户 14章

之前知识点的面试题

https://www.jianshu.com/c/e57d04635820

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

推荐阅读更多精彩内容