前言

此为 Linux 的小笔记

正文

Linux 系统文件结构

Linux 系统不像 Windows 系统那样拥有注册表对系统进行统一的管理,而是由一个庞大树状结构的文件目录所组成,分散管理,以”/“开始,称为根目录。可以说 在 Linux 中都是文件。
那么,该系统文件结构具体是什么样的呢?

注意:Linux 中的目录结构并不像 Windows 中的那样具有包含关系,Linux 中的目录只是一个引索点而已,不存在包含关系。

1级目录 存放的数据
/bin/ 存放普通用户和 root 都可以执行的系统命令
/boot/ 系统启动引导目录,存放跟系统启动相关的文件
/dev/ 设备文件保存目录
/etc/ 配置文件保存目录
/home/ 普通用户家目录
/lib/ 库文件保存目录,一些应用的零件
/media/ 挂载目录。可以用来挂载媒体设备,如软盘和光盘
/mnt/ 挂载目录。如 U 盘、移动硬盘和其他操作系统的分区
/misc/ 挂载目录。可以用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由自己决定
/opt/ 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。
/root/ root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/ root 能使用的系统命令
/srv/ 服务数据保存目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/ 临时文件目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。解压缩,机器之间拷贝文件都要用到该目录
/usr/ 第三方安装的东西可以放在这里,如自己装的软件等等,首先选此目录,其次选择 /opt/ 目录,目录下还可以在细分其他目录
/svr/ 一些服务

文件目录命名规则

首先 Linux 是区分大小写的,比如 aaa 文件或目录与 AAA 文件或目录是两个不同的文件或目录。
另外,Linux 对文件扩展名(后缀)是不区分的,也就是说,一张 a.jpg 的图片在 Linux 中即使不加 .jpg 也能正常显示,文件内容该是什么打开后就是什么。

shell

Shell是系统的用户界面,显示为一个命令行,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行

Linux 简单命令

在 Linux 下我们会使用到很多的命令,有内部命令和外部命令的区别。内部命令是随 shell 一起加载好的,可以直接用,外部命令需要找到命令所在位置才可以使用,或者添加到环境变变量中去。

Linux 环境变量

环境变量是指在操作系统中用来指定操作系统运行的一些参数:也就是说,操作系统通过环境变量来找到运行时的一些资源。在 Windows 中大家很熟悉。Linux 使用 env 命令来查看到 Linux 系统中所有的环境变量。

我们先来认识一下 Linux 命令的基本格式:

1
Linux命令= 命令 -【选项】 【参数】

并不是所有的都需要以上三个部分,后两部分不是必须。
【选项】是命令的一些操作的指令,实现命令的某些功能。- 后一般接单个字母,– 后一般接单词
【参数】通常是被命令操作的对象,例如文件,目录等

1
2
3
xxx --help  给一些小tips
man xxx 完整的使用手册(没有分类整理)
info xxx 完整的使用手册(有分类整理)

系统服务控制命令

针对服务的控制的命令,常用的就是 systemctl ,语法:

1
systemctl [控制命令] [服务名称]

[控制命令] 有:
start 启动
stop 停止
restart 重启 (先关闭,再启动)
reload 重新加载 (不关闭当前服务的重启)
status 查看服务状态 (运行中还是关闭状态)

cd 命令

它是用来切换工作目录的,根据后面所接的符号,路径等进行跳转

符号 意义
~ 家目录
.. 上一级目录
. 当前目录
- 上次的目录
1
2
3
4
5
6
7
8
9
[mtrleed@localhost /]$ cd opt
[mtrleed@localhost opt]$ cd ..
[mtrleed@localhost /]$ cd -
/opt
[mtrleed@localhost opt]$ cd ../
[mtrleed@localhost /]$ cd ~
[mtrleed@localhost ~]$ pwd
/home/mtrleed
[mtrleed@localhost ~]$

ls 命令

此命令全名为 list ,用来罗列出文件等信息,它同样有着很多的【选项】

选项 功能
-a 显示全部的文件,包括隐藏文件(隐藏文件通常为 . 开头)
-d 仅列出目录本身,而不是列出目录内的文件数据
-F 在文件或目录名后加上文件类型的指示符号,例如,* 代表可运行文件,/ 代表目录,= 代表 socket 文件,| 代表 FIFO 文件
-h 以人们易读的方式显示文件或目录大小,如 1KB、234MB、2GB 等
-i 显示 inode 节点信息,与磁盘有关
-l 使用长格式列出文件和目录信息,就是详细信息
-R 连同子目录内容一起列出来,将该目录下的所有文件都显示出来
-S 以文件容量大小排序
-t 以时间排序
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
[mtrleed@localhost /]$ ls  
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[mtrleed@localhost /]$ ls -a
. bin dev home lib64 mnt proc run srv tmp var
.. boot etc lib media opt root sbin sys usr
[mtrleed@localhost /]$ ls -l
总用量 28
lrwxrwxrwx. 1 root root 7 1月 3 01:42 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 1月 3 01:48 boot
drwxr-xr-x. 20 root root 3320 1月 3 23:17 dev
drwxr-xr-x. 148 root root 8192 1月 3 01:50 etc
drwxr-xr-x. 3 root root 21 1月 3 01:47 home
lrwxrwxrwx. 1 root root 7 1月 3 01:42 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 1月 3 01:42 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 1月 3 01:45 opt
dr-xr-xr-x. 251 root root 0 1月 3 23:17 proc
dr-xr-x---. 15 root root 4096 1月 3 23:18 root
drwxr-xr-x. 45 root root 1300 1月 3 23:19 run
lrwxrwxrwx. 1 root root 8 1月 3 01:42 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 1月 3 23:17 sys
drwxrwxrwt. 29 root root 4096 1月 3 23:19 tmp
drwxr-xr-x. 13 root root 155 1月 3 01:42 usr
drwxr-xr-x. 21 root root 4096 1月 3 01:50 var
[mtrleed@localhost /]$ ls -lh
总用量 28K
lrwxrwxrwx. 1 root root 7 1月 3 01:42 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K 1月 3 01:48 boot
drwxr-xr-x. 20 root root 3.3K 1月 3 23:17 dev
drwxr-xr-x. 148 root root 8.0K 1月 3 01:50 etc
drwxr-xr-x. 3 root root 21 1月 3 01:47 home
lrwxrwxrwx. 1 root root 7 1月 3 01:42 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 1月 3 01:42 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 1月 3 01:45 opt
dr-xr-xr-x. 251 root root 0 1月 3 23:17 proc
dr-xr-x---. 15 root root 4.0K 1月 3 23:18 root
drwxr-xr-x. 45 root root 1.3K 1月 3 23:19 run
lrwxrwxrwx. 1 root root 8 1月 3 01:42 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 1月 3 23:17 sys
drwxrwxrwt. 29 root root 4.0K 1月 3 23:19 tmp
drwxr-xr-x. 13 root root 155 1月 3 01:42 usr
drwxr-xr-x. 21 root root 4.0K 1月 3 01:50 var

注意,只有文件的大小是能确定的,目录的大小是引索的大小,而不是目录下的数据的大小

pwd 命令

此命令用来显示当前的工作目录

1
2
3
[mtrleed@localhost /]$ cd opt
[mtrleed@localhost opt]$ pwd
/opt

mkdir 命令

该命令用来创建目录,通常目录跟随着访问权限,我们要用到 -m ,在需要创建自定义多级目录的情况下需要用到 -p ,否则是无法创建的

1
2
3
4
5
6
7
8
[root@localhost opt]# mkdir test
[root@localhost opt]# ls
rh test
[root@localhost opt]# mkdir zhangsan/test1
mkdir: 无法创建目录"zhangsan/test1": 没有那个文件或目录
[root@localhost opt]# mkdir -p zhangsan/test1
[root@localhost opt]# ls
rh test zhangsan

touch 命令

该命令用于创建文件

1
2
3
4
[root@localhost opt]# cd test
[root@localhost test]# touch TTT
[root@localhost test]# ls
TTT

rm 命令

该命令用于删除目录或文件,具有破坏性,谨慎

选项 功能
-f 强制删除,递归删除时按需用,否则需多次 y (慎用)
-i 提示是否确定删除
-r 递归删除,删除目录时要用到
1
2
3
4
5
6
[root@localhost opt]# rm -r test
rm:是否进入目录"test"? y
rm:是否删除普通空文件 "test/TTT"?y
rm:是否删除目录 "test"?y
[root@localhost opt]# ls
rh zhangsan

cp 命令

该命令用于复制文件或目录

1
cp [选项] [源文件] [目标文件]
选项 功能
-i 询问,若存在询问是否覆盖
-p 保留源文件的属性,包括所有者、所属组和时间
-r 递归复制,用于复制目录

mv 命令

该命令用于移动文件或目录,具有破坏性,谨慎

1
mv [选项] [源文件] [目标文件]
选项 功能
-f 强制移动覆盖
-i 询问,如果目标文件已经存在,则询问用户是否覆盖(默认选项)

如果源文件和目标文件在同一目录中,就会改名为 [目标文件]

1
[root@localhost ~]# mv test test1  //test 文件改名为 test1

su 命令

该命令用于临时切换用户

1
2
3
4
5
[root@localhost /]# whoami
root
[root@localhost /]# su mtrleed
[mtrleed@localhost /]$ whoami
mtrleed

sudo 命令

该命令用于临时使用 root 权限来执行某些命令,在需要执行的命令前添加即可