【Linux】目录和文件管理(一)


一、Linux目录结构

  在 Linux 系统中,所有内容都是以文件的形式保存和管理的,即「一切皆文件」。普通文件是文件,目录(Windows 下称为文件夹)是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。

  linux只有一个根目录,而且文件和目录被组织成一个单根倒置树结构,此结构最上层是根目录,用“/”表示。

在这里插入图片描述

  因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件,常见的子目录如下图

一级目录功能(作用)
/root管理员的宿主(家)目录
/home/xxx除root用户之外的普通用户的家目录
/bin存放二进制文件,所有用户可执行的命令。实际是个软链接,链接到/usr/bin
/sbin存放二进制文件,只有管理员可执行的管理命令。软链接到/usr/sbin
/boot系统内核、启动文件目录
/dev存放设备文件(光驱、硬盘等)
/etc存放系统程序和大部分应用程序(rpm、yum安装)的配置文件
/var存放可以变化的文件,包括各种日志文件
/lib存放系统程序的动态链接共享文件(类似于Windows里的DLL文件),软链接到/usr/lib
/usr存放系统用户工具和程序文件
/media可拆卸的媒介挂载点,例如U盘、光驱等
/mnt用于临时挂载储存设备的目录
/opt第三方应用程序安装存放的目录
/tmp存放系统的临时文件,/tmp目录下的临时文件会被系统定期删除或者关机时自动删除
/proc包含虚拟的文件,它们实际上并不存在于磁盘上,也不占用任何空间(虽然用ls -l 可以显示它们的大小),当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。

二、查看及检索文件

cat命令——查看文件内容

  cat命令(concatenate的缩写)是Linux操作系统中使用最广泛的命令行实用工具之一。它是一个标准的Linux实用程序,用于查看小文件的内容,而不需要在任何文本编辑器中打开它。cat命令的另一个主要用法是将多个文件串联到一个文件中。

1.基本语法

cat [选项] 文件名...

2.基本参数

参数含义
-n显示行号(空行也编号)
-s合并多行空行为一行
-b显示行号(空行不编号)
-e每行结尾处显示$
--help显示帮助信息
--version显示版本信息

3.常用格式

查看指定文件的行号

[root@host ~]# cat -n /etc/passwd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05X0uB1q-1680085213932)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329122357978.png)]

查看指定文件中所有行数,包含空行,但空行不显示行号

[root@host ~]# cat -b 1.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qrMUHvd-1680085213932)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329122819078.png)]

查看指定文件的行号,并且压缩多个空行为一个空行,空行也计算在行号内

[root@host ~]# cat -ns 1.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwA30TSM-1680085213933)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329123032311.png)]

查看多个指定文件的内容

[root@host ~]# cat 1.txt 2.txt 3.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q30AEvO3-1680085213933)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329134252472.png)]

将两个文件输出追加到另一个文件

文件的顺序决定决定内容追加的顺序

[root@host ~]# cat 2.txt 3.txt > abc.txt
[root@host ~]# cat abc.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGQKM1ST-1680085213934)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329134615068.png)]

more命令——查看文件内容

  more 命令可以分页显示文本文件的内容,使用者可以逐页阅读文件中内容。

1.基本语法

more [选项] 文件名

2.交互指令

  对于more 命令比较简单,一般不用什么选项。more 命令的执行会打开一个交互界面,因此读者有必要了解一些交互命令,常用的交互命令如下图。

交互指令功能
q 或 Q退出 more。
b向上移动一页。
回车键向下移动一行。
空格键向下移动一页。

注意:下翻到最后一页会自动退出。more命令与管道符搭配使用,不能向上翻页。

3.使用方法

使用交互命令查看文本信息

用分页的方式显示 anaconda-ks.cfg 文件的内容。

[root@host ~]# more anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
...
--More--(36%)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lzDfvSty-1680085213935)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329135311367.png)]

less命令——查看文件内容

  less 命令的作用和 more 十分类似,都用来浏览文本文件中的内容,不同之处在于,使用 more 命令浏览文件内容时,只能不断向后翻看,而使用 less 命令浏览,既可以向后翻看,也可以向前翻看。

1.主要功能

  • 使用光标键可以在文本文件中前后(左后)滚屏;
  • 用行号或百分比作为书签浏览文件;
  • 提供更加友好的检索、高亮显示等操作;
  • 兼容常用的字处理程序(如 Vim、Emacs)的键盘操作;
  • 阅读到文件结束时,less 命令不会退出;
  • 屏幕底部的信息提示更容易控制使用,而且提供了更多的信息。

2.基本语法

less [选项] 文件名...

3.交互指令

  在使用 less 命令查看文件内容的过程中,和 more 命令一样,也会进入交互界面,因此需要读者掌握一些常用的交互指令,如下图。

交互指令功能
/字符串向下搜索“字符串”的功能。
b向上移动一页.
q 或 Q退出 less 命令。
向上逐行滚动。
向下逐行滚动。
空格键向下移动一页。
回车键向下移动一行。
【PgDn】键向下移动一页。
【PgUp】键向上移动一页。

注意:less命令与管道符搭配使用,可以实现向上翻页;less命令可以实现查找作用。

4.使用方法

使用 less 命令查看 /boot/grub/grub.cfg 文件中的内容。

[root@host ~]# less /etc/yum.conf 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmnRcQen-1680085213935)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329141415994.png)]

head命令——查看文件内容

  head 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中。

1基本语法

head [选项] 文件名

2.基本参数

选项含义
-n k这里的 K 表示行数,该选项用来显示文件前 K 行的内容;如果使用 “-K” 作为参数,则表示除了文件最后 K 行外,显示剩余的全部内容。
-v显示文件名。

注意,如不设置显示的具体行数,则默认显示 10 行的文本数据。

3.常用格式

使用head命令直接查看文件默认前10行内容

[root@host ~]# head anaconda-ks.cfg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-73HquPjL-1680085213936)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329142917421.png)]

使用head命令查看前20行的内容

[root@host ~]# head -n 20 anaconda-ks.cfg

blog.csdnimg.cn/e9facbf654694ff6a0c2607149889aca.png)

使用head命令查看除了后面10行的内容

[root@localhost ~]# head -n -20 anaconda-ks.cfg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tsX3jKaB-1680085213937)(F:\博客存放\head.jpg)]

tail命令——查看文件内容

  tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,tail是看档案的结尾。 一般用来看日志文件,方便查看实时的日志更新情况。

1.基本语法

tail [选项] 文件名

2.基本参数

选项含义
-n K这里的 K 指的是行数,该选项表示输出最后 K 行,在此基础上,如果使用 -n +K,则表示从文件的第 K 行开始输出。
-f输出文件变化后新增加的数据。

3.常用格式

使用tail命令查看 /etc/passwd 文件最后 3 行的数据内容。

[root@host ~]# tail -n 3 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSAP1ltU-1680085213938)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329144329518.png)]

使用tail命令查看 /etc/passwd 文件最后 3 行的数据内容的另一种方式。

[root@lhost ~]# tail -3 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5QRhxuZ-1680085213938)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329144356958.png)]

  可以看到,使用 tail -n 3 /etc/passwd 命令和 tail -3 /etc/passwd 的效果是一样的。

想要查看文件实时更新情况

首先手动修改文件,需要打开另一个窗口界面,然后通过tail -f实时查看文件更新情况

[root@host ~]# tail -f abc.txt

[root@host ~]# echo 777 >> abc.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PPeGzt0r-1680085213938)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329144837095.png)]

wc命令——统计文件内容

  Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。其主要功能是统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。

1.基本语法

wc [选项]... 目标文件...

2.基本参数

选项含义
-l统计行数。空行占用的行数也计算在内。
-w统计单词个数。空格、tab、换行会进行统计,占用一个单词个数
-c统计字节数。空格、tab或空行统计字节数(空行、换行符以及结尾符都算作是一个单独的字节)。

注意:如果wc命令不带任何选项,默认同时使用-lwc三个选项。

3.常用格式

直接查看文件内容

[root@host ~]# wc abc.txt
//9代表行数9行,6代表单词数为6个,24代表24字节
 9  6 24 abc.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8tuzokxA-1680085213939)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329151415275.png)]

查看指定文件中所有行数

[root@host ~]# wc -l abc.txt 
//9嗲表行数为9行
9 abc.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sjqj2kx9-1680085213939)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329151552275.png)]

查看指定文件中单词数

[root@host ~]# wc -w abc.txt 
//6代表单词数为6个
6 abc.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6GkAyix8-1680085213939)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329151812962.png)]

查看指定文件中的字节

[root@host ~]# wc -c abc.txt 
//24代表24字节
24 abc.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXS342vr-1680085213942)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230329151908763.png)]

grep命令——检索和过滤文件内容

  grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行

1.基本语法

grep [选项]... 查找条件 目标文件

2.基本参数

grep命令根据不同选项可以过滤出相匹配的内容,那么选项都有哪些呢,可以看下图

选项含义
-i查找时不区分大小写
-v显示不包含匹配文本的所有行(反向查询,反向匹配)
-c只输出匹配到的总行数(不是匹配到的次数)
-n显示匹配行及行号
-e实现可多个查找条件的匹配,逻辑or关系
-E支持使用扩展正则表达式,相当于使用egrep命令
-o精确匹配,即“仅匹配”之意。
-A n显示匹配行和它后面的n行。
-B n显示匹配行和它前面的n行。
-C n匹配行和它前后各n行。
-l列出文件内容符合指定的样式的文件名称
-w只显示全字符合的列。

grep命令根据不同的条件进行匹配出符合条件的内容,而查找条件也有不同的设置方式

条件含义
“”要查找的字符串以双引号括起来
^……代表以……开头的字符串
……$代表以……结尾的字符串
^$代表空行

3.常用格式

查看想要符合搜索的文本

[root@host ~]# grep 6 abc.txt
626
666
676

想要查询符合搜索的单词,不区分大小写

[root@host ~]# grep -i system anaconda-ks.cfg  
# System authorization information
# System language
# System services
# System timezone
# X Window System configuration information
# System bootloader configuration
@network-file-system-client

想要查看不包含搜索单词的文件内容

//*反向查询并显示所有不以#号开头的行(-v方向查询并显示后面参数未匹配到的内容)* 
[root@host ~]# grep -v "^#" anaconda-ks.cfg
auth --enableshadow --passalgo=sha512
cdrom
graphical
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=cn --xlayouts='cn'
lang zh_CN.UTF-8

network  --bootproto=dhcp --device=ens32 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain

rootpw --iscrypted $6$RWPpARo.wYlm0uvS$in37N24V4AMDDxOSeZBmYT8JiI9ZG.5zYpScyUn1PEb9drDlfdfGPlKUaibFvMNHentiCfq9riWlLRQx35sob1

想要统计匹配搜索内容的行数

//统计以#号开头匹配的行数
[root@host ~]# grep -c "^#" anaconda-ks.cfg
15

//统计以#号开头的行数
[root@host ~]# grep "^#" anaconda-ks.cfg | wc -l  
15

可以看到,使用 grep -c "^#" anaconda-ks.cfg 命令和 grep "^#" anaconda-ks.cfg | wc -l 的效果是一样的。|是将左边的命令的结果,作为右边的命令的输入。

想要精准查询某个字符串

//统计指定文件中匹配到的指定字符串(cn)的次数
[root@host ~]# grep -o "cn" anaconda-ks.cfg
cn
cn

想要查询某个字符串所在行数并显示具体内容

//查询并显示指定文件中含有no字符串的行,并将该行在原文件中的行数显示出来
[root@host ~]# grep -n  "no" anaconda-ks.cfg
10:ignoredisk --only-use=sda
17:network  --bootproto=dhcp --device=ens32 --onboot=off --ipv6=auto --no-activate
32:clearpart --none --initlabel
38:@^gnome-desktop-environment
46:@gnome-desktop
67:pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
68:pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
69:pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty

想要查询符合其中一个的条件内容或者符合另一个的条件内容

//查询并显示指定文件中以#号开头,或者以@开头的内容(-e多条件查询,和其他选项一起使用时,选项-e放在最后)(实现或的作用)
[root@host ~]# grep -e "^#" -e "^@" anaconda-ks.cfg
#version=DEVEL
# System authorization information
# Use CDROM installation media
# Use graphical install
# Run the Setup Agent on first boot
# Keyboard layouts
# System language
# Network information
# Root password
# System services
# System timezone
# X Window System configuration information
# System bootloader configuration
# Partition clearing information
# Disk partitioning information
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11

使用正则表达式查询内容

//查询并显示指定文件中以#号开头,或者以@开头的行*
[root@host ~]# grep -E  "^#|^@" anaconda-ks.cfg
#version=DEVEL
# System authorization information
# Use CDROM installation media
# Use graphical install
# Run the Setup Agent on first boot
# Keyboard layouts
# System language
# Network information
# Root password
# System services
# System timezone
# X Window System configuration information
# System bootloader configuration
# Partition clearing information
# Disk partitioning information
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11

过滤指定文件中的内容并查看

查看指定字符串的前5行内容

//查看指定文件中含有"system timezone" 字符串,不区分大小写,并且显示出字符串所在原文件中的行号,以及所在行号后面的5行内容,一并显示出来
[root@host ~]# cat anaconda-ks.cfg | grep -A 5  -in "system timezone"
24:# System timezone
25-timezone Asia/Shanghai --isUtc
26-user --name=test --password=$6$azaqdfxdkwB98/wd$Mc4vp.ESYFoVOj3NM08sXM8dH3tnFLNmOUlKKZ7cYxIsFFC62J2QaVOcEdpkRmU.SS43OWnvSh1yYqD2tFmv01 --iscrypted --gecos="test"
27-# X Window System configuration information
28-xconfig  --startxonboot
29-# System bootloader configuration

查看指定字符串的后5行内容

//查看指定文件中含有"system timezone" 字符串,不区分大小写,并且显示出字符串所在原文件中的行号,以及所在行号前面的5行内容,一并显示出来
[root@host ~]# cat anaconda-ks.cfg | grep -B 5  -in "system timezone"
19-
20-# Root password
21-rootpw --iscrypted $6$RWPpARo.wYlm0uvS$in37N24V4AMDDxOSeZBmYT8JiI9ZG.5zYpScyUn1PEb9drDlfdfGPlKUaibFvMNHentiCfq9riWlLRQx35sob1
22-# System services
23-services --enabled="chronyd"
24:# System timezone

查看指定字符串的前后 5 行内容

//查看指定文件中含有"system timezone" 字符串,不区分大小写,并且显示出字符串所在原文件中的行号,以及所在行号的前后各5行的内容,一并显示出来
[root@host ~]# cat anaconda-ks.cfg | grep -C 5  -in "system timezone"
19-
20-# Root password
21-rootpw --iscrypted $6$RWPpARo.wYlm0uvS$in37N24V4AMDDxOSeZBmYT8JiI9ZG.5zYpScyUn1PEb9drDlfdfGPlKUaibFvMNHentiCfq9riWlLRQx35sob1
22-# System services
23-services --enabled="chronyd"
24:# System timezone
25-timezone Asia/Shanghai --isUtc
26-user --name=test --password=$6$azaqdfxdkwB98/wd$Mc4vp.ESYFoVOj3NM08sXM8dH3tnFLNmOUlKKZ7cYxIsFFC62J2QaVOcEdpkRmU.SS43OWnvSh1yYqD2tFmv01 --iscrypted --gecos="test"
27-# X Window System configuration information
28-xconfig  --startxonboot
29-# System bootloader configuration

想要查找文件名

//在目录下查找含有“name”的文件名称
[root@host ~]# grep -l "name" ~/anaconda-ks.cfg 
/root/anaconda-ks.cfg

想要精准查询文件名

//使用递归查找在etc目录下精准查找boot文件
[root@host ~]# grep -r -w -l "boot" /etc
/etc/grub.d/00_header
/etc/grub.d/10_linux
/etc/grub.d/20_linux_xen
/etc/grub.d/30_os-prober
/etc/grub.d/README
/etc/udev/hwdb.bin
/etc/e2fsck.conf
/etc/logrotate.d/bootlog
/etc/selinux/targeted/contexts/files/file_contexts
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/contexts/files/file_contexts.homedirs
/etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
/etc/selinux/targeted/policy/policy.31
/etc/selinux/targeted/active/file_contexts
/etc/selinux/targeted/active/file_contexts.homedirs
/etc/selinux/targeted/active/homedir_template
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/active/policy.linked
/etc/sysconfig/network-scripts/ifup-ippp
/etc/sysconfig/network-scripts/ifup-plusb
/etc/sysconfig/network-scripts/ifup-post
/etc/sysconfig/network-scripts/ifup-ppp
/etc/sysconfig/kdump
/etc/libreport/events.d/abrt_event.conf
/etc/ld.so.cache
/etc/rc.d/init.d/functions
/etc/rc.d/init.d/network
/etc/rc.d/rc.local
/etc/dracut.conf
/etc/iproute2/rt_protos
/etc/kdump.conf
/etc/cgconfig.conf
/etc/kernel/postinst.d/51-dracut-rescue-postinst.sh
/etc/dnsmasq.conf
/etc/auto.misc
/etc/tuned/bootcmdline
/etc/rsyslog.conf
/etc/fwupd/uefi.conf
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的宝贝大唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值