Linux系统中文件与目录操作类指令的用法(全)——绝对详细,绝对干货,通俗易懂

简介

博主整理了Linux系统中文件与目录操作类指令的用法,因为每条指令的参数和选项都比较多,而且其中有的选项并不常用,所以这里博主只是简要的介绍下每条指令的常见用法和功能,并进行实操截图,方便大家学习,最后博主还列出了文件与目录操作类指令用法的简要概括。如果文章中有出现错误欢迎大家私信或在评论区指出,谢谢大家!

1. pwd指令

语法:pwd
功能:显示用户当前所在的目录
常用选项:无
实例:我现在以root身份登陆xshell,看看我们登录后处在什么目录中。
在这里插入图片描述

这里显示我们当前在root目录中。我们现在去根目录看下,这里可以看到我们登录进入的root目录。所以pwd可以显示用户当前所在的目录。至于什么是根目录以及Linux的结构,我们在下面cd的指令中会给大家介绍。
在这里插入图片描述

2. cd指令

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
在这里插入图片描述

语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定目录下。
实例

  1. 这是现在root目录中存在的子目录dir。
    在这里插入图片描述

  2. 我们现在使用cd dir进入dir目录,可以从pwd显示的路径看出来我们已经进入了dir目录中。
    在这里插入图片描述

  3. 如果我此时想要返回root目录,我只需要cd … 就可以了
    在这里插入图片描述

  4. 此时我在root目录下又创建了一个dir2目录,可以看出root中此时有两个子目录dir和dir2。我通过使用绝对路径进入了dir2目录中。
    在这里插入图片描述

  5. 现在我在dir2目录中,使用相对路径进入root目录下的dir目录。
    在这里插入图片描述

  6. 现在我使用cd - 指令返回到我最近访问的目录(也就是上次访问的目录),通过前面的步骤知道我在访问dir目录前,我在dir2目录中,输入指令后的结果如下图所示。
    在这里插入图片描述

  7. 使用cd ~ 指令就是返回我的家目录中,这里我使用的用户就是root,所以返回的就是root目录中,如果你使用的是自己创建的用户,就会返回到你创建用户的家目录中。
    在这里插入图片描述

3. ls指令

语法:ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  • -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
  • -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
  • -h 将文件的大小以便于人识别的方式展示出来。ls –lh
  • -l 列出文件的详细信息。
  • -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
  • -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
    示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -S 将当前目录的文件按照大小排序
  • -R 递归列出子目录下的文件。

实例

  1. ls 指令是直接显示当前目录的文件,以文件名的形式展示。
    在这里插入图片描述

  2. ls -a 指令是将当前目录的所有文件,包括隐藏文件都显示出来,在linux中,以“."(点号)开头的文件是隐藏文件。
    在这里插入图片描述

  3. ls -l 指令是显示当前目录的长列表,将文件用更详细的方式展示出来。
    在这里插入图片描述

补充:我相信很多人对于文件名前面这一大串的信息不了解意思,有什么作用,下面我给大家简要概括下linux的文件属性的知识。下面是文件属性简要解释图:
在这里插入图片描述

文件除了有文件大小、文件修改时间和文件类型的信息,还包括权限等信息,这样就可以限制我们的文件可以给谁看,谁可以进行修改,在文件的权限概念理解中我将详细为大家讲明,请大家关注我的下一篇博客,谢谢。

  1. ls -al 在linux中,指令的常用选项是可以叠加使用的,将两个选项的功能进行组合(不区别选项的前后顺序),这个指令是将当前目录的所有文件(包括隐藏文件)的详细信息展示出来。注意:观察下面的图片,其中有 “.” 和 “..” 两个目录,这两个目录分别代表当前目录和上级目录,方便我们在书写代码时候调用,例如我想知道上级目录的信息,我就可以这样写:ls -l ../ ,这样就可以观察到了
    在这里插入图片描述

  2. ls -il 指令是打印文件的索引号(inode号),索引会显示在第一列。
    在这里插入图片描述

  3. ls -hl 指令是将文件的大小以适合人阅读的方式展示,在linux中,文件都是以KB的形式进行展示的,但是有的文件特别大,此时用KB就不适宜我们阅读,使用 -h 选项后,可能就会以MB的形式(具体看你的文件有多大)进行展示。
    在这里插入图片描述

  4. ls -hlS 这个指令可以给当前目录下的文件按照文件大小进行排序,可以看到一开始我们的目录中的三个文件的排列顺序从大到小是dir -> dir2 -> myfile.txt ,但是当我将myfile.txt 文件中写入10000个数据后,在进行排序,此时排列顺序从大到小就是myfile.txt -> dir -> dir2 。
    在这里插入图片描述

  5. ls -d */ 这个指令是将当前目录下的所有目录都表示出来
    在这里插入图片描述

  6. ls -rl 这个指令是将当前目录下的文件按照逆序的方式进行显示。
    在这里插入图片描述

  7. ls -Rl 这个指令是递归列出当前目录下的子目录
    在这里插入图片描述

  8. ls -lt 这个指令是将当前目录下的所有文件按照时间进行排序,文件最新修改时间日期越早的排在越上面
    在这里插入图片描述

  9. ls -nl 用数字方式列出项的所有者和所有组( 即UID和GID)
    在这里插入图片描述

4. cat指令

语法:cat [选项] [文件]
功能:查看目标文件的内容
常用选项

  • -b 对非空输出行编号
  • -n 对输出的所有行编号
  • -s 不输出多行空行

实例

  1. cat file2.txt 这个指令是查看当前目录下的file2.txt的内容
    在这里插入图片描述

  2. cat -b file2.txt 这个指令是查看当前目录下的file2.txt的内容并给对内容中的非空输出行编号
    在这里插入图片描述

  3. cat -n file2.txt 这个指令是查看当前目录下file2.txt的内容并给内容中的所有号都进行编号
    在这里插入图片描述

  4. cat -s file2.txt 不输出多行空行
    在这里插入图片描述

5. grep、fgrep和egrep指令

1. grep指令

语法:grep [选项] 搜索字符串 文件
功能:在文件夹中搜索字符串,将找到的行打印出来
常用选项

  • -i 忽略大小写的不同,所以大小写视为相同
  • -n 顺便输出行号
  • -v 反向选择,亦即显示出没有“搜索字符串”内容的那一行
  • -c 计算找到”搜索字符串“的次数

实例

  1. grep “Hello” file2.txt 此时是查找file2.txt文件中的 “Hello” 字符串
    在这里插入图片描述
  2. grep -i “hello” file2.txt 此时是不区分字符串的大小写,查找file2.txt文件中的"hello"字符串
    在这里插入图片描述
  3. grep -n “Linux” file2.txt 此时查找字符串,并且顺便输出行号
    在这里插入图片描述
  4. grep -v “Linux” file2.txt 此时查找的字符串,显示出没有“搜索字符串”内容的那一行
    在这里插入图片描述
  5. grep -ci “hello” file2.txt 这个指令是查找在file2.txt文件中,”hello"字符串出现的次数
    在这里插入图片描述

2. fgrep指令

语法:fgrep [选项] 搜索字符串 文件
功能:在文件中搜索字符串,将找到行打印出来
常用选项

  • -i 忽略的大小写进行匹配
  • -v 反向匹配,只输出不匹配的行

区别:fgrep与grep指令的区别是,fgrep是grep的一种快速查找方法,是通过固定字符串进行查找,不需要解释成正则表达式。因此fgrep的查找的速度比grep更快。

3. egrep指令

语法:egrep [选项] ‘模式’ 文件
功能:用于在文件中搜索指定的字符串或正则表达式,并将包含匹配项的行输出到标准输出,是 grep 命令的一个变体,它支持更高级的正则表达式语法,并且默认情况下启用了扩展正则表达式,所以egrep使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。
选项

  • -i 忽略大小写进行匹配
  • -v 反向匹配,输出不匹配模式的行
  • -n 显示匹配行的行号
  • -r 递归搜索,对目录下的所有文件进行匹配
  • -w 匹配整词,仅匹配单词的完整匹配
  • -c 统计匹配到的行数
  • -A 显示匹配行及其后面指定行数的内容
  • -B 显示匹配行及其前面指定行数的内容
  • -C 显示匹配行及其前后指定行数的内容

实例:因为许多用法与grep相似,所以我在egrep这里主要展示匹配正则表达式的实例

  1. 首先使用cat命令查看tmp文件中的内容
    在这里插入图片描述

  2. 要匹配以特定单词开头的行,可以使用 ^ 符号和单词模式。例如,要匹配以 “Hello” 开头的行,可以运行以下命令:
    在这里插入图片描述

  3. 要匹配以特定单词结尾的行,可以使用 $ 符号和单词模式。例如,要匹配以 “Linux” 结尾的行,可以运行以下命令:
    在这里插入图片描述

  4. 要匹配包含数字的行,可以使用字符类 [:digit:] 或方括号 [0-9]。例如,要匹配包含数字的行,可以运行以下命令:
    在这里插入图片描述

  5. 要匹配重复出现的字符,可以使用 *、+ 或 ? 符号。例如,要匹配重复出现的字母 “o”,可以运行以下命令:
    在这里插入图片描述

  6. 要匹配分组模式,可以使用小括号 ()。例如,要匹配 “Hello” 或 “Linux”,可以运行以下命令:
    在这里插入图片描述

  7. 要匹配重复次数的模式,可以使用 {n}、{n,} 或 {n,m}。例如,要匹配连续出现三个 “a” 的行,可以运行以下命令:
    在这里插入图片描述

6. find指令

语法:find [路径] [匹配条件] [动作]
功能:用于在指定目录下查找文件和目录,它可以使用不同的选项来过滤和限制查找的结果。
参数
路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。

expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份:

  • -name pattern:按文件名查找,支持使用通配符 * 和 ?。
  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size [±]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  • -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。

动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。

find 命令中用于时间的参数如下:

  • -amin n:查找在 n 分钟内被访问过的文件。
  • -atime n:查找在 n*24 小时内被访问过的文件。
  • -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
  • -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
  • -mmin n:查找在 n 分钟内被修改过的文件。
  • -mtime n:查找在 n*24 小时内被修改过的文件。
    在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
    例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。

关于时间 n 参数的说明:

  • +n:查找比 n 天前更早的文件或目录。
  • -n:查找在 n 天内更改过属性的文件或目录。
  • n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

实例

  1. 首先查看下当前目录下的所有文件和目录信息
    在这里插入图片描述
  2. 使用find按文件名查找,查找当前目录及子目录下以.txt文件结尾的文件
    在这里插入图片描述
  3. 使用find按文件大小查找,查找当前目录及子目录下大于10k的文件
    在这里插入图片描述
  4. 使用find命令按照文件的类型查找,查找当前目录及子目录下的目录
    在这里插入图片描述
  5. 使用find命令查找10分钟内修改过的文件
    在这里插入图片描述
  6. 使用find命令按用户或组查找文件拥有者和所属组是cy的文件
    在这里插入图片描述
  7. 还有find的其他用法,包括一些高级的用法,大家可以查阅这个作者写的博客,非常不错。链接: linux下find这一强大命令的用法详解

7. sort指令

语法:sort [options][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison][文件][-k field1[,field2]]
功能:用于将文本文件内容加以排序
参数

  • -b 忽略每行前面开始出的空格字符。
  • -c 检查文件是否已经按照顺序排序。
  • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  • -f 排序时,将小写字母视为大写字母。
  • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  • -m 将几个排序好的文件进行合并。
  • -M 将前面3个字母依照月份的缩写进行排序。
  • -n 依照数值的大小排序。
  • -u 意味着是唯一的(unique),输出的结果是去完重了的。
  • -o<输出文件> 将排序后的结果存入指定的文件。
  • -r 以相反的顺序来排序。
  • -t<分隔字符> 指定排序时所用的栏位分隔字符。
    +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
  • --help 显示帮助。
  • --version 显示版本信息。
  • [-k field1[,field2]] 按指定的列进行排序。‘

实例

  1. sort myfile.txt 这个指令是对文件进行默认排序,以默认的方式对文本文件的每一列按照ASCII码值进行排列,并将结果输出到标准输出
    在这里插入图片描述
  2. sort -k myfile.txt 这个指令是对第二列的值进行重排。注意这里的列是用空格进行分隔的列
    在这里插入图片描述

8. touch指令

语法:touch [选项]… 文件…
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
参数

  • -a 或–time=atime或–time=access或–time=use只更改存取时间。
  • -c 或–no-create 不建立任何文档。
  • -d 使用指定的日期时间,而非现在的时间。
  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  • -m 或–time=mtime或–time=modify 只更改变动时间。
  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  • -t 使用指定的日期时间,而非现在的时间
  • –no-create 不会建立新的存档
  • –help 列出指令格式
  • –version 列出版本信息

实例

  1. touch file2.txt这个指令是修改文件"testfile"的时间属性为当前的系统时间。
    在这里插入图片描述
  2. touch testfile.txt 使用指令"touch”时,如果指定文件不存在,则将创建一个新的空白文件。
    在这里插入图片描述

9. cp指令

语法:cp [选项] 源文件 目标文件
功能:主要用于复制文件或目录
选项

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。
  • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
  • -r 或 --recursive:用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。
  • -i 或 --interactive:在复制前提示确认,如果目标文件已存在,则会询问是否覆盖,回答 y 时目标文件将被覆盖。。
  • -u 或 --update:仅复制源文件中更新时间较新的文件。
  • -v 或 --verbose:显示详细的复制过程。
  • -p 或 --preserve:保留源文件的权限、所有者和时间戳信息。
  • -f 或 --force:强制复制,即使目标文件已存在也会覆盖,而且不给出提示。
  • -l:不复制文件,只是生成链接文件。

实例

  1. cp file2.txt …/dir1 这个指令是将当前文件夹下的file2.txt文件复制到上级目录的dir1目录中。
  2. cp -r ..dir2 ..dir1的意思是将dir2目录复制到上级中的dir1目录中。注意:用户使用该指令复制目录时,必须使用 -r 或 -R 。这是为了递归将目录中的所有内容都复制到新目录中。
    在这里插入图片描述
  3. cp -i file2.txt ..dir1 这个指令是复制文件,并在文件以及存在的时候进行确认,确认是否要进行覆盖
    在这里插入图片描述

10. mv指令

语法:mv [options] source dest 或 mv [options] source… directory
功能:用来为文件或目录改名,或将文件或目录移入其他位置
选项

  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
  • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
  • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
  • -n: 不要覆盖任何已存在的文件或目录。
  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作

实例

  1. mv file2.txt myfile.txt 这个指令是将 file.txt 文件改名为 myfile.txt
    在这里插入图片描述
  2. mv ../dir2 ../dir1 这个指令是将dir2目录放入dir1目录中。注意:如果dir1目录不存在,那么该命令会将dir2目录改名为dir1
    在这里插入图片描述
  3. mv ../dir1/* . 这个指令是将dir1目录中的所有文件和目录转移到当前目录下
    在这里插入图片描述

11. rm指令

语法:rm [options] name ------ name包括文件名或者目录名,也可以是多个文件或目录
功能:用于删除一个文件或者目录
选项

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

实例

  1. rm file2.txt 这个指令是删除当前目录中的file2.txt文件,并且在删除时需要进行询问确认
    在这里插入图片描述

  2. rm -r dir1 这个指令是删除目录的。注意:在删除目录的时候必须要加上选项 -r ,此时删除的时候也会进行询问确认
    在这里插入图片描述

  3. rm -rf dir1 这个指令是删除目录,并且不需要进行确认,直接强制删除
    在这里插入图片描述

12. head指令

语法:head [options] files
功能:用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
常用选项

  • -q 隐藏文件名
  • -v 显示文件名
  • -c<数目> 显示的字节数。
  • -n<行数> 显示的行数。

实例

  1. head file2.txt 这个指令是显示file2.txt文件的开头10行,它是默认带参数 -n 10的,也就是该指令与 head -n 10 file2.txt 等价
    在这里插入图片描述
  2. head -n 3 file2.txt 这个指令是显示file2.txt文件的开头3行
    在这里插入图片描述
  3. head -c 20 file2.txt 这个指令是显示file2.txt文件的前20个字节
    在这里插入图片描述

13. tail指令

语法:tail [options] files
功能:用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
常用选项

  • -f 循环读取
  • -q 不显示处理信息
  • -v 显示详细的处理信息
  • -c<数目> 显示的字节数
  • -n<行数> 显示文件的尾部 n 行内容
  • --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
  • -q, --quiet, --silent 从不输出给出文件名的首部
  • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

实例

  1. tail myfile.txt 这个指令会显示文件的最后十行
    在这里插入图片描述

  2. tail -f myfile.txt 这个指令会跟踪名为 myfile.txt 文件的增长情况,并显示 myfile.txt 文件的最后 10 行。当将某些行添加至 myfile.txt 文件时,tail 命令会继续显示这些行。 显示一直继续,直到按下(Ctrl-C)组合键停止显示。这里因为图片无法演示动态的文件变化,所以就不进行实例展示了。

  3. tail -n 20 myfile.txt 这个指令会显示 myfile,txt 文件最后20行的内容
    在这里插入图片描述

  4. tail -c 10 myfile.txt 这个指令显示文件最后的10字节内容
    在这里插入图片描述

14. more指令

语法:more [-options] [-num] [+/pattern] [+linenum] [fileNames…]
功能:more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
参数

  • -num 一次显示的行数
  • -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for -instructions.] 而不是 ‘哔’ 声
  • -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
  • -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
  • -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
  • -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
  • -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
  • -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
  • +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
  • +linenum 从第 num 行开始显示
  • fileNames 欲显示内容的文档,可为复数个数

常用操作命令

  • Enter 向下n行,需要定义。默认为1行
  • Ctrl+F 向下滚动一屏
  • 空格键 向下滚动一屏
  • Ctrl+B 返回上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号
  • V 调用vi编辑器
  • !命令 调用Shell,并执行命令
  • q 退出more

实例

  1. more file 首先展示file文件的内容
    在这里插入图片描述
  2. more -s file 这个指令会在展示file文件的时候将连续两行以上空白行则以一行空白行显示
    在这里插入图片描述
  3. more +10 file 这个指令会展示file文件第10行以后的内容
    在这里插入图片描述

15. less指令

语法:less [参数] 文件
功能:less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
参数

  • -b <缓冲区大小> 设置缓冲区的大小
  • -e 当文件显示结束后,自动离开
  • -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
  • -g 只标志最后搜索的关键词
  • -i 忽略搜索时的大小写
  • -m 显示类似more命令的百分比
  • -N 显示每行的行号
  • -o <文件名> 将less 输出的内容在指定文件中保存起来
  • -Q 不使用警告音
  • -s 显示连续空行为一行
  • -S 行过长时间将超出部分舍弃
  • -x <数字> 将"tab"键显示为规定的数字空格

操作

  • /字符串:向下搜索"字符串"的功能
  • ?字符串:向上搜索"字符串"的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)
  • b 向上翻一页
  • d 向后翻半页
  • h 显示帮助界面
  • Q 退出less 命令
  • u 向前滚动半页
  • y 向前滚动一行
  • 空格键 滚动一页
  • 回车键 滚动一行
  • [pagedown]: 向下翻动一页
  • [pageup]: 向上翻动一页

实例

  1. 首先使用less指令查看testfile文件的内容
    在这里插入图片描述

  2. less -s testfile 这个指令会在展示file文件的时候将连续两行以上空白行则以一行空白行显示
    在这里插入图片描述

  3. less testfile myfile 此时我们可以浏览多个文件,因为这里不太好展示,所以我就不放图片了。

    less testfile myfile 
    

    说明:
    输入 :n后,切换到 myfile
    输入 :p 后,切换到testfile

16. 补充:管道用法详解

引言:管道用法是Linux中非常重要的知识点,这里我找到了一篇非常不错的博客:链接: Linux管道符|命令使用详解。我会借用他的博客的例子给大家再进行讲解。

“|”是Linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
例如:

cat hello.sh | sort | uniq | grep 'better’

在这里插入图片描述
操作实例

  1. 以分页的形式查看自己的历史记录

    history | less
    

    在这里插入图片描述
    history 是显示历史记录中你输入过的命令,直接使用时会将所有命令一次列出,不方便查看。有了管道符“|”之后,默认只显示第一屏内容,可以通过按回车键或滑动鼠标滚轮来显示其它内容,结束后按“Q”键退出。

  2. 利用echo命令查看管道的操作效果
    在这里插入图片描述
    可以很明显的看出,单独使用echo命令时直接将“2+4”作为文本输出了,而添加管理后,又将输出结果“2+4”作为输入内容传递给了计算器语言bc,对“2+4”经过运算后输出。

  3. 对输出的文本进行排序,将前面more命令输出的结果通过管道丢给sort命令,所以sort命令是对前面more命令输出的文本进行排序
    在这里插入图片描述

  4. 去重,sort跟uniq结合使用才能有效去重,所以通过管道将sort处理后输出的文本丢给uniq处理,所以uniq处理的是排序好的文本,可以进行有效去重
    在这里插入图片描述

17. od指令

语法:od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][–help][–version][文件…]
功能:用于读取所给予的文件的内容,并将其内容以八进制字码呈现出来
参数

  • -a  此参数的效果和同时指定"-ta"参数相同。
  • -A<字码基数>  选择要以何种基数计算字码。
  • -b  此参数的效果和同时指定"-toC"参数相同。
  • -c  此参数的效果和同时指定"-tC"参数相同。
  • -d  此参数的效果和同时指定"-tu2"参数相同。
  • -f  此参数的效果和同时指定"-tfF"参数相同。
  • -h  此参数的效果和同时指定"-tx2"参数相同。
  • -i  此参数的效果和同时指定"-td2"参数相同。
  • -j<字符数目>或–skip-bytes=<字符数目>  略过设置的字符数目。
  • -l  此参数的效果和同时指定"-td4"参数相同。
  • -N<字符数目>或–read-bytes=<字符数目>  到设置的字符数目为止。
  • -o  此参数的效果和同时指定"-to2"参数相同。
  • -s<字符串字符数>或–strings=<字符串字符数>  只显示符合指定的字符数目的字符串。
  • -t<输出格式>或–format=<输出格式>  设置输出格式。
  • -v或–output-duplicates  输出时不省略重复的数据。
  • -w<每列字符数>或–width=<每列字符数>  设置每列的最大字符数。
  • -x  此参数的效果和同时指定"-h"参数相同。

实例

  1. 首先创建一个文件tmp,其中的内容是 abcdef g
    在这里插入图片描述
  2. od -b tmp 这个指令是将文件tmp的内容按照ASCII数值的八进制形式,输出到标准输出中
    在这里插入图片描述
  3. od -c tmp 这个指令是使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节:
    在这里插入图片描述
  4. od -t d1 tmp 使用ASCII码进行输出,注意其中包括转义字符
    在这里插入图片描述
  5. od -A d -c tmp 使用单字节十进制进行解释
    在这里插入图片描述

18. wc指令

语法:wc [-clw][–help][–version][文件…]
功能:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
参数

  • -c或–bytes或–chars 只显示Bytes数。
  • -l或–lines 显示行数。
  • -w或–words 只显示字数。

实例

  1. 在默认情况下,wc将计算指定文件的行数,字数,以及字节数,我们先查看testfile文件的内容,
    在这里插入图片描述
  2. wc testfile 使用这个指令查看testfile文件的行数、字数和字节数 。下面的数字分别代表行数、字数和字节数
    在这里插入图片描述
  3. wc file testfile tmp 使用这个指令同时查看file、testfile和tmp三个文件的行数、字数和字节数,并在最后一行会进行统计。
    在这里插入图片描述

19. comm指令

语法:comm [-123][–help][–version][第1个文件][第2个文件]
功能:这项指令会一列列地比较两个已排序文件的差异,并将其结果显示出来,如果没有指定任何参数,则会把结果分成 3 列显示:第 1 列仅是在第 1 个文件中出现过的列,第 2 列是仅在第 2 个文件中出现过的列,第 3 列则是在第 1 与第 2 个文件里都出现过的列。若给予的文件名称为 - ,则 comm 指令会从标准输入设备读取数据。
参数

  • -1 不显示只在第 1 个文件里出现过的列。
  • -2 不显示只在第 2 个文件里出现过的列。
  • -3 不显示只在第 1 和第 2 个文件里出现过的列。

实例

  1. 首先使用cat指令查看aaa.txt和bbb.txt的文件内容
    在这里插入图片描述
  2. comm aaa.txt bbb.txt 该指令可以将排序好的两个文件进行比较,输出的第一列只包含在 aaa.txt 中出现的列,第二列包含在 bbb.txt 中出现的列,第三列包含在 aaa.txt 和 bbb.txt 中都包含的列。各列是以制表符 \t 作为定界符。
    在这里插入图片描述

20. diff指令

语法:diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][–help][–left-column][–suppress-common-line][文件或目录1][文件或目录2]
功能
参数

  • -<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
  • -a  diff预设只会逐行比较文本文件。
  • -b 不检查空格字符的不同。
  • -B 不检查空白行。
  • -c  显示全部内文,并标出不同之处。
  • -C<行数>  与执行"-c-<行数>"指令相同。
  • -d 使用不同的演算法,以较小的单位来做比较。
  • -D<巨集名称> 此参数的输出格式可用于前置处理器巨集。
  • -e 此参数的输出格式可用于ed的script文件。
  • -f  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
  • -H 比较大文件时,可加快速度。
  • -I<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
  • -i 不检查大小写的不同。
  • -l  将结果交由pr程序来分页。
  • -n 将比较结果以RCS的格式来显示。
  • -N 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
    Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
  • -p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
  • -P  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
  • -q  仅显示有无差异,不显示详细的信息。
  • -r  比较子目录中的文件。
  • -s 若没有发现任何差异,仍然显示信息。
  • -S<文件>  在比较目录时,从指定的文件开始比较。
  • -t  在输出时,将tab字符展开。
  • -T  在每行前面加上tab字符以便对齐。
  • -u,-U<列数> 以合并的方式来显示文件内容的不同。
  • -v  显示版本信息。
  • -w 忽略全部的空格字符。
  • -W  在使用-y参数时,指定栏宽。
  • -x<文件名或目录> 不比较选项中所指定的文件或目录。
  • -X<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
  • -y 以并列的方式显示文件的异同之处。

实例

  1. 首先我们使用cat指令查看aaa.txt和bbb.txt文件中的内容
    在这里插入图片描述
  2. diff aaa.txt bbb.txt 该指令查看两个文件的区别。“1,2d0” 说明第一个文件比第二个文件多了第一行和第二行的内容 “111和222” 。"6,7c4,6"说明第一个文件的第六行至第七行 和 第二个文件的第四行至第六行的内容不一样,第一个文件比第二个文件多了 “ddd和eee”。最后的说明第一个文件比第二个文件少了 "hhh、jjj和ttt"这三行内容。
    在这里插入图片描述

说明

  • "|"表示前后2个文件内容有不同
  • "<"表示后面文件比前面文件少了1行内容
  • ">"表示后面文件比前面文件多了1行内容

21. lpr指令

语法:lpr [ -P printer ]
功能:lpr实用程序用来将一个或多个文件放入打印队列等待打印。lpr 可以用来将料资送给本地或是远端的主机来处理。
参数:-p Printer: 将资料送至指定的打印机 Printer,预设值为 lp。
实例:因为这里博主没有打印机,所以我就给大家简单的写下指令把。

  1. 下面的命令行将在名为mailroom的打印机上打印report文件:
    lpr -P mailroom report 
    
  2. 使用一条打印命令可打印多个文件,下面的命令行在名为laser1的打印机上打印3个文件
    lpr -P laser1 05.txt 108.txt 12.txt 
    

22. 补充:权限相关概念理解

简介:为了方便我们下面讲解的三个指令,我在这个给大家简要介绍一下权限相关的概念理解。

Linux下有两种超级用户:超级用户(root)、普通用户。

  • 超级用户:可以在linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

文件访问者的分类(人)

  • 文件和文件目录的所有者:u—User(文件所有者)
  • 文件和文件目录所有者所在组的用户:g—Group(文件所属用户组)
  • 其他用户:o—Others(其他用户)

文件类型和访问权限(事务属性)
在这里插入图片描述
a) 文件类型

  1. d : 文件夹
  2. - : 软链接
  3. b :块设别文件(例如硬盘、光驱等)
  4. p :管道文件
  5. c :字符设备文件(例如屏幕等串口设备)
  6. s :套接口文件

b)基本权限

  • r : Read对文件而言,具有读取文件内容的权限;
  • w :Write对文件而言,具有修改文件内容的权限;
  • x :execute对文件而言,具有执行文件的权限;
  • - : 表示不具有该项权限

1. 文件权限值的表示方法

a)字符表示方法
在这里插入图片描述
b)8进制表示方法
在这里插入图片描述

2. 结合指令详细理解Linux权限管理

下面的两幅图片我结合指令详细的讲解了Linux的权限管理和文件属性。
在这里插入图片描述
在这里插入图片描述

23. chown指令

语法:chown [选项] 用户 文件名
功能:用于设置文件所有者和文件关联组的命令,只有属于组的文件拥有者和root才可以改变文件的权限。注意:你首先需要拥有这个用户你才能够进行修改。
常用选项

  • R : 处理指定目录以及其子目录下的所有文件

实例

  1. chown sjc aaa.txt 这个指令将文件的所有者信息从root更改为了sjc用户,此时除了sjc用户或者root,其他用户对这个文件不能进行修改。
    在这里插入图片描述
  2. chown :sjc aaa.txt 这个指令将文件的所属组信息更改为了sjc。注意如果是更改拥有者,不需要加" : " ,如果是需要更改所属组需要添加。
    在这里插入图片描述
  3. chown -R sjc:sjc * 这个指令将当前目录下的所有文件的拥有者和所属组都更改为了sjc。注意此时因为包含目录,所以使用 -R 选项可以处理指定目录以及其子目录下的所有文件。
    在这里插入图片描述

24. chattr指令

语法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录…]
功能:可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

  • a:让文件或目录仅供附加用途。
  • b:不更新文件或目录的最后存取时间。
  • c:将文件或目录压缩后存放。
  • d:将文件或目录排除在倾倒操作之外。
  • i:不得任意更动文件或目录。
  • s:保密性删除文件或目录。
  • S:即时更新文件或目录。
  • u:预防意外删除。

参数

  • -R 递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v<版本编号> 设置文件或目录版本。
  • -V 显示指令执行过程。
  • +<属性> 开启文件或目录的该项属性。
  • -<属性> 关闭文件或目录的该项属性。
  • =<属性> 指定文件或目录的该项属性。

实例

  1. 首先我们用lsattr指令查看file文件的文件属性,可以看出file文件的属性只有一个" e " 可扩展属性
    在这里插入图片描述
  2. chattr +i file 此时file文件不能任意改动,我们可以用这个指令防止系统中某个关键文件被修改
    在这里插入图片描述
  3. 可以看到此时我们想要修改file文件的时间,但是请求被拒绝了
    在这里插入图片描述
  4. chattr +a messages 让文件messages只能往里面追加数据,但不能删除,适用于各种日志文件
    在这里插入图片描述
  5. 此时我们删除messages的操作被拒绝了
    在这里插入图片描述

25. chmod指令

语法:chmod[参数] 权限 文件名
功能:设置文件的访问权限,只有属于组的文件拥有者和root才可以改变文件的权限
常用选项:

  • R :递归修改目录文件的权限

chmod命令权限值的格式
①用户表示符+/-=权限字符

  • +:向权限范围增加权限代号所表示的权限。
  • - :向权限范围取消权限代号所表示的权限。
  • = :向权限范围赋予权限代号所表示的权限。
  • 用户符号:
    • u :拥有者
    • g :拥有者同组用
    • o :其他用户
    • a :所有用户

实例:
在这里插入图片描述
②三位八进制数字
因为文件的权限这里是固定位置的,用户、用户组其他用户的读、写、执行权限是固定位置的,所以此时如果有读的权限,那么该位置就是 r ,如果没有就是 - ,这个在计算机中可以用二进制来表示,有这个权限就是1,没有这个权限就是0。所以我们这里可以用三位八进制数字来设置文件的权限。
实例
在这里插入图片描述
【常用选项 R 的使用方法】
我们不使用选项的指令chmod来更改下文件夹newdir的权限:
在这里插入图片描述
我们可以发现此时文件夹的权限更改了,但是文件夹里的文件权限并没有更改。
接着我们写指令带上选项 R ,发现这个时候不仅文件夹的权限更改了,文件的权限也更改了。
在这里插入图片描述

26. Linux系统中文件与目录操作类命令用法的简要概括

在这里插入图片描述

参考文献

  1. Linux管道符|命令使用详解
  2. Linux强大的文本搜索命令:egrep - 嵌入式er的文章
  3. linux下find这一强大命令的用法详解 - minichao的文章
  4. Linux 教程 | 菜鸟教程
  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值