「RHCSA 红帽系统管理」2、文件管理 2023/08/26 23:33 • 学习笔记 • 阅读 1565 目录 ReaHat Linux 重要目录使用命令行进行文件管理常用文件管理命令创建、查看和编辑文本文件制作文件链接使用 Shell 扩展匹配文件名总结 ReaHat Linux 重要目录 /usr安装软件、共享的库,包括文件和只读程序数据。重要的子目录有:/usr/bin 用户命令,/usr/sbin 系统管理命令,/usr/local 本地自定义软件。/etc特定于此系统的配置文件。/run自上一次系统启动以来,启动进程运行时的数据,包括进程 ID 文件和锁定文件等。此目录中的内容在重启时重新创建。此目录合并了早期版本 RHEL 中的 /var/run 和 /var/lock。/home主目录是普通用户存储其个人数据和配置文件的位置。/root管理超级用户 root 的主目录。/tmp供临时文件使用的全局可写空间。10 天内未访问、未更改或未修改的文件将自动从该目录中删除。还有一个临时目录 /var/tmp,该目录中的文件如果在 30 天内未曾访问、更改或修改过,将被自动删除。/boot系统开始启动过程所需的文件。/dev包含特殊的设备文件,供系统用于访问硬件。 使用命令行进行文件管理 touch 命令用于更新文件的时间戳为当前日期和时间,另外还可用于创建空文件。 [root@redhat ~]# touch 1.txt ls 命令用于显示文件属性。常用的选项有 -l 长列表格式,-a 包含隐藏文件的所有文件,-R 递归显示包含所有子目录的内容。 # 长列表格式显示文件(另一种命令缩写方法为 ll) [root@redhat ~]# ls -l [root@redhat ~]# ll 总用量 4 -rw-r--r--. 1 root root 0 8月 26 22:03 1.txt -rw-------. 1 root root 1075 8月 25 20:27 anaconda-ks.cfg # 长列表格式显示文件,并包含隐藏文件。开头为句点(.)的文件名表示隐藏文件。 [root@redhat ~]# ls -la 总用量 28 dr-xr-x---. 3 root root 160 8月 26 22:03 . dr-xr-xr-x. 17 root root 224 8月 25 20:22 .. -rw-r--r--. 1 root root 0 8月 26 22:03 1.txt -rw-------. 1 root root 1075 8月 25 20:27 anaconda-ks.cfg -rw-------. 1 root root 952 8月 26 17:48 .bash_history -rw-r--r--. 1 root root 18 3月 15 2021 .bash_logout -rw-r--r--. 1 root root 176 3月 15 2021 .bash_profile -rw-r--r--. 1 root root 176 3月 15 2021 .bashrc -rw-r--r--. 1 root root 100 3月 15 2021 .cshrc drwx------. 2 root root 25 8月 26 17:49 .ssh -rw-r--r--. 1 root root 129 3月 15 2021 .tcshrc cd 命令可更改用户的所在目录。通过列表顶部的两个特殊目录,当前目录(.)以及父目录(..),可以上移一个目录级别。 [root@redhat ~]# cd /usr/bin/ # 移动到上一级别的父目录 [root@redhat bin]# cd .. # 移动到当前用户的家目录 [root@redhat bin]# cd ~ 常用文件管理命令 创建目录mkdir directory复制文件cp file new-file复制目录及其内容cp -r directory new-directory移动或重命名文件或目录mv file new-file删除文件rm file删除含有文件的目录rm -r directory删除空目录rmdir directory 使用 mkdir 命令可以创建一个或多个子目录。 [root@redhat ~]# mkdir a [root@redhat ~]# mkdir a/b # 使用 -p 选项可以递归创建目录。 [root@redhat ~]# mkdir -p a/b/c cp 命令可用于复制文件,mv 命令可用于移动文件。 [root@redhat ~]# cp 1.txt 2.txt [root@redhat ~]# mv 2.txt ./a/b/2.txt # 使用 cp 命令的 -r 选项可以复制目录及其内容 [root@redhat ~]# cp -r ./a/b ./ 使用 rm 命令可以删除目录和文件。 [root@redhat ~]# rm 1.txt rm:是否删除普通空文件 '1.txt'?y [root@redhat ~]# # 使用 -r 选项将递归删除整个目录,使用 -f 选项将不再进行系统提示,强制删除整个目录。 [root@redhat ~]# rm -rf a 创建、查看和编辑文本文件 1、将输出重定向到文件或程序。 > file重定向标准输出结果 (stdout) 以覆盖文件。>> file重定向标准输出结果 (stdout) 以附加到文件。2> file重定向错误信息 (stderr) 以覆盖文件。2> /dev/null将错误信息 (stderr) 重定向到 /dev/ null,从而将它丢弃。file 2>&1 或 &> file重定向标准输出结果 (stdout) 和错误信息 (stderr) 以覆盖同一个文件。file 2>&1 或者 &>> file重定向标准输出结果 (stdout) 和错误信息 (stderr) 以追加到同一文件。 # 保存时间戳 [root@redhat ~]# date > 1.txt [root@redhat ~]# cat 1.txt 2023年 08月 26日 星期六 23:15:36 CST # 将一个文件的最后 3 行复制到另外一个文件 [root@redhat ~]# tail -n3 /etc/passwd > 2.txt [root@redhat ~]# cat 2.txt sssd:x:994:990:User for sssd:/:/sbin/nologin chrony:x:993:989::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin # 将两个文件合并为一个 [root@redhat ~]# cat 1.txt 2.txt > 3.txt # 将错误信息保存到单独的文件 [root@redhat ~]# cd sss 2> 4.txt [root@redhat ~]# cat 4.txt -bash: cd: sss: No such file or directory 2、构建管道。通过管道可以将第一个命令的标准输出,连接到下一个命令的标准输入。管道用竖线字符 | 分隔。 # 将 ls 命令的输出使用 less 在终端上分屏显示输出。 [root@redhat ~]# ll /usr/bin/ | less # 使用 tee 命令将 ls 命令的输出重定向到文件,并使用 less 在终端上分屏显示输出。 [root@redhat ~]# ll /usr/bin/ | tee ~/saved | less 3、Vim 编辑器的四种模式。 正常模式 (Normal-mode)启动 Vim 后的默认模式,无论位于任意模式下,按下「ESC」键都会进入正常模式。插入模式 (Insert-mode)在正常模式中按下 i、l、a、A、o、O 等键将进入插入模式,在插入模式中可以输入相应的字符。命令模式 (Command-mode)在正常模式中按下 :(英文冒号)键将进入命令模式,在命令模式中可以执行一部分 vim 指令,包含环境设置、文件操作、调用功能等。常用的命令有 :q(退出)、 :w(保存)、:wq(保存并退出)。可视模式 (Visual-mode)在正常模式中按下 v,V,Ctrl + V 将进入可视模式,在该模式下可以通过光标选择文本,类似通过鼠标进行操作。 4、Vim 编辑器的常用操作。 普通模式 G跳转到最后一行10G跳转到第 10 行dd剪切或删除当前行10dd从当前行开始,向后删除 10 行yy复制当前行yy10从当前行开始,向后复制 10 行p粘贴j向下一行移动k向上一行移动h向左一个字符移动l向右一个字符移动 插入模式 i在当前位置插入l在行首插入o向下新建一行O向上新建一行a从右向后一个字符插入A在行末插入 命令模式 :wq保存退出/linux查找关键字 linux:s/旧内容/新内容替换光标所在行的第一个匹配项:s/旧内容/新内容/g替换光标所在行的所有匹配项:%s/旧内容/新内容/g全局替换所有匹配项 制作文件链接 1、硬链接。 使用 ln 命令可以创建一个指向现有文件的新硬链接,新的硬链接与原始文件名的作用完全相同。 硬链接的文件具有相同的链接数、访问权限、用户和组所有权、时间戳,以及文件内容。如果更改一个硬链接其中的信息,指向同一文件的其他硬链接也会更新信息。 即使原始文件被删除,只要存在至少一个硬链接,该文件的内容就依然可用。只有删除了最后一个硬链接,该数据才从存储中删除。 [root@redhat ~]# ln 1.txt /tmp/1.txt 如果需要确定两个文件是否为彼此的硬链接,可以使用 -i 选项列出文件的索引节点编号。如果文件位于同一文件系统,并且索引节点编号相同,那么这两个文件为同一数据的硬链接。 [root@redhat ~]# ll -i 1.txt /tmp/1.txt 33575689 -rw-r--r--. 2 root root 27 8月 26 22:58 1.txt 33575689 -rw-r--r--. 2 root root 27 8月 26 22:58 /tmp/1.txt 硬链接存在一些局限性,只能用于常规文件,无法使用 ln 来创建指向目录或特殊文件的硬链接。其次,只有两个文件位于同一个文件系统上时,才能使用硬链接。 # 使用 df 命令可以列出不同文件系统上的目录。 [root@redhat ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 devtmpfs 897732 0 897732 0% /dev tmpfs 916616 0 916616 0% /dev/shm tmpfs 916616 8848 907768 1% /run tmpfs 916616 0 916616 0% /sys/fs/cgroup /dev/mapper/rl_redhat-root 17811456 2070184 15741272 12% / /dev/nvme0n1p1 1038336 198364 839972 20% /boot tmpfs 183320 0 183320 0% /run/user/0 2、软链接。 使用 ln -s 命令可以创建软链接,软链接是指向现有文件或目录的特殊类型的文件,其作用类似于 Windows 系统的快捷方式。 相较于硬链接,软链接可以链接位于不同文件系统上的两个文件,并且可以指向目录或特殊目录,不局限于常规文件。 [root@redhat ~]# ln -s 2.txt /tmp/2.txt 当原始文件被删除后,软链接依然会指向该文件,但目标已消失。指向已缺失文件软链接被称为「悬挂的软链接」。 「悬挂的软链接」有个缺点,如果创建了一个与已删除文件同名的新文件,此时软链接将不再「悬挂」,而是指向到新创建的文件。而硬链接则不会出现这种现象,创建一个同名的新文件,新创建的文件不会链接到旧文件。 使用 Shell 扩展匹配文件名 1、元字符和匹配项表。 *由零个或更多字符组成的任何字符串。?任何一个字符。[abc…]括起的类(位于两个方括号之间)中的任何一个字符。[!abc…]不在括起的类中的任何一个字符。[^abc…]以括起的类中的任何一个字符开头。[[:alpha:]]任何字母字符。[[:lower:]]任何小写字符。[[:upper:]]任何大写字符。[[:alnum:]]任何字母字符或数字。[[:punct:]]除空格和字母数字以外的任何可打印字符。[[:digit:]]从 0 到 9 的任何单个数字。[[:space:]]任何一个空白字符。这可能包括制表符、换行符、回车符、换页符或空格。 # 使用简单模式匹配 [root@redhat ~]# ll /usr/bin/a* [root@redhat ~]# ll /usr/bin/*ac* [root@redhat ~]# ll /usr/bin/a? 2、大括号拓展。 大括号扩展用于生成任意字符串,大括号内包含顺序表达式,支持大括号的相互嵌套。 [root@redhat ~]# echo {1,2}.txt 1.txt 2.txt [root@redhat ~]# echo {a..c}.txt a.txt b.txt c.txt 大括号的实际用途是快速创建多个文件或目录。 [root@redhat ~]# mkdir rhce-{a..e} [root@redhat ~]# ll 总用量 4 -rw-------. 1 root root 1075 8月 25 20:27 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 8月 26 23:34 rhce-a drwxr-xr-x. 2 root root 6 8月 26 23:34 rhce-b drwxr-xr-x. 2 root root 6 8月 26 23:34 rhce-c drwxr-xr-x. 2 root root 6 8月 26 23:34 rhce-d drwxr-xr-x. 2 root root 6 8月 26 23:34 rhce-e 3、变量扩展。 变量的作用类似于在内存中存储命名容器,通过 shell 脚本可以轻松访问和修改存储的数据。 # 为变量赋值 [root@redhat ~]# MYNUM=996 [root@redhat ~]# echo $MYNUM 996 # 为避免因其他 shell 扩展而引起错误,建议将变量名称放在大括号里。 [root@redhat ~]# echo ${MYNUM} 总结 Linux 系统中的文件被组织到一个颠倒的目录树中,称为文件系统层次结构。 有五个关键命令可用于管理文件,分别为 mkdir、rmdir、cp、mv 和 rm。 硬链接和软链接是让多个文件名指向同一数据的不同方式。 Bash Shell 提供了模式匹配、扩展和替换功能,可帮助高效地运行命令。 运行程序或进程涉及三个标准通信通道:标准输入、标准输出和标准错误。使用 I/O 重定向从文件中读取标准输入,或者将输出或错误从进程写入文件。 管道可用干将标准输出从一个进程连接到另一个进程的标准输入,并可用干格式化输出或构建复杂命令。 本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。「RHCSA 红帽系统管理」2、文件管理https://blog.kobin.cn/notes/2819.html 赞 (0) 0 0 生成海报 发表回复 您的邮箱地址不会被公开。 必填项已用 * 标注*昵称: *邮箱: 网址: 记住昵称、邮箱和网址,下次评论免输入 提交 CAPTCHAis initialing...