linux文件管理

举报
子都爱学习 发表于 2022/02/28 19:09:35 2022/02/28
【摘要】 linux文件管理对于计算机来说,所谓的数据就是0和1的序列。这样的一个序列可以存储在内存中,但内存中的数据会随着关机而消失。为了将数据长久保存,我们把数据存储在光盘或者硬盘中。根据我们的需要,我们通常会将数据分开保存到文件这样一个个的小单位中(所谓的小,是相对于所有的数据而言)。但如果数据只能组织为文件的话,而不能分类的话,文件还是会杂乱无章。每次我们搜索某一个文件,就要一个文件又一个文件...

linux文件管理

对于计算机来说,所谓的数据就是0和1的序列。这样的一个序列可以存储在内存中,但内存中的数据会随着关机而消失。为了将数据长久保存,我们把数据存储在光盘或者硬盘中。根据我们的需要,我们通常会将数据分开保存到文件这样一个个的小单位中(所谓的小,是相对于所有的数据而言)。但如果数据只能组织为文件的话,而不能分类的话,文件还是会杂乱无章。每次我们搜索某一个文件,就要一个文件又一个文件地检查,太过麻烦。文件系统(file system)是就是文件在逻辑上组织形式,它以一种更加清晰的方式来存放各个文件。

Linux系统的结构

文件被组织到文件系统(file system)中,通常会成为一个树状(tree)结构。Linux有一个根目录/, 也就是树状结构的最顶端。这个树的分叉的最末端都代表一个文件,而这个树的分叉处则是一个目录(directory, 相当于我们在windows界面中看到的文件夹)。


QQ20220222-210135@2x.png

Linux系统的二级目录

  •    /bin       ##binary二进制可执行文件,系统常规命令
  •   /boot     ##启动目录,存放系统自动启动文件,内核,初始化程序
  •   /dev           ##系统设备管理文件
  •   /etc       ##大多数系统配置文件存放路径
  •   /home      ##普通用户家目录(/home/student)
  •   /media     ##临时的挂载点
  •   /lib         ##函数库
  •   /lib64     ##64位函数库(含有.bll)
  •   /mnt       ##临时挂载点
  •   /run       ##自动临时设备挂载点(u盘)
  •   /opt        ##第三方软件安装的位置
  •   /sbin      ##系统管理命令,通常只有root可以执行
  •   /proc      ##系统硬件信息和系统进程信息~~~~
  •   /srv        ##系统数据目录
  •   /var        ##系统数据目录
  •   /sys        ##内核相关数据
  •   /usr      ##用户相关信息数据
  •   /tmp        ##临时文件产生目录
  •   /root        ##超级用户家目录

  ***使用mount命令来更改临时设备的挂载点***

绝对路径和相对路径

  • 绝对路径:从/开始的路径
    Linux解释一个绝对路径的方式如下:先找到根目录文件,从该目录文件中读取home目录文件的位置,然后从home文件中读取vamei的位置……直到找到目录doc中的file.txt的位置。
  • 相对路径:从当前目录开始
    Linux会在进程中,维护一个工作目录(present working directory)的变量。也就是工作目录
  • 工作目录
    pwd:查看当前工作目录,cd:切换工作目录,pushd:将一个目录压入一个栈,popd:将一个目录弹出栈,dirs:查看目录栈中的元素
  • .的含义:指向当前目录
  • ..的含义:指向父目录


文件附加信息

文件自身包含的只有数据。文件名实际上储存在目录文件。除了这些之外,还有操作系统维护的文件附加信息,比如文件类型,文件尺寸,文件权限,文件修改时间,文件读取时间等。可以用ls命令查询文件信息($ls -l file.txt),得到如下结果:

-rw-r--r-- 1 vamei vamei 8445 Sep  8 07:33 file1.txt

QQ20220222-215001@2x.png

  • 我们先介绍最开始的-,它表示文件类型,说明file1.txt是常规文件(如果是目录文件,则应显示d)。
  • 随后有九个字符,为rw-r--r--,它们用于表示文件权限。这九个字符分为三组,rw-, r--, r--,分别对应拥有者(owner),拥有组(owner group)和所有其他人(other)。回顾Linux开机启动,登录后,我会有一个用户身份和一个组身份, 相当于我的名片。第一组表示,如果我的名片上的用户身份证明我是该文件的拥有者,那么我就可以对该文件有读取(r),写入(w)该文件的权限,但不拥有执行(-,如果拥有执行权限,则为x)该文件的权限。第二组表示,如果我的名片上的组身份证明我所在的组是该文件的拥有组的一员,那么我有从该文件读入的权限。第三组表示,如果我的名片显示我既不是拥有者,也不是拥有组的一员,那么我只有读入的权限。当我想要进行一个读取操作时,Linux会先看我是否是拥有者下文会进一步解释拥有者和拥有组。
  • 后面的1是硬连接(hard link)数目(link count)。
  • 之后的vamei表示用户vamei是文件的拥有者(owner),文件的拥有者有权更改文件权限(比如改为rwxrwxrwx)。而后面的vamei文件的拥有组是组vamei。文件的拥有者和拥有组在文件创建时就附加在文件上(相当于给文件上锁,只有有合适名片的用户才能打开操作)。要注意,Linux有一个超级用户root (也叫做根用户),该用户拥有所有的文件。
  • 随后的8445表示文件大小,单位为字节(byte)。
  • Sep 8 07:33表示文件的上一次写入的时间(modification time)。实际上在文件附加信息中还包含有文件的上一次读取时间(access time),没有显示出来。

软链接 (soft link, or symbolic link)

如上讨论硬链接时说到的,软链接不会影响文件的link count。如果还记得windows系统的快捷方式的话,Linux的软链接(soft link,也叫做symbolic link)就是linux的快捷方式。软链接本质上是一个文件,它的文件类型是symbolic link。在这个文件中,包含有链接指向的文件的绝对路径。当你从这个文件读取数据时,linux会把你导向所指向的文件,然后从那个文件中读取(就好像你双击快捷方式的效果一样)。软链接可以方便的在任何地方建立,并指向任何一个绝对路径。

软链接本身也是一个文件,也可以执行文件所可以进行的操作。当我们对软链接操作时,要注意我们是对软链接本身操作,还是对软链接指向的目标操作。如果是后者,我们就说该操作跟随链接指引(follow the link)。

 

umask

当我们创建文件的时候,比如使用touch,它会尝试将新建文件创建为权限666,也就是rw-rw-rw-。但操作系统要参照权限mask来看是否真正将文件创建为666。权限mask表示操作系统不允许设置的权限位,比如说037(----wxrwx)的权限mask意味着不允许设置设置group的wx位和other的rwx位。如果是这个权限mask的话,最终的文件权限是rw-r----- (group的w位和other的rw位被mask)。

我们可以通过    $umask 022   的方式改变权限mask。

文件操作

对于文件,我们可以读取(read)写入(write)运行(execute)。读取是从已经存在的文件中获得数据。写入是向新的文件或者旧的文件写入数据。如果文件储存的是可执行的二进制码,那么它可以被载入内存,作为一个程序运行。在Linux的文件系统中,如果某个用户想对某个文件执行某一种操作,那么该用户必须拥有对该文件进行这一操作的权限。文件权限的信息保存在文件信息(metadata)中

pwd
显示当前工作目录,不一定是用户主目录。

cd
改变当前工作目录
cd [directory_name]

ls
列出当前目录的文件和子目录
ls -a 列出所有目录、子目录、文件和隐藏文件
ls -R 列出从当前目录开始的所有的子目录、文件并且一层层往下显示
ls -F 列出文件、目录名并显示出文件类型
ls -t 以修改时间为时间倒序来列出文件、子目录
ls -l 以长列表格式显示文件、目录的详细信息

touch filename
创建文件
filename 不存在则创建一个新的空文件
filename 存在则更新该文件的修改访问时间

mkdir [-p] directory_name
创建目录
-p 目录不存在时可以建立目录

删除文件
rm [-i/f] filename(s)
-i 询问是否删除
-f 强制删除

删除目录:
rmdir directory_name(s) 删除空目录
rm -r[i] directory_name(s)
-r 删除非空目录
-i 删除前询问是否删除

ln [-s或P] source_file target_file
-s:建立软连接
-P:建立硬链接(注意是大写)

显示文件内容

1.cat

不分屏显示文本内容;
把小文件连接成大文件;
cat filename(s);

2.more

more filename(s)

3.head

查找文件的前多少行
head [-n] filename(s)
如: head -5 /etc/passwd

4.tail

查找文件的末尾多少行
tail [-n] filename(s)
如: tail -10 /etc/passwd

less
分页显示

cp
拷贝文件
cp [-i] source_file destination_file
cp [-i] source_file(s) destination_directory
-i选项作用:当目标文件存在,会询问是否覆盖,没有-i选项则不询问直接覆盖

拷贝目录
cp -r source_directory(s) destination_directory(s)

mv
移动文件目录或重命名文件目录
mv [-i] source_file target_file 重命名源文件为目标文件
mv [-i] source_file target_directory 移动文件到目标目录

查找文件

find
file path expression [action] 查找文件和目录

前提条件:要对被查找的目录及其所有子目录有读权限才能查找。
查找选项:通过文件属性来查找

zip

作用:兼容类unix与windows,可以压缩多个文件或目录

语法:# zip [参数] 压缩后的文件 需要压缩的文件(可以是多个文件)

参数选项:-r 递归压缩(压缩文件夹)

注意:zip压缩默认压缩后的格式就是.zip,当然也可以加后缀.zip,一般都加上


unzip

作用:解压文件

语法:unzip 要解压的压缩文件 [-d] 解压目录

选项:-d,directory缩写,代表解压文件到指定目录下

tar

作用:将多个文件打包成一个文件

语法:tar 选项 打包文件名 要打包的文件或目录

常见参数:

-c,create 创建的意思

-v,显示打包文件过程

-f,指定打包的文件名,此参数是必须加的。

-u,update缩写,更新原打包文件中的文件(了解)

-t,查看打包的文件内容(了解)

解压的时候,把压缩命令中的 c 换成 x 即可

#tar -zxvf abc.tar.gz

wget

文件下载

curl
url查看,如需要下载需要指定 -o

chmod
修改文件目录的访问权限,修改权限的前提条件是在修改权限时,要注意自己是文件。

chown

更改某个文件或目录的属主和属组,可用于授权;
例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。

文件目录权限

Linux系统中的每个文件和目录都有访问许可权限,用他来确定谁能通过何种方式对文件和目录进行访问和操作。

权限的分类:

r 读权限:可以打开文件、目录读取查看;
w 写权限:对文件、目录可以编写更改;
x 执行权限:对文件可执行(可执行文件)、对目录可查找该目录下的内容;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。