Linux入门课程作业求助:/etc目录下host开头文件查找等问题
解决/etc目录下的两个Linux任务:列出host开头文件&查找主机名配置文件
别着急,我来帮你一步步解决这两个问题——你遇到的权限拒绝、结果不符的情况其实很常见,咱们逐个击破:
一、在/etc下用长列表列出所有以host开头的文件
方法1:用ls快速匹配(推荐)
因为你只需要/etc目录本身的文件(不需要递归子目录),直接用ls结合通配符最方便:
ls -l /etc/host*
-l:指定长列表格式,显示权限、大小、修改时间等详细信息host*:匹配所有以host开头的文件/目录
如果执行时出现权限拒绝提示,说明部分文件普通用户没有读取权限,加上sudo提升权限即可:
sudo ls -l /etc/host*
方法2:用find精准搜索
如果你之前用find没得到正确结果,大概率是没限制搜索深度,导致递归到/etc的子目录里找到了无关文件。试试这个命令:
sudo find /etc -maxdepth 1 -name "host*" -ls
-maxdepth 1:强制只搜索/etc一级目录,不深入子目录-name "host*":精准匹配以host开头的项-ls:直接输出长列表格式的结果sudo:避免因权限不足无法访问部分系统文件的问题
二、查找显示计算机名称的文件
Linux的主机名相关配置主要集中在几个核心文件里,你可以按以下方式查找:
1. 直接查看常见的主机名配置文件
- /etc/hostname:这是最标准的主机名配置文件,文件里直接存储着你的计算机名称,用
cat就能查看:cat /etc/hostname - /etc/hosts:这个文件里会记录主机名和IP的映射关系(比如127.0.0.1对应的本地主机名),可以查看:
cat /etc/hosts - 部分发行版专属文件:比如CentOS/RHEL系列会在
/etc/sysconfig/network里配置主机名,你可以尝试查看(文件不存在也不会报错):cat /etc/sysconfig/network 2>/dev/null
2. 搜索所有包含当前主机名的文件
如果你想全面排查/etc下所有包含主机名的文件,可以先获取当前主机名,再用grep搜索:
sudo grep -l "$(hostname)" /etc/*
$(hostname):自动替换成你的当前计算机名称-l:只显示匹配到的文件名,不输出具体内容sudo:解决权限不足无法读取部分系统文件的问题
如果需要递归搜索/etc下所有子目录的文件,加上-r参数:
sudo grep -r -l "$(hostname)" /etc/
为什么你之前的尝试会出问题?
- 权限拒绝:/etc下部分系统文件只有root用户能读取,普通用户执行
find/grep时会被限制,加上sudo就能解决。 - 得到以.host结尾的文件:大概率是通配符用错了(比如写成了
*host而不是host*),或者find没加-maxdepth 1,递归到子目录里找到了无关的隐藏文件。
内容的提问来源于stack exchange,提问作者Maddasahatter69




