一、Linux文件与目录结构
1.文件
Linux一切皆文件
2.文件类型
字符 | 文件类型 | 说明 |
---|---|---|
- | 普通文件 | 存储文本或二进制数据 |
d | 目录文件 | 存储其他文件或目录的容器 |
c | 字符设备文件 | 实现了字符设备驱动程序接口的设备文件,例如串行端口、键盘、鼠标等等 |
b | 块设备文件 | 实现了块设备驱动程序接口的设备文件,例如硬盘、U盘等等 |
s | 套接字 | 实现了进程间通信机制的一种方式,用于网络编程或进程间通信 |
p | 命名管道(FIFO) | 实现了一种进程间通信机制,允许一个进程打开特殊文件,并将数据写入该文件,而另一个进程则可以从该文件中读取数据 |
l | 符号链接文件 | 包含另一个文件的路径名,通过打开这个链接可以访问源文件 |
ls -l
列出的项
- 第一个字母代表文件类型,后面的代表权限。
bin -> usr/bin
- 表示
bin
是一个软链接(symbolic link),指向/usr/bin
目录。- 软链接充当了一个指针,指向另一个文件或目录,类似快捷方式。
- (硬链接相当于取别名,可以通过
ls-i
查看inode
辨别是否是同一个文件)。
3.目录结构
在Linux中,所有的文件和目录都位于根目录(/)下或者其子目录中。Linux文件系统的目录结构是一个树形结构,从根目录开始,一直延伸到最底层的子目录和文件。
ubuntu 20.04 下的二级目录内容和访问权限
目录名 | 内容 | 访问权限 |
---|---|---|
bin | 存放二进制可执行文件(命令) | 所有用户可读、执行 |
boot | 存放启动所需的文件,如内核、引导程序等 | 只有root用户可读写、执行 |
cdrom | 挂载光盘后的挂载点 | 只有root用户可读写、执行 |
dev | 存放设备文件 | 所有用户可读写、执行 |
etc | 存放系统配置文件 | 只有root用户可读写、执行 |
home | 存放普通用户的家目录 | 每个用户有自己的家目录,只有该用户及root用户可读写、执行 |
lib | 存放库文件 | 所有用户可读、执行;只有root用户可写 |
lib32, lib64, libx32 | 存放特定位数的库文件 | 同lib目录 |
lost+found | 用于恢复一些没有指定父目录的文件、目录,通常为空 | 只有root用户可读写、执行 |
media | 自动挂载的可移动设备的挂载点 | 只有root用户可读写、执行 |
mnt | 临时挂载其他文件系统的挂载点 | 只有root用户可读写、执行 |
mylog | 可能是一个用户自定义的目录 | 取决于创建该目录的用户所属组和权限 |
opt | 存放第三方软件包 | 只有root用户可读写、执行 |
proc | 存放进程信息的虚拟文件系统 | 所有用户可读,只有root用户可写 |
root | 超级用户(root)的家目录 | 只有root用户可读写、执行 |
run | 运行时文件系统,存放一些运行时需要的文件 | 所有用户可读写、执行 |
sbin | 存放超级用户使用的二进制命令 | 只有root用户可读写、执行 |
snap | 存放Snap应用程序的挂载点 | 只有root用户可读写、执行 |
srv | 存放一些服务相关的数据 | 只有root用户可读写、执行 |
swapfile | 交换文件 | 只有root用户可读写、执行 |
sys | 存放系统相关的文件,通常是sysfs文件系统的挂载点 | 所有用户可读,只有root用户可写 |
tmp | 存放临时文件 | 所有用户可读写、执行;通常定期清空 |
usr | 存放主要系统软件,如/usr/bin、/usr/include等 | 所有用户可读、执行;只有root用户可写 |
var | 存放经常变化的文件,如日志文件、缓存文件等 | 所有用户可读写、执行;只有root用户可写某些目录,如/var/log等 |
二、基础命令
命令
1.格式
命令名 [选项(s)] [参数(s)]
- 命令区分大小写,选项不区分
- [ ]表示内容可以不要
- 有多个选项,选项可以组合使用
- 每两部分需要空格隔开
- 参数可能是多个
2.本质
-
命令就是一组程序。
-
它们已经被被添加到了
环境变量
,我们可以在任何目录下使用它们。 -
可以通过
which
查找命令,它会在环境变量PATH
指定的路径中查找指定的命令,并输出该命令的完整路径
ls命令
功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
- 参数:被查看的文件夹,不提供参数,表示查看当前工作目录
- -l,以列表形式查看
- -h,配合-l,以更加人性化的方式显示文件大小
- -a,显示隐藏文件
- -i,列出指定目录中文件和目录的inode号码
在Linux中以
.
开头的,均是隐藏的,需要-a
选项才可查看到。
total
表示文件大小总和
pwd命令
功能:展示当前工作目录
语法:pwd
cd命令
功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,不提供默认切换到当前登录用户HOME目录
,但可以通过cd
或cd ~
切换到。
扩展–特殊路径符:
./
表示当前目录。
../
表示上一级目录,可以嵌套。
~
表示用户主目录。
如:
ls ./
:列出当前目录文件,与ls
相同
cd ../../
:切换到上两级目录
cd ~
或cd
:切换到当前用户工作目录
HOME目录
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
-
普通用户的HOME目录,默认在:
/home/用户名
-
root用户的HOME目录,在:
/root
相对路径、绝对路径
-
相对路径,非
/
开头的称之为相对路径相对路径表示以
当前目录
作为起点,去描述路径,如test/a.txt
,表示当前工作目录内的test文件夹内的a.txt文件 -
绝对路径,以
/
开头的称之为绝对路径绝对路径从
根
开始描述路径
mkdir命令
功能:创建文件夹
语法:mkdir [-p] 参数
- 参数:被创建文件夹的路径
- 选项:-p,可选,表示
创建前置路径
touch命令
功能:创建文件
语法:touch 参数
- 参数:被创建的文件路径(前置路径存在)
cat命令
功能:查看文件内容
语法:cat 参数
- 参数:被查看的文件路径
more命令
功能:查看文件,可以支持翻页查看
语法:more 参数
- 参数:被查看的文件路径
- 在查看过程中:
空格
键翻页q
退出查看
下方我们先用bin目录的内容覆盖
文件test
的内容,再用more
查看# test是文件 echo $(ls bin) > test more test
cp命令
功能:复制文件、文件夹
语法:cp [-r] 参数1 参数2
- 参数1,被复制的
- 参数2,要复制去的地方
- 选项
:-r,可选,复制文件夹使用
示例:
cp a.txt b.txt
,复制当前目录下a.txt为b.txtcp a.txt test/
,复制当前目录a.txt到test文件夹内cp -r test test2
,复制文件夹test到当前文件夹内为test2存在
mv命令
功能:移动文件、文件夹
语法:mv 参数1 参数2
- 参数1:被移动的
- 参数2:要移动去的地方,
参数2(目标目录)如果不存在,则会进行改名
rm命令
功能:删除文件、文件夹
语法:rm [-r -f] 参数...参数
- 参数:支持多个,每一个表示被删除的,空格进行分隔
- 选项:-r,删除文件夹使用(递归)
- 选项:-f,强制删除,不会给出确认提示,一般root用户会用到
rm命令很危险,一定要注意,特别是切换到root用户的时候。
which命令
功能:查看命令的程序本体文件路径
语法:which 参数
- 参数:被查看的命令
find命令
功能:搜索文件
语法1按文件名搜索:find 路径 -name 参数
-
路径,搜索的起始路径
-
参数,搜索的关键字,支持通配符*
*
test表示搜索任意以test结尾的文件- test
*
表示以test开头的文件 *
test*
表示包含test的文件
-
find path -iname "test.txt"
:搜索名为test.text
或Test.text
的文件 -
find path -not -name "*test*.txt"
:搜索文件名以.txt
结尾但不包含单词test
的文件 -
find path d -name "logs"
:搜索目录名为logs
的所有子目录
下方执行语句为
find / -iname "mv"
grep命令
功能:过滤关键字
语法:grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号。
- 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
作为管道符的输入,具体见下方管道符。
wc命令
功能:统计
语法:wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
参数文件路径,可作为管道符的输入,具体见下方管道符
管道符|
写法:|
功能:将符号左边的结果,作为符号右边的输入
示例:
cat a.txt | grep itheima
,将cat a.txt的结果,作为grep命令的输入,用来过滤itheima
关键字
可以支持嵌套:
cat a.txt | grep itheima | grep itcast
echo命令
功能:输出内容
语法:echo 参数
- 参数:被输出的内容
- $符号通常用来表示一个环境变量的值
`反引号
功能:被两个反引号包围的内容,会作为命令执行
示例:
- echo `pwd`,会输出当前工作目录
tail命令
功能:查看文件尾部内容
语法:tail [-f] 参数
- 参数:被查看的文件
- 选项:
- -f,持续跟踪文件修改
- -n 空格+ 数字,显示末尾多少行
head命令
功能:查看文件头部内容
语法:head [-n] 参数
- 参数:被查看的文件
- 选项:-n,查看的行数
重定向符
功能:将符号左边的结果,输出到右边指定的文件中去
>
,表示覆盖输出>>
,表示追加输出
软链接和硬链接
软链接也称为符号链接,类似于 windows 里的快捷方式。
ln -s 原路径 创建链接的目标路径
- 支持文件和文件夹
操作同步、删除原文件、软链接也无法使用。
可以对路径较长的文件设立软链接,但是只能在指定目录使用。可以考虑添加环境变量。
硬链接相当于取别名,可以通过ls-i
查看inode
辨别是否是同一个文件,inode
是文件标识。
ln 源文件路径 硬链接路径
- 只支持普通文件
下图中
inode
都是14846,是同一个文件