Linux基础——文件管理

文件管理

在Linux中,文件管理,指的是增删改查文件、目录或者给文件目录涉及权限等等。

在windows系统,由C盘,D盘等,但是在Linux系统只有一个盘符/代表根目录。

 一、系统根目录

1.1进入根目录、预览

# 默认登录系统后,进入的当前用户的家目录
# 管理员用户root 拥有自己的家目录 :/root
# 在Linux中用~表示

[root@localhost ~]#

# 预览根目录

cd / # 通过cd 命令进入根目录
ls # 查看当前根目录 / 有哪些目录或者是文件组成

1.2 目录说明

根目录 (/)
    根目录是整个文件系统的顶级目录,所有其他目录和文件都是从这里开始的
    在Linux系统,根目录使用(/)表示

/bin
    /bin目录中包含了一些基本的可以执行的文件(命令),这些文件或者命令是系统启动或者
    运行的时候所必须得。比如包括的常用命令有:ls,cd,rm,cp等
    /bin 只是连接,源文件在:/usr/bin目录

# 预览指定源文件的位置

[root@localhost bin]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls

/sbin
    存放的是超级管理员使用的命令,默认超级管理员是root
    /sbin也是一个连接,源文件在:/usr/sbin

# 预览一下指定目录列表

[root@localhost sbin]# ls

/home
    普通用户的家目录。
    /home 普通用户是 aaa ,家目录就是/home/aaa
    /root 超级管理员家目录

# 创建一个普通用户
[root@localhost sbin]# useradd aaa

# 预览家目录
[root@localhost /]# ls home

 /usr
    /usr是系统文件目录,相当于windows中 c:/windows目录
/usr
-/local 安装软件的目录 c:/Program Files
-/bin 系统命令和普通用户名命令
-/sbin 超级管理员命令
-/lib 库文件目录、第三方提供的插件功能等 
-/lib64 库文件目录,针对64位的,第三方提供的插件功能等 

/boot
    /boot目录存放的是系统启动的时候,内核引导程序

> ls /boot
config-3.10.0-1160.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-42bafeb07e434696bb9bf5e27e21822e.img
initramfs-3.10.0-1160.el7.x86_64.img
initramfs-3.10.0-1160.el7.x86_64kdump.img
symvers-3.10.0-1160.el7.x86_64.gz
System.map-3.10.0-1160.el7.x86_64
vmlinuz-0-rescue-42bafeb07e434696bb9bf5e27e21822e
vmlinuz-3.10.0-1160.el7.x86_64 

/#etc
    /etc 是存放系统配置文件的目录,后续安装的服务以及配置文件都放在这里

网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33

DNS配置文件
/etc/resolv.conf

主机名配置文件
/etc/hostname

系统环境变量配置文件 、别名文件等
/etc/profile  /etc/bashrc .bashrc .bash_profile

内核参数的配置文件
/etc/sysctl.conf

开启启动程序命令文件
/etc/fstab


# 预览网卡配置文件
> cat /etc/sysconfig/network-scripts/ifcfg-ens33

 /proc
    当前系统硬设备的信息目录
    /proc/cpuinfo 当前cpu信息
    /proc/meminfo 当前内存信息
    /proc/loadavg 当前系统平均负载信息
    /proc/interrupts 当前系统中断信息目录
    /proc/mounts 当前系统设备挂载信息
# 预览cpu信息
[root@localhost /]# cat /proc/cpuinfo

/dev
    存放的是设备文件目录:硬盘、硬盘分区、光驱等

    /dev/null
    黑洞目录 只进不出,类似于垃圾回收站 ,永久销毁
    把没有用的设备或者没有用的数据信息,拖入这个目录

    /dev/zero
    可以原因不断地产生数据

    /dev/random
    随机生成一个设备文件,随机生成数值

/var
    存放各种日志信息的目录

    /var/log/messages
    系统日志文件目录

    /var/log/lastlog
    用户登录日志

    /var/log/dmesg
    计算机硬件信息加载情况日志

/tmp
    系统临时目录
/run 
    临时文件系统,存储系统启动以来的所有信息
    当系统重启的时候,这个目录下的文件应该被删除或者清楚

/mnt
    临时挂载的别的文件系统
    比如我们挂载了光驱,把内容放到这个目录下,这样就可以看到光盘中的内容    

/opt
    系统额外安装的软件所在的目录,默认是空的

/srv
    存放一些服务启动后,需要提取的数据

/sys
    虚拟文件系统目录,比如:虚拟配置、虚拟文件、虚拟内存

/media
    多媒体目录,存放各种媒体资源:img、mp4、mp3

二. 工作目录命令

2.1cd命令

cd 命令就是用于切换工作目录
注意:切换目录时候,用户必须具有进入目录的权限

# 切换到指定的目录
> cd /        #进入根目录
> cd /var/log #进入/var/log目录 完全的路径 任意位置都可以
> cd log      #进入当前位置下的log目录

. 记录当前目标所在的位置 
.. 记录当前目标上一级归属位置 

cd .. 可以进入上一级目录

# 返回root目录(当前用户必须是root)

> cd ~ 
> cd /root 

# 返回上一次所在的目录

> cd -

 2.2pwd命令和清屏

pwd命令没有任何选项和参数,现在当前所在的完整的路径
> pwd 


清屏
> clear

2.3ls命令

显示目录详情以及子目录信息,格式

> ls [参数]...[目录]
参数说明
-a列出目录下所有的目录和文件,包括.开头的隐藏目录
-A列出除.(当前目录)和..(上级)之外的所有的文件和目录
-b把文件名不可输出的字符,用斜杠/加字符编号显示出来,比如:英文系统中有中文/u9a0这个格式
-l列出文件的详细信息
-c输出文件或者目录列表,会按照最后修改时间进行排序
-C分成多列显示文件或者目录
-F加上文件的类型显示列表,这个文件的类型就是符号(*表示可执行的普通文件)(/表示目录)(@表示连接)(|表示管道文件)(=表示套接字)
-d将目录像文件一样显示,而不是显示内部所有的列表,通常是一个点

命令预览演示
[root@localhost usr]# ls  #查看目录的文件和文件夹

[root@localhost usr]# ls -a
.  ..  bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@localhost usr]# ls -A
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@localhost u
> ls -a -l # 列出目录下所有的目录和文件,包括.开头的隐藏目录列出文件的详细信息

> ls -al #多个参数 可以省略中间的- 直接保留第一个- 写到一起就可以

> ls /tmp/ #列出指定目录的 文件或者目录列表


> ls -l
> ll #ll是ls -l更简洁的缩写

三、目录和文件的操作

3.1 mkdir命令

创建目录的命令,格式

> mkdir [参数] 名称
参数 说明
-v创建目录的时候,显示详情
-p代表递归操作,可以创建多级目录

演示

# 切换到opt目录
> cd /opt

# 创建mp3目录(默认会转成在/opt/mp3)
> mkdir mp3

# 创建一个mp4目录 预览详情
> mkdir -v mp4

# 递归创建层级目录
> mkdir -p aaa/bbb/ccc

# 递归创建目录的是再显示详情
> mkdir -p -v course/sof
mkdir: 已创建目录 "course"
mkdir: 已创建目录 "course/sof"
> mkdir -pv course/sof #命令组合可以简写

# 递归创建批量目录
# {} 表示一个区间段的名字,内容只能是数值、小写字母和大写字母
> mkdir -pv huluwa/huluwa{1..7}
mkdir: 已创建目录 "huluwa"
mkdir: 已创建目录 "huluwa/huluwa1"
mkdir: 已创建目录 "huluwa/huluwa2"
mkdir: 已创建目录 "huluwa/huluwa3"
mkdir: 已创建目录 "huluwa/huluwa4"
mkdir: 已创建目录 "huluwa/huluwa5"
mkdir: 已创建目录 "huluwa/huluwa6"
mkdir: 已创建目录 "huluwa/huluwa7"

> mkdir -pv baoshi/{a..f}
mkdir: 已创建目录 "baoshi"
mkdir: 已创建目录 "baoshi/a"
mkdir: 已创建目录 "baoshi/b"
mkdir: 已创建目录 "baoshi/c"
mkdir: 已创建目录 "baoshi/d"
mkdir: 已创建目录 "baoshi/e"
mkdir: 已创建目录 "baoshi/f"

3.2 tree 命令(需要安装)

将目录按照树形结构显示

centos7 这个版本默认没有安装这个命令,需要在线安装再使用
安装tree
> yum -y install tree

# 预览当前目录的树形结构
[root@localhost opt]# tree 
.
├── aaa
│   └── bbb
│       └── ccc
├── baoshi
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   └── f
├── course
│   └── sof
├── huluwa
│   ├── huluwa1
│   ├── huluwa2
│   ├── huluwa3
│   ├── huluwa4
│   ├── huluwa5
│   ├── huluwa6
│   └── huluwa7
├── mp3
└── mp4


# 指定要预览哪个目录
> tree /usr

3.3 touch命令

创建文件的命令,在linux中,文件无关后缀名,就是一个普通文件,

这个文件能不能运行,需要权限设置,linux系统重文件,80%没有后缀名,20%后缀名自己定义,其实是为了方便我们看的

演示 

# 创建一个demo空文件
> touch demo 

# 创建 xx.txt 空文件 只是看上去叫xx.txt 其实是整个名字叫"xx.txt" 没有后缀名
> touch xx.txt

# 批量创建文件
> touch lanmao taoqi sanqian
> ls
demo  lanmao  sanqian  taoqi  xx.txt

# 批量创建文件,文件名是某个区段
> touch tianwang{1..4}
> ls
demo  lanmao  sanqian  taoqi  tianwang1  tianwang2  tianwang3  tianwang4  xx.txt

 3.4 mv命令

移动文件或者文件夹命令,移动的时候,允许更改名称==剪切和重命名

mv来源move

参数说明
-i若目标文件已经存在,则提示是否覆盖(需要输入y/n)
-u只在目标文件不存在,或者是源文件较新才会执行移动操作
-b若目标文件已经存在,则会为其创建备份文件
-f强制覆盖目标文件

演示 

# 将 111.txt 剪切到上级目录中叫bbb目录里面去
mv 111.txt ../b

# 将111.txt在当前目录直接重命名为222
> mv 111.txt 222


# 在当前目录将222文件剪切到上级目录中的a目录 并且重命名为333.txt
> mv 222 ../a/333.txt

# 即使不添加-i参数 也会提醒是否覆盖
> mv -i c/333.txt a/333.txt
mv:是否覆盖"a/333.txt"? n


# 只有a/333.txt 比b/222.txt新才会替换,否则什么都不做
> mv -u a/333.txt b/222.txt


# 如果目标文件已存在,则为期创建备份文件再覆盖
> mv -b  a/333.txt c/333.txt

#强制覆盖目标文件
> mv -f c/333.txt b/222.txt

3.5 cp命令

用户复制文件或者文件夹,cp来源于copy单词

> cp [参数] 源 目标
#复制的时候可以更改名称,如果只是指定了位置,没有指定名称,原来文件叫什么就是什么可以*星号,表示目录下的所有文件
参数说明
-i如果目前文件已存在,提示是否覆盖,默认的
-r递归复制目录,包括目录下的所有内容
-p复制文件时,保持源文件的所有者,权限信息和时间等信息
-d复制文件的时候,如果源文件是连接,会连同连接的指向一起复制
-a相当于-p -d -r 三个参数
-v显示详情

 演示

# 复制文件到c目录 没有指定名称 
> cp a/bb/cc/dd/ee/aaa.txt c


#复制并且重命名
> cp b/222.txt c/333.txt

# 同名文件时候是否覆盖
> cp -i b/222.txt c/333.txt
cp:是否覆盖"c/333.txt"? y

# 复制 a目录及目录到b目录中去 需要加递归-r
> cp -r a b

# 显示复制的详细信息
 cp -v  a/xx.tx b

#直接的复制 至少我们可以看到444.txt文件和333.txt时间不一样
cp 333.txt 444.txt
#复制的时候时间都和333.txt是一样的
cp -p 333.txt 555.txt


# 为333.txt创建一个快捷方式叫a.link 
# 所以a.link其实就是指向333.txt
> ln -s 333.txt a.link

#直接复制 a.link 为b.link 只是复制了连接 
>cp a.link b.link
#复制了a.link 为 c.link 同时把a指向一起复制了
> cp -d  a.link c.link


# 预览效果
> cp a.link b.link
[root@localhost c]# ll
-rw-r--r--. 1 root root 0 12月 27 14:44 333.txt
lrwxrwxrwx. 1 root root 7 12月 27 14:57 a.link -> 333.txt
-rw-r--r--. 1 root root 0 12月 27 15:00 b.link


> cp -d  a.link c.link
[root@localhost c]# ll
-rw-r--r--. 1 root root 0 12月 27 14:44 333.txt
lrwxrwxrwx. 1 root root 7 12月 27 14:57 a.link -> 333.txt
-rw-r--r--. 1 root root 0 12月 27 15:00 b.link
lrwxrwxrwx. 1 root root 7 12月 27 15:01 c.link -> 333.txt


# 将c目录里面的所有文件复制到d目录中去
> cp -r c/* d

# 路径写全的写法
> cp -r /sof14/c/* /sof14/d

3.6 rm命令

删除文件或者目录的命令,她是remove的简拼

注意:

    1.删除的文件,不能是正在被操作的文件

    2.删除的目录,默认必须是空的

参数说明
-r递归
-f强制删除【删除的时候没有提示】
-v显示详情

演示

# 直接删除目录 删除不掉
> rm a
rm: 无法删除"a": 是一个目录

# 直接删除文件 会提醒我们是否删除
> rm b/xx.tx
rm:是否删除普通文件 "b/xx.tx"?y/yes

# 也可以输入 yes 删除
> rm a/xx.tx
rm:是否删除普通文件 "a/xx.tx"?yes

# -r 递归删除,删除目录需要加-r
>  rm -r e
rm:是否删除目录 "e"?y

# 如果目录中有内容,挨个进入目录询问是否删除
# -r 递归
> rm -r a
rm:是否进入目录"a"? y
rm:是否进入目录"a/bb"? y
rm:是否进入目录"a/bb/cc"? y
rm:是否进入目录"a/bb/cc/dd"? y
rm:是否进入目录"a/bb/cc/dd/ee"? y
rm:是否删除普通空文件 "a/bb/cc/dd/ee/aaa.txt"?y
rm:是否删除目录 "a/bb/cc/dd/ee"?y
rm:是否删除目录 "a/bb/cc/dd"?y
rm:是否删除目录 "a/bb/cc"?y
rm:是否删除目录 "a/bb"?y
rm:是否删除目录 "a"?y

# 强制递归删除b目录,哪怕目录中有内容也不做任何提示
>  rm -rf b

# 强制递归删除 并且显示详细信息
> rm -rfv c
已删除"c/x.txt"
已删除"c/x1"
已删除"c/x2"
已删除"c/x3"
已删除"c/x4"
已删除"c/x5"
已删除目录:"c"

# 删除d目录中所有文件名是x开头的文件
> rm -rf d/x*

3.7 --help

目前我们学习的这些命令的参数都是常用的
如果逆向知道某个命令 具体有哪些参数 就可以使用--help

# 查看mv命令有哪些参数
> mv --help 


如果有些参数 不常用,上课过程中,没有学过,大家可以借助于这个命令
实在看不懂如何使用 ,也可以百度

3.8 cat命令

cat是Linux中使用最多的命令,它本身是一个程序,用于查看文件的内容,也可以将多个文件中的内容串联到一个文件中去

参数说明
-n显示行号,空行也会显示
-s多个空行合成一个空行
-b显示所有内容的行号
-e显示行的结尾,行的结尾会使用'$'表示

演示

# 直接查看文件的内容
> cat /etc/sysconfig/network-scripts/ifcfg-ens33

# 查看文件的时候 同时显示行号
> cat -n /etc/sysconfig/network-scripts/ifcfg-ens33

# 查看文件的时候 会把多个空行显示成一个空行
>  cat -s ens33

# 显示行的结尾符
# 可以排查出内容 一行的结尾是否有空格
> cat -e ens33

# 同时查看两个文件的内容
# 同时查看 ens33 和aaa这个文件
> cat ens33 aaa


# 我们可以使用> 或者 >>符号 来出俩cat命令读取出来的内容
# 通常是指定一个位置的文件,会将结果写入文件,
> 覆盖写入
>> 追加写入

# 查看ens33的内容并显示行号,而后将内容包括行号一起写入bbb文件
> cat -n ens33 > bbb

3.9 wget命令

wget命令Linux系统中,用于从web上下载文件的命令工具,支持:HTTP/HTTPS/FTP等协议下载,wget也提供了很多的选项,例如下载多个文件、后台下载、使用代理等。

注意:系统没有这个命令工具的,需要安装

# 安装wget命令
> yum -y install wget

# 下载资源
> wget <网址>

# 下载360安全卫士程序[这个程序是exe,Linux系统不能装]
> wget https://dl.360safe.com/360/inst.exe

# 阿里云镜像网站,免费提供很多下载的资源
http://mirrors.aliyun.com


# 从阿里云镜像网站 下砸CentOS资源
>  wget http://mirrors.aliyun.com/repo/Centos-7.repo

参数说明
-o设置保存文件的路径和别名
-P设置保存到的目录

演示

# 下载360安全卫士 ,重命名为360anquan.exe 并且保存到d目录
> wget -o d/360anquan.exe https://dl.360safe.com/360/inst.exe

# 下载360安全卫士,下载到opt目录
> wget -P /opt https://dl.360safe.com/360/inst.exe
--2023-12-27 17:56:54--  https://dl.360safe.com/360/inst.exe
正在解析主机 dl.360safe.com (dl.360safe.com)... 117.21.187.59, 117.21.187.39, 117.21.187.43, ...
正在连接 dl.360safe.com (dl.360safe.com)|117.21.187.59|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:4112616 (3.9M) [application/octet-stream]
正在保存至: “/opt/inst.exe”

100%[===================================================>] 4,112,616   8.62MB/s 用时 0.5s

2023-12-27 17:56:54 (8.62 MB/s) - 已保存 “/opt/inst.exe” [4112616/4112616])

3.10 curl指令

curl命令,是一个客户端工具,全程:Client URL

主要用来请求web服务器,它也可以用来下载文件

演示

# 请求百度首页
> curl http://www.baidu.com

# 请求 。。。地址 将请求的结果 保存到 aaa.json文件中去
> curl http://124.222.209.62/api/spu > aaa.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  198k    0  198k    0     0   797k      0 --:--:-- --:--:-- --:--:--  798k

# 使用curl下载资源 
# 下载360安全卫士 并且命名为 aaa.exe
>  curl -o aaa.exe https://dl.360safe.com/360/inst.exe
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 4016k  100 4016k    0     0  4963k      0 --:--:-- --:--:-- --:--:-- 4958k

四、其他指令

4.1 which 命令

 查看指定文件的路径和别名,可以查询命令的存放位置等等

演示

# 查看 ls 指令信息
> which ls
alias ls='ls --color=auto'  # ls是ls --color=auto的别名
        /usr/bin/ls #ls这个命令的具体位置
[root@localhost sof14]# ls --color=auto

# 使用一下全名
> ls
aaa  aaa.exe  aaa.json  bbb  ccc.txt  Centos-7.repo  d  ens33  index.html  inst.exe  inst.exe.1  y.txt  z.txt
> ls --color=auto
aaa  aaa.exe  aaa.json  bbb  ccc.txt  Centos-7.repo  d  ens33  index.html  inst.exe  inst.exe.1  y.txt  z.txt

4.2 whereis

显示指令的路径以及帮助手册等等

> whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

4.3 文件类型的区分

> ll
总用量 12556
-rw-r--r--. 1 root root     290 12月 27 17:16 aaa
drwxr-xr-x. 2 root root      53 12月 27 17:55 d


# -rw-r--r-- 第一个符号 代表的是文件的类型
-        rw-        r--       r--
类型    属主权限    数组权限   其他用户

> ll /dev

类型说明
-普通文件
d目录(文件夹)
l链接(link)
c设备文件
s套接字文件(socket)

 

  • 30
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值