文件管理

113 阅读9分钟

[TOC]

文件结构

在这里插入图片描述

目录作用
/bin/存放系统命令,普通用户和root用户都可以执行。放在/bin下的命令在单用户模式下也可以执行
/boot/系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/设备文件保存位置
/etc/配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用的服务配置文件等
/home/普通用户的主目录,也称为家目录。在创建用户时,每个用户要有一个默认登陆和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在/home/下建立一个和用户名相同的目录
/lib/系统调用的函数库保存位置
/media/挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/挂载目录。早期Linux只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如U盘、系统硬盘和其他操作系统的分区
/misc/挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘
/opt/第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装在这个目录中。其次/usr/local/目录也可以用来安装软件
/root/root的主目录。普通用户主目录在/home/下,root主目录直接挂载在"/"下
/sbin/保存与系统环境设置相关的命令,只有root可以使用这些命令进行系统环境设置,但也有命令可以允许普通用户查看
/srv/服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入

文件管理

1:当前绝对路径

pwd

2:文件说明

ls -l
-rwxrw-r--. 1 root root 376 6月 26 17:37 hello.txt.gz


# 10个字符

# - rwx rw- r--

# 第一个字符代表文件类型:- l d c b

#     -  普通文件

#     d  目录,相当于windows的文件夹

#     c  硬件,字符设备文件,鼠标,键盘

#     b  块设备, 如硬盘

#     l  快捷方式 

#     p  管道文件

#     s    

# 字符    含义    代表数字

# r      可读       4

# w      可写       2

# x      可执行     1

3:创建 (mkdir、touch、vim)

# 目录
mkdir /home/dog     # 在/home目录下创建/dog
mkdir -p /home/dog  # 在/home目录下创建/dog
-p  # 创建多级目录


# 文件
touch /home/a.txt   # 在/home下创建文件 a.txt
vim /home/a.txt     # 在/home下创建文件 a.txt
vi /home/a.txt      # 在/home下创建文件 a.txt

# 利用覆盖,追加创建文件
cal >  /home/a.txt  # 将当前月份日历覆盖/home/a.txt文件内容
cal >> /home/a.txt  # 将当前月份日历追加到/home/a.txt

4:移动 (剪切 mv)

# 将/home目录下的a.txt剪切移动到/home/b下
mv /home/a.txt /home/b 

# 将/home目录下的a.txt剪切移动到/home/b下,并重命名为c.txt
mv /home/a.txt /home/b/c.txt 

# 将/home下的/a目录剪切到/home/b下

# 如果没有/home/b目录就将/a重命名为/b剪切移动到/home下
mv /home/a /home/b 

5:复制 (cp)

/home下的a.txt复制到/home/b

cp /home/a.txt /home/b/  

/home下的/a及子文件复制到/home/b

cp -r /home/a /home/b  

6:重命名 (mv)

# 将目录下的a.txt重命名为b.txt
mv a.txt b.txt 

# 将/home目录下的a.txt剪切移动到/home/b下,并重命名为c.txt
mv /home/a.txt /home/b/c.txt 

7:快捷方式 (ln)

# ln [参数][源文件或目录][目标文件或目录]

# 创建/etc/aaa的快捷方式放到/home下,快捷方式名称为xxx
ln -s /etc/aaa /home/xxx  


# 参数
--backup[=CONTROL] 备份已存在的目标文件
-b 类似 --backup ,但不接受参数
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

8:删除 (rm)

rmdir /home/dog    # 删除/dog空目录,非空不可删
rm -rf  /home/dog  # 删除/dog及子级所有的文件,慎重使用!!!

-r   # 递归删除
-f   # 强制删除不提醒
-rf  # 递归强制删除不提醒

9:查看文件

9.1:cat 指令

只能查看,不能修改

cat /home/a.txt     # 查看/home下的a.txt文件
cat -n /home/a.txt  # 查看/home下的a.txt文件,并且显示行号

-n   # 显示行号

9.2:more 指令

more指令是一个基于vi编辑器的文本过滤器,它可以全屏的方式按页显示文本文件内容,more指令中内置了若干快捷键,详见说明

# more [要查看的文件]
more /home/a.txt 
操作说明
space(空格键)向下翻页
Enter向下翻 一行
q立刻离开,不在显示该文件
Ctrl + F向下滚动一屏
Ctrl + B向上滚动一屏
=输出当前行的行号
:f输出文件名和当前行的行号

9.3:less指令

功能与more指令类似,根据显示需要加载相关内容,对于大型文件具有较高的效率

# less [参数] 要查看的文件
less /home/a.txt 

-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

操作说明
space(空格键)向下翻页
ctrl + D向下滚动半屏
ctrl + U向上滚动半屏
Ctrl + F向下滚动一屏
Ctrl + B向上滚动一屏
/字符串向下搜索『字符串』n:向下查找,N:向上查找
?字符串向下搜索『字符串』n:向下查找,N:向上查找
q离开less

9.4:echo指令

# echo输出内容到控制台

# echo [选项] [输出内容]

# 输入出环境变量
echo $PATH 

9.5:head 指令

# 显示文件的开头部分内容

# 默认情况下head指令显示文件的前10行内容

# 语法:

# head 文件
head /home/a.txt

# 文件头5行内容,5可以是任意数字
head -n 5 /home/a.txt

9.6:tail 指令

# 输出文件中尾部的内容

# 默认情况下tail指令显示文件的前后10行内容

# 语法:

# tail 文件
tail /home/a.txt 

# 查看文件尾5行内容,5可以是任意数字
tail -n 5 /home/a.txt

# 实时追踪文档的所有更新
tail -f /home/a.txt

10:压缩解压文件

10.1:tar 解压指令

将/aaa目录或文件以bbb.tar.gz压缩到/home下

# 将/aaa目录或文件以bbb.tar.gz压缩到/home下
tar -zcvf /home/bbb.tar.gz /aaa         

# 将/home下的bbb.tar.gz解压到/home/aaa下
tar -zxvf /home/bbb.tar.gz -C /home/aaa 

-z # 解压.tar文件
-c # 产生.tar打包文件
-x # 解压.tar文件
-v # 显示详细信息
-f # 指定压缩名称

10.2:gzip和gunzip指令

# 压缩,只能将文件压缩*.gz
gizp 文件

# 解压缩文件命令
gunzip 文件.gz

10.3:zip/unzip指令

# 压缩文件和目录
zip [选项] XXX.zip 将要压缩的内容

# 解压缩文件
nzip [选项] XXX.zip(功能描述:解压缩文件)

zip常用选项
-r # 递归
unzip的常用
-d # 指定解压后的文件存放目录

11:指令 和 >> 指令

输出重定向 和 >>追加
基本语法:
ls -l > 文件  # 列表的内容写入文件a.txt中(覆盖)
ls -al >> 文件  # 列表的内容追加到文件aa.txt的末尾
cat 文件1 > 文件2 # 将文件1的内容覆盖到文件2中
echo "内容" >> 文件 # 将echo的内容追加到文件中

12:文件权限

  • 文件所有者

    谁创建了该文件,谁就自然成为了该文件的所有者

12.1:查看文件的所有者

ls -al

image.png

12.2:修改文件权限 (chmod)

chmod 指令可以修改文件目录的权限

用户类型说明
u文件所有者
g文件所在组
o其他人
a所有人
字符含义数字代表
r可读4
w可写2
x可执行1
方式1 (chomd u=rwx,g=rw,o=x)

文件权限修改为所有者拥有rwx权限,组成员拥有rw权限,其他人只有x权限

# chomd u=rwx,g=rw,o=x 文件/目录
chomd u=rwx,g=rw,o=x /home/xxx
chomd u=rwx,g=rw,o=x /home/xxx/a.txt
方式2 (chomd u+rwx,g+rw,o-w)

文件权限修改为所有者添加rwx权限,组成员添加rw权限,其他人减去w权限

# 文件/目录 所有者加 rwx 权限,组成员加 rw 权限,其他人减去 w 权限
chomd u+rwx,g+rw,o-w 文件/目录

# 给所有人去掉 x(执行) 的权限
chomd a-x 文件/目录
方式3 (chomd 777)

文件权限修改为所有者拥有 rwx 权限,组成员拥有 rw 权限,其他人只有 r 权限

chomd 764 文件/目录

# 等价于
chomd u=rwx,g=rw,o=r 文件/目录

聚合(方式1/方式2/方式3_

# 方式1:

# chomd u=rwx,g=rw,o=x 文件/目录
chomd u=rwx,g=rw,o=x /home/xxx
chomd u=rwx,g=rw,o=x /home/xxx/a.txt


# 方式2:

# 文件/目录u加rwx权限,g加rw权限,o减w权限
chomd u+rwx,g+rw,o-w 文件/目录

# 给所有人去掉执行的权限
chomd a-x 文件/目录


# 方式3:
chomd 764 文件/目录

# 等价于
chomd u=rwx,g=rw,o=r 文件/目录


# u : 文件所有者

# g : 文件所在组

# o : 其他人

# a : 所有人


# 字符    含义    代表数字

# r      可读       4

# w      可写       2

# x      可执行     1

12.3:修改文件的所有者 (chown)

# chown 用户名 文件
chown hzg /home/a.txt

12.4:修改文件所在组 (chgrp)

# chgrp 组名 文件名
chgrp hzg /home/a.txt