1.浏览系统文件
按以下步骤完成相关操作命令:
- 逐个输入以下命令,观察其输出并试解释其含义:
- pwd
- ls -l
- ls -ai
- ls -a
- ls -i
以上3,4,5命令运行的结果有何不同?
pwd输出当前工作的目录的完整路径,ls -l输出当前目录下所有文件和目录的详细列表,从左到右依次表示为文件类型和权限、文件硬链接数(普通文件为1,对于目录,这个数字包括目录自身以及目录中包含的每个子目录项其中每个子目录都是其父目录的一个硬链接),所有者用户名、所属组用户名、大小(单位:字节)、最后修改时间、文件或目录名称。
ls -ai 输出共输出两列,第一列表示为indode号(文件索引节点编号,用于文件系统管理),第二列表示为所有文件(隐藏文件为.开头,其中..表示当前目录的上一级目录)。
ls -a表示输出所有包括隐藏文件在内的所有文件和目录的列表,按字母顺序排序。
ls -i当前目录下所有文件和目录的列表,显示inode号,但不一定包括隐藏文件
综上所述,-a表示输出所有文件和目录而-i表示输出其inode号,3,4,5命令的区别在于,3、4命令都会输出所有文件目录,但3还包括indode编号。3、5都会输出indode编号,但5不包括隐藏文件或目录。
- 执行命令:mkdir subdir_name,观察其输出并试解释其含义(subdir_name为目录名,请自行修改之)。
如下图所示,该命令表示创建新的目录,Documents文件已存在,所以无法再创建。
- 使用cd命令,将当前目录切换至根目录(/),利用pwd命令确令是否切换成功。
如图所示,当前目录已是根目录。
- 使用ls命令列出根目录的内容,再分别列出各子目录的内容,观察各目录文件的访问权限。
如图所示,第一列第一个字符表示文件类型,其中:
d 表示目录
l 表示符号链接
- 表示普通文件
其他字符代表不同类型的特殊文件,如比如b 表示块设备文件,c 表示字符设备文件等。
而接下来三组字符表示文件所有者,所属组和其他用户权限:
r 表示可读(read)
w 表示可写(write)
x 表示可执行(execute)
- 表示没有相应的权限
以第一行为例分析:bin:drwxr-xr-x. 表示这是一个目录,所有者有读写执行权限,而组和其他用户只有读和执行权限。
- 使用ls -l命令列出/dev目录下的内容,观察各行第一个字符b和c的含义及其访问权限。
b 表示块设备文件,c 表示字符设备文件
以第一行为例分析:
agpgart:crw- rw- - - - 表示这是一个字符设备文件,所有者和所属组都有读写权限,而其他用户没有任何权限。
- 执行不带参数的命令:cd,然后用pwd命令确认当前的工作目录。
- 执行命令:cd ../..后,当前工作目录转移到了什么地方?
cd ../..表示切换到上上一级目录(即上一级目录的上一级),如图所示目录转到/
2.查看文件
- 用cd命令将工作目录切换到用户目录。
- 将工作目录切换至当前用户的子目录subdir,然后逐个执行以下命令,观察输出结果并解释原因:
- date>file1 这个命令使用 date 命令来获取当前的日期和时间,然后将输出重定向到名为 text3.txt 的文件中,无输出结果,表示命令成功执行
- cat file1 显示了 text3.txt 文件的内容,,
- date>> file1 >> 操作符,它将 date 命令的输出追加到 text3.txt 文件的末尾
- cat file1 再次使用 cat 命令显示 text3.txt 文件的内容。这次输出显示了两次日期和时间
- date>file1 再次使用>命令
- cat file1 因为之前里面已有时间日期内容,故之前使用 > 操作符会覆盖文件内容,导致现在文件中只包含最新的日期和时间。
- 执行命令:man date >> file1,然后执行命令:more file1,观察输出结果。
man date >> text3.txt,表示将 date 命令的手册页(man page)重定向到一个名为 text3.txt 的文件。more 是一个分页程序,用于逐页显示文本文件的内容。在这个命令中,它被用来查看 text3.txt 文件的内容。如图所示,date相关命令手册内容成功输出。
- 执行命令:ls -l file1,观察输出结果第二个字段的值;
第二个字段为文件硬件连接数,如图所示该文件硬件连接数为1
- 执行命令:ln file1 fa1,再执行命令:ls -l file1,观察输出结果的第二个字段的值的变化;
如图所示,text3.txt存在,而fa1不存,故创建了一个指向text3.txt 的硬链接,命名为 fa1,再次查看该文件发现第二个字段变为2,即硬链接创建成功。
- 执行命令:ln -s file1 fa2,再执行命令:ls -l file1,观察输出结果的第二个字段的值的变化;
如图所示,硬链接fa2创建成功,文件硬链接数变为3
- 执行命令:head file1,观察输出结果并说明原因。
如图所示head命令显示出了text3.txt 文件开始部分的前10行
- 执行命令:tail file1,观察输出结果并说明原因。
如图所示tail命令显示出了text3.txt 文件开始部分的后10行
- 执行命令:ls -l /usr/bin,观察输出结果并说明原因。
/usr/bin 是Linux系统中存放用户可执行文件的标准目录之一,它包含了许多用户可以在命令行中运行的程序,如图所示,该命令列出来目录下其所有相关文件,最后一个字段表示文件的名称。
- 执行命令:ls -l /usr/bin|more,观察输出结果并说明原因,分别按回车键和空格键,有什么不同?
如图所示该命令列出了/usr/bin 目录下所有文件的长格式信息,并将输出通过 more 命令分页显示。其中more:这是一个分页程序,用于逐步浏览较长的文本输出。它会一次显示一页的内容,允许用户手动翻页。
按回车键:按下回车键时,more 会向下滚动一行。可以逐行浏览文件列表,而不是分页浏览。
按空格键:当你按下空格键时,more 会向下滚动一页。可以一次查看更多的内容。
- 执行命令:cp file1 file1_cp,再执行命令:ls -l,观察输出的内容有什么变化。
cp 是 "copy" 的缩写,用于复制文件或目录。该命令将text3.txt文件复制一份,命名为 text3.txt_cp.并且原文件的权限和属性与复制的文件相同。
- 执行命令:rm file1_cp,再执行命令:ls -l,观察输出的内容有什么变化。
rm表示删除remove,故该命令结果删除了刚刚的复制文件
- 执行命令:mv file1 ../,再执行命令:ls -l,观察输出的内容有什么变化。
mv是move的缩写,该命令将此txt文件移动到当前目录的上一级目录中,如图所示,刚刚的蓝底txt文件已经不在当前目录下。
- 此时,分别执行命令“cat fa1”和“cat fa2”有什么结果?
cat fa1、cat fa2 将显示text3.txt文件的内容,因为 fa1、fa2 是 text3.txt的硬链接,它们共享相同的数据。
3.文件操作
- 查找文件和目录,常用命令格式为:
find pathname -name filename -print
例如:在根目录下,执行命令:find /home -name file1 -print 或 find /home -name ‘f*.c’ -print
find /home:这个命令用于在 /home 目录及其所有子目录中查找文件和目录。
-name ml. c:这是 find 命令的一个选项,用于指定查找的文件名模式。它查找所有匹配 ml. c 的文件。模式是区分大小写的,所以它将匹配 ml.c 但不会匹配 ML.C 或其他大小写变体。
-print:这是 find 命令的一个动作,用于打印匹配的文件名。
如图所示打印成功
- 查找文件中指定的内容,命令格式为:
grep 2020 /home/shenwq/exp/exp7/file1
以上命令的作用为:在/home/shenwq/exp/exp7/file1文件中查找包括“2020”这个字符串的行。若将“2020”改为“20*0”,结果如何?
如图所示,第一行命令表示查找ml.c中所有包含字符串 "main" 的行,并将这些行作为输出显示。
第二行命令中,*表示一个特殊字符,匹配任何单个字符(任意字符),及mai*n这个模式会匹配任何一mai开始,以n结尾的字符,由于本文件仍然只有main满足条件,故只输出main()
4.文件存取权限
一、Linux系统对所有文件都设置了存取权限。为了确定不同用户对文件的存取权限,Linux将用户分为以下三类:
- 文件主(user),文件的属主。
- 组用户(group),和文件属主在同一个组的其他用户。
- 其他用户(other),系统中的其他用户。
二、对一个文件的存取权限分为以下三种:
- 读(r),允许指定用户打开文件并阅读其内容,存取文件内容时需要读权限的命令包括:cat、more、file和cp等。
- 写(w),允许指定用户可以打开文件并修改其内容,需要写权限的相关命令包括:vi、mail、cp等。
- 执行(x),允许指定用户运行(执行)一个二进制文件,或者把一个shell脚本文件当作命令来运行。
三、对一个目录的存取权限分为以下三种:
- 读(r),允许列出相应目录的内容(即文件列表)。
- 写(w),允许允许从目录中删除文件或往目录中新增文件。
- 执行(x),允许在目录中进行查找和使用cd命令把工作切换到目录中。
四、修改文件权限
可以通过符号模式和绝对模式两种方式修改文件/目录的权限,分别如下:
- 符号模式
命令格式为:chmod key file [file…]
其中,key由以下部分组成:
[who] [+ | - | =] [mode]
- [who]由u、g、o、或a中的一个或多个字符组成,它们分别表示文件主、组用户、其他用户或所有三种用户,默认值是a。
- [+ | - | =]必须是+,-或=中的其中一个,分别表示增加、删除或设定。
- [mode]可以任意组合:r、w或x,分别表示读、写或执行/查询的权限
以上三部分必须依次输入,中间没有空格;一个命令行中可以有多个key,彼此之间用逗号隔开,中间没有空格。
例如,设文件file1原来的权限为:rw-rw-r--,若想让所有用户都有执行权限,可执行以下命令:
chmod a+x f
执行后,文件f的权限变为:rwxrwxr-x
【练习】
(1)执行命令:ls -l file1,查看file1文件的权限;
主用户与组用户都有可读可写权限,其他用户只有可读权限,
- 执行命令:chmod g-r,o-r file1,查看file1文件的权限变化。
该命令表示删除组用户和其他用户的可读权限,如图所示已成功删除
2.绝对模式
命令格式为:chmod key file [file…]
- 其中,key由3个或多个数字组成,其中每个数字表示一类用户(文件主、组用户、其他用户)的权限;每个数字都表示不同的权限,如r=4,w=2,x=1,如果某种权限被禁用,则对应的值为0。因此,表示权限值的数字范围为0-7
- 例如,运行以下命令,可把文件file1的权限修改为:文件主和组用户有读和写的权限,其他用户只有读的权限:
chmod 664 file1
说明:以上命令,第一个6对应文件主权限,第二个6对应组用户权限,
如下图所示,通过该命令,件主和组用户有读和写的权限,其他用户只有读的权限:
第三个数4对应其他用户权限,此例绝对模式中数字和符号模式的对应关系如下:
符号模式 | rw- | rw- | r-- |
绝对模式 | 6 | 6 | 4 |
5.实验总结
通过本次实验我主要学习到如何在Linux系统里通过命令行的方式创建、删除、复制、移动文件,并且通过对文件查看,了解到文件权限的重要性,针对不同三种的用户,都有对应的读写执行三种权限,同时懂得了如何修改文件对应的权限,加强了我对Linux文件系统操作的理解和实践能力,这些相关命令能够有效提高文件管理效率。