Linux文件管理

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺。

1.Linux介绍、目录结构、文件基本属性、Shell

2.Linux常用命令

3.Linux文件管理

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

本章内容有:

Linux目录结构

Linux查看及检索命令

Linux压缩及解压缩文件

vim文本编辑器知识


提示:以下是本篇文章正文内容,下面案例可供参考

1.Linux目录结构

  • 用CentOS7举例:登录系统后,在当前命令窗口下输入命令ls :
  • 树状目录结构:
  • /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

临时文件:

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
  • /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
  • /tmp:这个目录是用来存放一些临时文件的。

账户:

  • /root:系统管理员的用户主目录。
  • /home:用户的主目录,以用户的账号命名的。
  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • **/usr/bin:**系统用户使用的应用程序与指令。
  • **/usr/sbin:**超级用户使用的比较高级的管理程序和系统守护程序。
  • **/usr/src:**内核源代码默认的放置目录。

运行过程中要用:

  • /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
  • /proc:管理**内存空间!**虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:

  • /opt:默认是空的,我们安装额外软件可以放在这个里面。
  • /srv:存放服务启动后需要提取的数据**(不用服务器就是空)**

补充:

  • Linux的这种目录结构设计为系统的稳定性和可管理性提供了良好的基础。不同的目录服务于不同的目的,有助于系统的维护和故障排除。
  • 在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
  • /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
  • /bin, /sbin, /usr/bin, /usr/sbin : 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

值得提出的是 /bin/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

2.查看及检索文件命令

  • **cat **(用于查看文件内容或者创建、合并文件)
    • 基本用法:
bash 复制代码
cat [选项] [文件]...
  • 选项 :

    • -A--show-all:显示所有字符,包括不可见的字符(如换行符、制表符等)。
    • -b--number-nonblank:对非空输出行编号,空白行不编号。
    • -e:在每行结束处显示 $
    • -E--show-ends:在每行结束处显示 $,即使该行是空的。
    • -n--number:对所有输出的行编号,包括空白行。
    • -s--squeeze-blank:当遇到连续多个空白行时,只输出一个。 -
    • -T--show-tabs:将制表符显示为 ^I
    • -u--show-nonprinting:显示不可打印的字符。
    • -v--show-nonprinting:与 -u 相似,但使用 ^M- 表示字符。
  • 示例:

    • **cat filename **查看文件内容
    • cat file1 file2 将两个文件合并输出
    • cat file1 file2 > outputfile 将输出重定向到另一个文件
    • cat -n file 查看文件内容并显示行号
    • cat -A file 显示不可见字符
    • cat > filename 从标准输入创建文件
    • cat file1 file2 | cat -E > outputfile 合并多个文件到一个文件,并在输出行后添加 $
  • **more **(一个文本文件的分页查看器,它允许用户以一页一页的形式逐页浏览文件内容)

    • 基本用法:
bash 复制代码
more [选项] [文件]...
  • 选项:

    • -d--debug:打印调试信息。
    • -f--file=文件:从指定文件中读取输入。
    • -l--literal:按字面意思显示特殊字符,而不进行转义。
    • -p--prompt=提示符:使用指定的提示符而不是默认的 "more> "。
    • -s--ignore-case:忽略大小写的搜索。
    • -u--scroll=行数:当文件内容超过指定行数时,自动滚动到下一页。
    • -w--width=行数:将屏幕分割成指定行数的宽度。
  • 示例

    • more file: 逐页查看文件内容:
    • **more --prompt='==> ' file **使用特定的提示符
    • **cat file | more ** 从标准输入读取内容
    • more -u 10 file 自动滚动,当内容超过10行
  • 注意 :

    • more 命令在文件结束时自动退出。
    • 如果文件内容超过屏幕的可见行数,可以使用 空格键 向下滚动,使用 b 键向上滚动。
    • more 命令不支持在文件中直接进行编辑操作。
  • ** less **(一个文本文件的分页查看器,它提供了比 more 命令更丰富的导航和搜索功能,允许用户以一页一页的形式逐页浏览文件内容,或者向下滚动查看文件)

    • 基本用法:
bash 复制代码
less [选项] [文件]...
  • 选项:

    • -d--debug:打印调试信息。
    • -f--quit-if-one-screen:如果文件内容不超过一屏,则退出。
    • -i--ignore-case:忽略大小写的搜索。
    • -N--line-numbers:显示行号。
    • -o--output=文件:将输出发送到指定文件而不是标准输出。
    • -s--squeeze-repeats:合并连续重复的行。
    • -S--ignore-space:将长的行分割成多行显示,而不是截断。
    • -t--initial-title=标题:设置初始窗口标题。
    • -v--version:显示版本信息。
  • 快捷键:

    • 空格键:向下滚动一页。
    • b:向上滚动一页。
    • f:向前移动一页。
    • d/:向下搜索特定字符串。
    • n:搜索下一个匹配项。
    • N:搜索上一个匹配项。
    • qx:退出 less
    • G:跳转到文件末尾。
    • g:跳转到文件开头。
  • 示例:

    • ** less file **逐页查看内容
    • ** less -N file** 显示行号
    • cat file | less 从标准输入读取内容
    • less -t "My File" file 使用特定的标题
  • 补充:

    • less 命令在文件结束时不会自动退出,用户需要按 q 键或 x 键退出。
    • less 命令支持在文件中直接进行编辑操作,如使用 :w 命令保存文件。
    • less 命令比 more 命令提供更多的导航和搜索功能,更适合处理大型文件。
  • ** head **(用于显示文件的开头部分)

    • 基本用法:
bash 复制代码
head [选项] [文件]...
  • 选项:

    • -c--bytes=字节数:显示前 n 个字节。
    • -n--lines=行数:显示前 n 行。
    • -q--quiet:不显示文件名。
    • -v--verbose:显示文件名和字节数。
    • -z--zero:将空字节视为字符 NUL
  • 示例:

    • head -n 10 file 显示文件的前 10 行
    • head -c 500 file 显示文件的前 500 个字节
    • ** head -q file ** 不显示文件名,只显示内容
  • 补充:

    • 如果没有任何文件名作为参数,head 命令将从标准输入读取,并显示该输入的前 n 行或 n 个字节。
    • head 命令默认显示前 10 行。
    • 使用 -n 选项时,如果不指定行数,head 将显示所有行。
  • ** tail(用于显示文件的最后部分。与 head 命令相反,tail 命令可以用来查看文件的最新内容,尤其是在 处理日志文件 时非常有用)**

    • 基本用法:
bash 复制代码
tail [选项] [文件]...
  • 选项:

    • **-c**--bytes=字节数:显示最后 n 个字节。
    • **-f**--follow:实时跟踪文件的最新变化。
    • **-n**--lines=行数:显示最后 n 行。
    • **-q**--quiet:不显示文件名。
    • **-v**--verbose:显示文件名和字节数。
    • **-k**--kilobytes=KB数:显示指定KB数的最后内容。
  • 示例:

    • ** tail -n 10 file **显示文件的最后 10 行
    • ** tail -f file **实时跟踪文件的最新变化
    • ** tail -c 500 file 显示文件的最后 500 个字节 **
    • ** tail -q file **不显示文件名,只显示内容
    • ** tail -n 100 file **显示最后 100 行
  • 补充:

    • 如果没有任何文件名作为参数,tail 命令将从标准输入读取,并显示该输入的最后 n 行或 n 个字节。
    • tail 命令默认显示最后 10 行。
    • 使用 -f 选项时,tail 将实时监控文件变化,并在文件被修改后自动刷新内容。
    • 在使用 -f 选项时,可以通过 Ctrl+C 组合键来终止实时监控。
    • tail 命令是一个非常实用的工具,尤其是在监控日志文件或查看文件的最新变化时。通过它,可以快速查看文件的最新内容,而不必浏览整个文件。
  • ** grep**(一个非常强大的文本搜索工具,用于在文件中搜索与指定模式匹配的行。grep 支持正则表达式,并且可以应用于单个文件或一组文件,甚至标准输入)

    • 基本用法:
bash 复制代码
grep [选项] 模式 [文件...]
  • 选项:【正则表达式中三剑客之一】
    • **-c**:只显示匹配模式的行数,不显示实际的行。
    • **-i**:忽略大小写差异。 【默认】
    • **-v**:反转匹配,显示不匹配模式的行。
    • **-n**:显示匹配行的行号。
    • **-l**:只列出包含匹配模式的文件名。
    • **-r**-R:递归搜索目录。
    • -H:即使只搜索一个文件,也在输出前加上文件名。
    • -A 数字:显示匹配行之后的额外数字行。
    • -B 数字:显示匹配行之前的额外数字行。
    • -C 数字--context数字:显示匹配行以及前后各数字行。
    • -e :指定一个模式。如果有多个模式,可以多次使用 -e
    • **-f**:从文件中读取模式列表。
    • **-E**:启用扩展正则表达式。
    • -F:将模式视为固定字符串,而不是正则表达式。
    • -m 数字:找到数字次匹配后停止。
    • -w:匹配整个单词,模式必须与整个单词匹配,而不仅仅是单词的一部分。
  • 示例:
    • **grep "example" file.txt **搜索文件中的模式,搜索 file.txt 文件中包含 "example" 这个文本的行,并显示匹配的行
    • **grep -i "example" file.txt **忽略大小写,将搜索 file.txt 中的"example"、"Example"等所有大小写组合
    • **grep -n "example" file.txt ** 显示匹配行的行号,每个匹配的行前面都会显示其行号。
    • grep "example" file1.txt file2.txt file3.txt 在多个文件中搜索,在 file1.txtfile2.txtfile3.txt 这三个文件中搜索包含 "example" 的行,并将所有匹配的行显示出来
    • **grep -r "example" /path/to/directory **递归搜索目录中的文件,显示目录中所有匹配 "example" 的文件和行
    • **grep -E "exa[a-z]" file.txt **使用正则表达式搜索,模式 "exa[a-z]" 会匹配以 "exa" 开头,后跟一个或多个小写字母的文本。例如,这会匹配 "example"、"exact"、"examine" 等
  • 查找条件设置:
    • 要查找的字符串以双引号括起来
      • "^..." 表示以...开头
      • "...$" 表示以...结尾
      • "^$" 表示空行
    • 举例:
      • **grep -ie "^listen" -e "80$" /etc/httpd/conf/httpd.conf **

/etc/httpd/conf/httpd.conf 文件中,grep 会搜索所有以 "listen" 开头的行,以及所有以 "80" 结尾的行,并且在搜索时忽略字母的大小写。匹配的行会被 grep 输出到标准输出(通常是终端屏幕)。

  • 补充:
    • grep 命令默认不区分大小写,如果需要区分大小写,需要明确指定 -i 选项。
    • 正则表达式在 grep 中的应用非常广泛,可以根据需要灵活地匹配文本模式。
    • grep 命令是文本处理中的一个重要工具,可以通过组合使用不同的选项和正则表达式来执行复杂的文本搜索任务。
    • grep 命令在文本处理和日志分析中非常常用,它能够帮助用户快速地找到文件中的特定内容。

3.压缩及解压缩文件

  • **tar命令 **
    • 作用:
      • 通常用于_打包文件_,但它也可以与压缩工具结合使用来压缩文件。
      • tar命令本身并不压缩数据,但可以通过添加相应的选项与gzip、bzip2或xz等压缩工具配合使用。
    • 压缩语法:
abap 复制代码
tar [-cvzf] 文件名.tar.gz 需要压缩的文件或目录
tar [-cvjf] 文件名.tar.bz2 需要压缩的文件或目录
tar [-cvJf] 文件名.tar.xz 需要压缩的文件或目录
        - `-c` 表示创建压缩文件
        - `-v` 表示在压缩时显示详细信息 
        - `-z` 表示使用gzip进行压缩  
        - `-j` 表示使用bzip2进行压缩  
        - `-J` 表示使用xz进行压缩 
        - `-f` 表示指定压缩后的文件名(归档)
     -   **tar -cvzf backup.tar.gz ./test/**	将当前目录下的`test`文件夹压缩为`backup.tar.gz`

  - **解压缩语法:**

tar [-xzvf] 文件名.tar.gz
tar [-xjf] 文件名.tar.bz2
tar [-xJf] 文件名.tar.xz

        - `-x` 表示解压缩 
        - `-z`、`-j`、`-J` 分别对应gzip、bzip2、xz的解压缩选项
        - `-v` 表示在解压缩时显示详细信息 
        - `-f` 表示指定压缩文件名 
     -   **tar -xzvf backup.tar.gz	**解压缩`backup.tar.gz`文件
  • gzi命令

    • 作用: gzip是一个单独的压缩工具,通常用于压缩单个文件。

    • 语法:

      gzip [-c] 文件名

          -  `-c` 表示将压缩结果输出到标准输出而不改变源文件
       -   **gzip test.txt		**压缩`test.txt`文件
       -   **gunzip test.txt.gz	**解压缩`test.txt.gz`文件
      
  • bzip2命令

    • **作用:**bzip2命令 bzip2与gzip类似,但通常提供更好的压缩率。

    • 语法:

      bzip2 [-c] 文件名

       - **  bzip2 test.txt	**压缩`test.txt`文件
       - **bunzip2 test.txt.bz2	**解压缩`test.txt.bz2`文件
      
        <br />  ![image.png](https://cdn.nlark.com/yuque/0/2024/png/44992446/1722408860191-2848bfcf-1b4a-446e-8dd9-7ee2d5a52175.png#averageHue=%23c6c8bd&clientId=u367ce1b1-8b09-4&from=paste&height=489&id=Vt91D&originHeight=733&originWidth=1275&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=250322&status=done&style=stroke&taskId=u76545db2-3422-456b-896a-67c7e221fde&title=&width=850)
      
  • 补充:

    • **压缩级别:**许多压缩工具都允许指定压缩级别,通常是一个从1(最快,压缩比最低)到9(最慢,压缩比最高)的数字。例如,gzip可以用-1-9的选项指定压缩级别。
    • **压缩后的文件处理:**一些工具允许在压缩后删除原始文件,例如gzip可以使用-f选项。
    • **分卷压缩:**对于非常大的文件,可以使用分卷压缩。例如,gzip可以用-c选项将输出重定向到分卷文件。

文本编辑器

概述

  - Vim 是一种改进版的 Vi 编辑器,它是一个非常强大的文本编辑器,广泛用于程序开发、脚本编写和配置文件编辑。

模式

  1. **正常模式**(Normal mode):这是 Vim 启动时的默认模式,用户可以在这个模式下使用快捷键导航文本、删除字符或行、复制和粘贴文本等。
  2. **插入模式**(Insert mode):在这个模式下,用户可以插入新文本。可以通过按 `i`(插入)、`I`(插入到行首)、`a`(追加)、`A`(追加到行尾)等键进入插入模式。
  3. **命令行模式**(Command-line mode):按下 `:` 进入命令行模式,这里可以执行各种命令,如保存(`:w`)、退出(`:q`)、搜索(`:search_pattern`)等。
  4. **可视模式**(Visual mode):按下 `v` 或 `V` 进入可视模式,可以选择文本块进行操作。

快捷键和命令

  • 移动
    • hjkl:左、下、上、右移动。
    • ^:移动到行首。
    • $:移动到行尾。
    • G:移动到文件末尾。
    • gg:移动到文件开头。
  • 编辑
    • x:删除光标下的字符。
    • dd:删除整行。
    • p:粘贴文本。
    • u:撤销操作。
    • Ctrl + r:重做撤销。
  • 搜索
    • /pattern:搜索 pattern
    • n:搜索下一个匹配项。
    • N:搜索上一个匹配项。
  • 保存和退出
    • :w:保存文件。
    • :q:退出编辑器。
    • :wq:保存并退出编辑器。
    • :q!:强制退出,不保存更改。
  • 文本内容替换:
相关推荐
别挡33 分钟前
CentOS Stream 8中安装和使用 Docker
linux·docker·centos
人工智障调包侠1 小时前
Linux 目录介绍
linux·运维·服务器
愤怒的代码2 小时前
Centos使用阿里云镜像安装docker
linux·docker·centos
hakesashou2 小时前
python怎么输入中文
java·服务器·python
Java小白白同学2 小时前
Linux 硬盘扩容操作手册
linux·运维·服务器
牛像话3 小时前
`GLIBCXX_3.4.29‘ not found,升级至libstdc++.so.6.0.29解决问题,欧拉服务器
服务器·开发语言·c++
danplus3 小时前
wordpress发送邮件的方法?怎么配置功能?
服务器·python·api接口·邮件营销·邮件群发·edm邮件营销·smtp服务器
大白菜和MySQL3 小时前
keepalived和lvs高可用集群
linux·运维·lvs
好奇的菜鸟3 小时前
如何使用Docker快速启动Nginx服务器
服务器·nginx·docker
飞酱不会电脑3 小时前
云计算第四阶段----CLOUD 01-03
java·linux·云计算·bash