首先介绍一下linux系统(以Ubuntu系统为例)的文件系统
Linux下“/”就是根目录,所有的目录都是有根目录衍生出来的。/是一切目录的起点,如大树的主干。其它的所有目录都是基于树干的枝条或者枝叶。在ubuntu中硬件设备如光驱、软驱、usb设备都将挂载到这颗繁茂的枝干之下,作为文件来管理。(Ubuntu文件系统严格区分大小写)
/bin: bin是Binary的缩写。存放系统中最常用的可执行文件(二进制)。
/boot: 这里存放的是linux内核和系统启动文件,包括Grub、lilo启动器程序。
/dev: dev是Device(设备)的缩写。该目录存放的是Linux的外部设备,如硬盘、分区、键盘、鼠标、usb等。
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录,如passwd、hostname等。
/home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib: 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件。
/lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些零散文件。
/media: ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件。
/mnt: 作为被挂载的文件系统得挂载点。
/opt: 作为可选文件和程序的存放目录,主要被第三方开发者用来简易安装和卸载他们的软件。
/proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这里存放所有标志为文件的进程,比较cpuinfo存放cpu当前工作状态的数据。
/root: 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin: s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理、目录查询等关键命令文件。
/srv: 存放系统所提供的服务数据。
/sys: 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
/tmp: 这个目录是用来存放一些临时文件的,所有用户对此目录都有读写权限。
/usr: 存放与系统用户有关的文件和目录。
/usr 目录具体来说:
/usr/X11R6: 存放X-Windows的目录;
/usr/games: 存放着XteamLinux自带的小游戏;
/usr/bin: 用户和管理员的标准命令;
/usr/sbin: 存放root超级用户使用的管理程序;
/usr/doc: Linux技术文档;
/usr/include: 用来存放Linux下开发和编译应用程序所需要的头文件,for c 或者c++;
/usr/lib: 应用程序和程序包的连接库;
/usr/local: 系统管理员安装的应用程序目录;
/usr/man: 帮助文档所在的目录;
/usr/src: Linux开放的源代码;
/var: 长度可变的文件,尤其是些记录数据,如日志文件和打印机文件。
/var/cache: 应用程序缓存目录;
/var/crash: 系统错误信息;
/var/games: 游戏数据;
/var/log: 日志文件;
/var/mail: 电子邮件;
/var/tmp: 临时文件目录;
在linux中为了命令的简洁,对于一些特殊的文件系统有一个代称,例如
.或者./ #代表当前路径
~ #代表家目录,普通用户为/home/用户名/,root用户为/root
.. #代表当前路径的上一级目录
/ #代表根目录
./.文件(夹)名 #文件(夹)名之前加.为隐藏文件或者文件夹,如/root/.cache为root文件夹下的隐藏文件夹。
# #代表root用户
$ #代表当前用户
文件的绝对路径,由目录的最顶层作为开始的。即从目录的最开始位置开始,直到目标所在的位置结束。简单而言就是从根目录开始算第一层。绝对路径是由根目录“/”写起的,比如 /root/
相对路径是相对于当前目录的位置而言的。可以理解为在一个目录路径中切换时,不用从文件的最开始位置开始,而是直接从某个路径下的文件路径开始切换。
查看文件夹里面的文件信息的命令
ls [选项] [目录或文件]
选项:
-a 显示指定目录下所有子目录与文件,包括隐藏文件。
-A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“ .”和 “ ..”。
-i 显示文件和目录的inode编号。
-l 以长格式来显示文件的详细信息,这个选项最常用。
-p 在目录后面加一个“ /”。
-R 递归式地显示指定目录的各个子目录中的文件。
其中:ls的使用是可以叠加的,比如下面的示例。
ls -hl :以详细信息列出文件,并且文件的大小根据实际情况使用k、m、G进行显示;
ls -al:以详细信息列出所有文件(叠加-a和-l)
例如,想查看当前文件夹下所有的文件(包括隐藏文件),并以详细信息列出,文件大小根据实际情况使用k、m、G进行显示,则可以使用:
ls -lha
将当前工作目录切换至指定的目标目录。
cd [目标目录]
特殊的使用方法如下:
cd #切换至用户主目录
cd ~ #切换至用户主目录
cd - #切换至此目录之前所在的目录
cd .. #切换至上级目录(在根目录使用“cd ..”还是进入根目录)
cd ../.. #切换至上两级目录
cd . #切换至当前目录
创建一个目录:
mkdir [选项] 目录名称
选项:
-m:对新建目录设置存取权限,也可以用chmod命令设置。如下:
mkdir -m=rw- test2 。即这个可以用来建立一个有权限的路径。
-p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。如下:
mkdir -p lesson/test1 。这个可以用来建立多级层次的路径。
linux 系统对文件有一个严格的文件权限管理。
linux系统文件权限有三种,分别是:
r:读
w:写
x:可执行。
例如
-rw-rw-r-- test.txt
-rw-rw-r–就是文件权限,第一位表示文件类型(-为文件,d为文件夹),剩下的每三位表示一组权限。分别对应拥有者权限、拥有者所在组权限、其他用户权限。
可以使用二进制表示文件权限。
r=4
w=2
x=1
最大为rwx=7
上述test.txt文件的权限为664
修改文件或目录的权限,该命令有两种语法,分别是文字设定法和数字设定法。如下:
文字设定法
chmod [操作对象][操作符] [权限模式] 文件/目录名
选项:
①操作对象
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件所有者有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
②操作符
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
③权限模式
r 可读。
w 可写。
x 可执行。
说明:权限模式可以是3中权限的组合,当时组合时需要指明操作对象。
例如,将test文件添加可写权限,则命令为:
chmod +w test
数字设定法
chmod [权限模式] 文件/目录名
①权限模式:将每一组权限的rwx看成二进制,二进制为1表示有此权限,二进制为0表示没有此权限,那就有3组2进制。
例如,将文件test文件修改为r-xrw–wx,二进制为101 110 011,十进制为563,则命令为
chmod 563 test
更新或新建文件:
touch [选项] 文件或目录
说明:如果文件或目录存在就更新其建立时间,如果文件或目录不存在就创建普通文件。
新建普通文件test.txt。如:
touch test.txt
删除文件或目录:
rm [选项] 文件或目录
说明:该命令的功能为删除一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。执行rm指令可删除文件或目录,如欲删除目录必须加上参数“-r”,否则预设仅会删除文件。
选项:
-f 忽略不存在的文件,从不给出提示。
-r 指示rm将参数中列出的全部目录和子目录均递归地删除。
-i 进行交互式删除。
使用示例如下:
1)删除普通文件,rm。如:rm test
2)删除文件夹。 rm work/ -r ;rmdir work/
将给定的文件或目录复制到另一个文件或目录:
cp [选项] 源文件或目录 目标文件或目录
说明:cp命令用在复制文件或目录时,如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
选项:
-f 强行复制文件或目录,不论目标文件或目录是否已存在。
-i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
-a 该选项通常在拷贝目录时使用,它保留链接、文件属性,并递归地拷贝目录。
-d 拷贝时保留链接。
对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
mv [选项] 源文件或目录 目标文件或目录
说明:视mv命令的第二个参数的不同(目标文件或目录)完成命令的改名和移动功能。当第二个参数类型是文件时,mv命令完成文件或目录的重命名功能,此时源文件或目录只能有一个,它将所给的源文件或目录重命名为给定的目标文件或目录名。当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各个参数指定的源文件或目录均移至目标目录中(最后一项目录)。在跨文件系统移动文件时,mv先复制,将原有文件删除,而与该文件的链接也将丢失。
选项:
-i 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。
-f 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。
[1] ubuntu文件系统结构讲解https://blog.csdn.net/poplong/article/details/8259386
[2] ubuntu文件系统结构讲解https://www.bilibili.com/read/cv19786074/
[3] https://explainshell.com/