Linux没有后缀名,使用
权限
来区分文件类型LInux所有的存储设备都必须挂载之后用户才能使用,包括硬盘,U盘和光盘
- 没有硬件都有名称,成为设备文件名
- 挂载点可以当成是win的盘符来理解
- 把设备文件名和挂载点连接起来的过程就称为
挂载
单用户模式 : 类似于win的安全模式,启用最少的服务,主要用于修复
常用命令
文件处理命令
ls
1 | $ ls -la |
drwxr-xr-x : 拆分成
d
,rwx
,r-x
,r-x
d
表示目录,-
表示文件,l
表示软链接- 三个分为所有者 ,所属组,其他人的权限
rwx
表示读
,写
,执行
的权限(read,write,execute)
为什么所有者会可能没有执行权限?
对文件来讲
执行权限
是最高权限,遵循权限最小化,对于日志文件就没有必要有执行权限1 代表文件的引用计数
root root : 分别代表
所有者
,所属组
用户和文件的关系
所有者(U)
: 一般来说谁创建文件,那个用户就是文件的所有者,当然所有者是可以改变的,但是所有者只能有一个所属组(G)
: 代表一个用户集合,所有者赋予权限让这些人能使用这个文件其他人(O)
: 不属于上面的两个的都是其他人
823 : 文件大小,单位字节
1
2
3
4
5 ls -lh
# total 92K
# dr-xr-x---. 7 root root 4.0K Aug 23 15:43 .
# drwxr-xr-x 22 root root 4.0K Jun 17 07:02 ..
# -rw------- 1 root root 823 Mar 13 2017 anaconda-ks.cfgh代表human ,以人类(人性化)方式显示
Mar 13 2017 : 文件
修改时间
linux没有
文件创建时间
,有:- 文件的最后一次访问时间
- 文件的状态修改时间
- 文件的数据修改时间
anaconda-ks.cfg : 文件名
- 使用
ls -i
的i参数来查看文件的id , i就是id - 使用
ls -d
的d参数来查看目录本身 , d就是directory
cp
- cp的本质就是创建文件,因此就会修改文件属性,如果想保留文件属性,可以使用
-p
- cp默认复制文件,如果想复制目录,要使用
-r
(联想rm命令的-r
表示目录)
touch
文件名,目录名如果要使用空格,必须使用引号引起来:
1 | touch "program files" |
more
查看文件
- 空格 或者 f : 翻页
- 回车 : 一行一行的显示
- q : 退出
less
查看文件
类似于more,但是比more更高级 ,
- 支持往前翻页 : pgUp
- 支持搜索 :
/ + 关键词
,n
向下查找
ln
1 | # 创建文件issue 的软连接 /tmp/issue.soft |
软硬连接的结果:
1 | # 硬链接(注意计数引用的数量为2) |
软连接就像win里的快捷方式
所有人对于软连接都有全部的权限
原因很简单,这就是一个快捷方式而已,并不能决定源文件的操作权限
硬链接 , 除了文件的位置不一样,其他的属性,数据全部和源文件一致
- 硬链接可以同步更新
- 硬链接的
cp -p
的关系有点类似于python里的对复制对象copy和deepcopy的操作- 硬链接和源文件指向同一份文件id
cp -p
指向的文件id不一样
- linux的文件管理也是
计数引用
,所有对于一个文件A有软连接B和硬链接C,如果A删除,B肯定不能用,但是C是可以用的,因为还有C这一个计数引用
硬链接不可以跨分区
硬链接不可以用户目录
硬链接其实用的很少
权限管理命令
chmod
- change the permissions mode of a file
- 只有两个人可以更改权限 :
root
,文件所有者
- ugoa : 所有者,用户组,其他人,所有人
- +-= :
增加
权限,减少
权限,设置
权限(不管你之前是什么权限,现在把你设置为这个权限)
1 | ls -l |
权限的数字表示:
- r : 4
- w : 2
- x : 1
所以:rwxrw-r--
就是7 6 4
chmod使用权限数字:
1 | chmod 640 123.txt |
-R
递归修改目录权限(目录下所有文件的权限都会被修改)
1 | chmod -R 666 dir1/ |
文件目录权限总结:
代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件内容(cat/more/less/tail) | 可以列出目录中的内容(ls) |
w | 写权限 | 可以修改文件内容(vim) | 可以在目录中创建,删除文件(touch/rmdir/rm) |
x | 执行权限 | 可以执行文件 | 可以进入目录(cd) |
例如:
一个目录dir1下有一个文件file1,dir1的权限是
rwxrwxrwx
,file1的权限是-rw-r--r--
其他人的权限其实是可以删除file1这个文件的
- 也就是说,能否删除文件并不是该文件的写权限决定的(文件写权限决定的是vim),而是由该文件的目录的写权限决定的
- 同理,对于一个目录来说,rx权限是同时出现的.原因很简单,你不可以可以进去却不能列出内容,或者能列出内容但是进不去目录
chown
change file ownership : 修改文件的所有者
只有管理员root才能使用
```bash
chown[用户] [文件或目录]1
2
3
4
5
6
- 示例:
```bash
useradd heyingliang
chown heyingliang file1
chgrp
change file group ownership : 修改文件的所有组
```bash
chgrp [用户组] [文件或目录]1
2
3
4
5
6
7
- 示例:
```bash
groupadd brother
# 修改文件file1的所属组为brother
chgrp brother file1
umask
the user file-creation mask : 显示,设置文件的默认权限
每个用户都会有一个
默认组
,就是文件在创建的时候默认分配的用户组```bash
umask [-S]-S 以rwx形式显示新建文件默认权限
1
2
3
4
5
6
7
8
9
10
11
12
- 示例:
```bash
umask -S
# u=rwx,g=rx,o=rx
mkdir dir2
# drwxr-xr-x 2 root root 4096 Aug 24 06:48 dir2
touch file2
# -rw-r--r-- 1 root root 0 Aug 24 06:49 file2发现
- 目录的权限是rwxr-xr-x
- 文件的权限是rw-r–r–
原因 : 默认新建的文件都不能拥有可执行权限
umask的显示形式是 : 和rwxrwxrwx进行
逻辑与
运算1
2umask
# 0022- 第一个0代表特殊权限,暂时不管.
- 022就是代表了所有者,所属组,其他人的权限
- 022 即为
--- -w- -w-
--- -w- -w-
和rwx rwx rwx
进行相与,得出rwx r-x r-x
- 所以最终权限就是
rwx r-x r-x
更改默认权限:
1
2
3
4
5
6
7umask 077
touch file3
mkdir dir3
ls -l
# -rw------ 1 root root 0 Aug 24 06:49 file3
# drwx------ 2 root root 0 Aug 24 06:52 dir3
文件搜索命令
find
```bash
find [搜索范围] [匹配条件]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
- 示例:
- `-name` : 根据文件名
- `-iname` : 不区分大小写
- `-size` : 根据大小
- `-user` : 根据所有者查找
- `-amin` : 根据文件访问时间(access)
- `-cmin` : 根据文件属性修改时间(change)
- `-mmin` : 根据文件内容修改时间(modify)
- `-a` : 两个条件同时满足
- `-o` 两个条件满意其一
- `-type` : 根据文件类型查找
- `-inum` : 根据i节点查找
- `-exec` : 查找后执行命令
```bash
# 根据文件名搜索 : 在tmp文件夹根据名字查找dir1
find /tmp -name dir1
# /tmp/dir1
# find是全字匹配,必须精准匹配文件名
find /tmp -name dir
# 无返回
# 否则必须使用通配符
find /tmp -name dir*
# 不区分大小写
find /tmp -iname dir2
# 根据大小查找 : 查找大于100MB的文件 (+n大于,-n小于,n等于)
find /tmp -size +204800
# 根据所有者查找
find /tmp -user root
# 查找100分钟内被修改过属性的文件(+就是查找修改时间超过100分钟)
find /tmp -cmin -100
# 查找文件大小小于1000并且所有人为root的文件
find /tmp -size -1000 -a -user root
# 查找文件类型为file的文件(d就是目录,l就是软连接)
find /tmp -type f
# 查找目录 , 然后将查找结果执行ls -l
find /tmp -type d -exec ls -l {} \;
# 查找id为31531的文件 , 然后将其删除
find /tmp -inum 31531 -exec rm {} \ ;注意按文件大小查找的时候:
linux使用数据库来表示,一个数据块0.5K(512字节)
所以100MB = 102400KB = 204800
所以最终结果为:
1
find /tmp -size 204800
locate
在
文件资料库
中查找文件功能有点像MySQL里的创建一个文件资料库,然后在文件资料库里查找
```bash
在文件资料库中查找
locate file1
更新文件资料库
updatedb
不区分大小写
locate -i file1
1
2
3
4
5
6
7
8
9
10
11
### which
- 功能 : 搜索**命令**所在目录以及别名信息
- ```bash
which ls
# alias ls='ls --color=auto'
# /bin/ls
whereis
功能 : 搜索命令所在目录以及帮助文档路径
```bash
whereis lsls: /bin/ls /usr/share/man/man1/ls.1.gz
1
2
3
4
5
6
7
8
9
10
11
### grep
- 功能 : 在文件中搜索字符串匹配的行并输出
> 简单来说 , 文件有好多行 , 现在只想找到包含特定字符串的行
- ```bash
grep -iv [指定字串] [文件]参数 :
-i
: 不区分大小写-v
: 排除指定字符串
示例:
1
2
3
4
5# 在requirements.txt中查找包含aio的行
grep aio requirements.txt
# 排除开头为# 的行(也就是注释行)
grep -v ^# main.py
帮助命令
man
manual
```bash
查看ls命令的帮助信息
man ls
查看配置文件services的帮助信息
man services
1
2
3
4
5
- manual既可以查看命令,也可以查看服务 , 如果字符同时是命令和配置文件,那么就会首先查看命令的帮助文档
```bash
manual passwd我们使用数字来区分字符和配置文件.
命令为1
配置文件为5
1
2
3
4
5# 查看命令的passwd文档
manual 1 passwd
# 查看配置文件passwd
manual 5 passwd
whatis
查看命令的简短信息:
1 | whatis ifconfig |
apropos
查看配置文件的简短信息:
1 | apropos inittab |
help
显示命令常用的选项
1 | ls --help |
1 | # 查看帮助信息 |
用户管理命令
useradd
添加用户
1 | useradd heyingliang |
passwd
更改用户密码
1 | passwd heyingliang |
who
查看登录用户信息
- root : 登录用户名
- pts : 登录的终端
- 0 : 远程登录的终端号
- 2019-08-24 08:00 : 登录的时间
- 211.97.3.242 : 登录的主机IP地址
1 | who |
w
关于用户更多的信息:
1 | w |
压缩和解压命令
gzip
1 | # 压缩 |
- gzip只能压缩文件
- gzip压缩不保留源文件
tar
打包目录
c
: create,表示打包v
: 显示详细信息f
: 指定文件名z
: 打包的同时进行压缩-x
: 解包
1 | # 将dir1目录打包成dir.tar |
zip
压缩文件或目录
- 保留源文件
- 支持压缩目录
1 | # 将文件file1压缩成file.zip |
bzip2
- 是gzip的升级版
- 还是只支持压缩文件
-k
: 添加该选项后保留源文件
1 | # 压缩 |
bzip2配合tar : 将z
改为 j
1 | # tar配合gzip压缩 |
网络命令
write
功能 : 给用户发信息,以Ctrl + D 保存结束
1 | write heyingliang |
wall
- write all : 发送广播信息
- 自己也会收到这个广播信息
1 | wall 123789 |
ping
功能 : 测试网络连通性
1 | ping 192.168.1.156 |
ifconfig
interface configure
查看和设置网卡信息
```bash
查看信息
ifconfig
设置信息
ifconfig eth0 192.168.8.250
1
2
3
4
5
6
7
> eth0 : 代表本地的真实网卡
>
> loop : 本地回环
- 返回信息:eth0 Link encap:Ethernet HWaddr F2:3C:91:02:9F:CC
inet addr:139.162.112.233 Bcast:139.162.112.255 Mask:255.255.255.0 inet6 addr: 2400:8902::f03c:91ff:fe02:9fcc/64 Scope:Global inet6 addr: fe80::f03c:91ff:fe02:9fcc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:40528496 errors:0 dropped:0 overruns:0 frame:0 TX packets:25789726 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:28930421737 (26.9 GiB) TX bytes:29062325006 (27.0 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:3287 errors:0 dropped:0 overruns:0 frame:0 TX packets:3287 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1029216 (1005.0 KiB) TX bytes:1029216 (1005.0 KiB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
> - Ethernet : 以太网
> - HWaddr F2:3C:91:02:9F:CC : 网卡硬件地址
> - inet addr:139.162.112.233 : 当前IP
> - Bcast:139.162.112.255 : 网络广播地址
> - Mask:255.255.255.0 : 子网掩码
> - inet6 addr: 2400:8902::f03c:91ff:fe02:9fcc/64 Scope:Global : IPV6地址信息
> - UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 : 网络附加信息
> - RX packets:40528496 errors:0 dropped:0 overruns:0 frame:0 : 接收到的数据包的数量和丢包等等信息
> - TX packets:25789726 errors:0 dropped:0 overruns:0 carrier:0 : 发送的数据包额度数量和丢包等等信息
> - RX bytes:28930421737 (26.9 GiB) : 接受的数据包的总大小
> - TX bytes:29062325006 (27.0 GiB) : 发送的数据包的总大小
### mail
- 查看发送电子邮件
- 就像是真实的邮件一样,write只能在对方在线的时候发生,mail不管对方在不在线都可以
- mail 一般是用于系统发送给root对象的,这样就可以知道系统出现的问题
- ctrl +D 保存发送
- ```bash
# 发送邮件
mail [用户名]
# 查看邮箱情况
mail
# 查看邮箱情况之后 , 输入右键编码即可查看邮件内容
1
# 然后h就可以返回邮箱情况
h
# 删除编号为1的邮件
d 1
last
列出过去登入系统的用户信息
示例:
1
2
3
4
5last
# blog_use pts/1 211.97.3.242 Sat Aug 24 09:51 still logged in
# blog_use pts/1 211.97.3.242 Sat Aug 24 08:44 - 09:51 (01:06)
# root pts/0 211.97.3.242 Sat Aug 24 08:00 still logged in
# root pts/3 211.97.3.242 Sat Aug 24 06:37 - 10:08 (03:31)
lastlog
和last差不多:
1 | lastlog |
traceroute
显示数据包到主机间的路径
```bash
traceroute www.baidu.com1
2
3
4
5
6
7
8
9
### netstat
- 查看网络相关的信息
- ```bash
netstat [选项]参数:
- -t : TCP协议
- -u : UDP协议
- -I : 监听
- -r : 路由
- -n : 显示IP地址和端口号
示例:
1
2
3
4
5
6
7
8# 查看本机监听的端口
netstat -tlun
# 查看本机所有的网络连接
netstat -an
# 查看本机路由表
netstat -rn
setup
配置网络(red hat专用)
mount
挂载命令
```bash
mount [-t 文件系统] 设备文件名 挂载点1
2
3
4
5
6
7
8
9
10
11
- 示例:
```bash
mount -t iso9660 /dev/sr0/mut/cdrom
# 简写 : mount + 设备文件名 + 挂载点
mount /dev/sr0 /mnt/cdrm/
# 卸载:
umont /dev/sr0挂载就是:
- 找到硬件
- 给这个硬件分配一个设备文件名A
- 寻找一个目录B
- 将A和B连接起来
关机重启命令
shutdown
参数:
- c : 取消前一个关机命令
- h : 关机
- r : 重启
1 | shutdown -h now |
halt/poweroff/init 0
关机
reboot/init 6
重启
系统运行级别:
- 0 关机
- 1 单用户
- 2 不完全多用户,不含NFS服务
- 3 完全多用户
- 4 未分配
- 5 图形界面(默认)
- 6 重启
1 | # 查看当前的运行级别 |
logout
退出登录