指令目录
- 简介
- 1. pwd指令
- 2. cd指令
- 3. ls指令
- 4. cat指令
- 5. grep、fgrep和egrep指令
- 1. grep指令
- 2. fgrep指令
- 3. egrep指令
- 6. find指令
- 7. sort指令
- 8. touch指令
- 9. cp指令
- 10. mv指令
- 11. rm指令
- 12. head指令
- 13. tail指令
- 14. more指令
- 15. less指令
- 16. 补充:管道用法详解
- 17. od指令
- 18. wc指令
- 19. comm指令
- 20. diff指令
- 21. lpr指令
- 22. 补充:权限相关概念理解
- 1. 文件权限值的表示方法
- 2. 结合指令详细理解Linux权限管理
- 23. chown指令
- 24. chattr指令
- 25. chmod指令
- 26. Linux系统中文件与目录操作类命令用法的简要概括
- 参考文献
简介
博主整理了Linux系统中文件与目录操作类指令的用法,因为每条指令的参数和选项都比较多,而且其中有的选项并不常用,所以这里博主只是简要的介绍下每条指令的常见用法和功能,并进行实操截图,方便大家学习,最后博主还列出了文件与目录操作类指令用法的简要概括。如果文章中有出现错误欢迎大家私信或在评论区指出,谢谢大家!
1. pwd指令
语法:pwd
功能:显示用户当前所在的目录
常用选项:无
实例:我现在以root身份登陆xshell,看看我们登录后处在什么目录中。
这里显示我们当前在root目录中。我们现在去根目录看下,这里可以看到我们登录进入的root目录。所以pwd可以显示用户当前所在的目录。至于什么是根目录以及Linux的结构,我们在下面cd的指令中会给大家介绍。
2. cd指令
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定目录下。
实例:
- 这是现在root目录中存在的子目录dir。
- 我们现在使用cd dir进入dir目录,可以从pwd显示的路径看出来我们已经进入了dir目录中。
- 如果我此时想要返回root目录,我只需要cd … 就可以了
- 此时我在root目录下又创建了一个dir2目录,可以看出root中此时有两个子目录dir和dir2。我通过使用绝对路径进入了dir2目录中。
- 现在我在dir2目录中,使用相对路径进入root目录下的dir目录。
- 现在我使用cd - 指令返回到我最近访问的目录(也就是上次访问的目录),通过前面的步骤知道我在访问dir目录前,我在dir2目录中,输入指令后的结果如下图所示。
- 使用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 递归列出子目录下的文件。
实例:
- ls 指令是直接显示当前目录的文件,以文件名的形式展示。
- ls -a 指令是将当前目录的所有文件,包括隐藏文件都显示出来,在linux中,以“."(点号)开头的文件是隐藏文件。
- ls -l 指令是显示当前目录的长列表,将文件用更详细的方式展示出来。
补充:我相信很多人对于文件名前面这一大串的信息不了解意思,有什么作用,下面我给大家简要概括下linux的文件属性的知识。下面是文件属性简要解释图:
文件除了有文件大小、文件修改时间和文件类型的信息,还包括权限等信息,这样就可以限制我们的文件可以给谁看,谁可以进行修改,在文件的权限概念理解中我将详细为大家讲明,请大家关注我的下一篇博客,谢谢。
- ls -al 在linux中,指令的常用选项是可以叠加使用的,将两个选项的功能进行组合(不区别选项的前后顺序),这个指令是将当前目录的所有文件(包括隐藏文件)的详细信息展示出来。注意:观察下面的图片,其中有 “.” 和 “..” 两个目录,这两个目录分别代表当前目录和上级目录,方便我们在书写代码时候调用,例如我想知道上级目录的信息,我就可以这样写:ls -l ../ ,这样就可以观察到了
- ls -il 指令是打印文件的索引号(inode号),索引会显示在第一列。
- ls -hl 指令是将文件的大小以适合人阅读的方式展示,在linux中,文件都是以KB的形式进行展示的,但是有的文件特别大,此时用KB就不适宜我们阅读,使用 -h 选项后,可能就会以MB的形式(具体看你的文件有多大)进行展示。
- ls -hlS 这个指令可以给当前目录下的文件按照文件大小进行排序,可以看到一开始我们的目录中的三个文件的排列顺序从大到小是dir -> dir2 -> myfile.txt ,但是当我将myfile.txt 文件中写入10000个数据后,在进行排序,此时排列顺序从大到小就是myfile.txt -> dir -> dir2 。
- ls -d */ 这个指令是将当前目录下的所有目录都表示出来
- ls -rl 这个指令是将当前目录下的文件按照逆序的方式进行显示。
- ls -Rl 这个指令是递归列出当前目录下的子目录
- ls -lt 这个指令是将当前目录下的所有文件按照时间进行排序,文件最新修改时间日期越早的排在越上面
- ls -nl 用数字方式列出项的所有者和所有组( 即UID和GID)
4. cat指令
语法:cat [选项] [文件]
功能:查看目标文件的内容
常用选项:
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行
实例:
- cat file2.txt 这个指令是查看当前目录下的file2.txt的内容
- cat -b file2.txt 这个指令是查看当前目录下的file2.txt的内容并给对内容中的非空输出行编号
- cat -n file2.txt 这个指令是查看当前目录下file2.txt的内容并给内容中的所有号都进行编号
- cat -s file2.txt 不输出多行空行
5. grep、fgrep和egrep指令
1. grep指令
语法:grep [选项] 搜索字符串 文件
功能:在文件夹中搜索字符串,将找到的行打印出来
常用选项:
- -i 忽略大小写的不同,所以大小写视为相同
- -n 顺便输出行号
- -v 反向选择,亦即显示出没有“搜索字符串”内容的那一行
- -c 计算找到”搜索字符串“的次数
实例:
- grep “Hello” file2.txt 此时是查找file2.txt文件中的 “Hello” 字符串
- grep -i “hello” file2.txt 此时是不区分字符串的大小写,查找file2.txt文件中的"hello"字符串
- grep -n “Linux” file2.txt 此时查找字符串,并且顺便输出行号
- grep -v “Linux” file2.txt 此时查找的字符串,显示出没有“搜索字符串”内容的那一行
- 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这里主要展示匹配正则表达式的实例
- 首先使用cat命令查看tmp文件中的内容
- 要匹配以特定单词开头的行,可以使用 ^ 符号和单词模式。例如,要匹配以 “Hello” 开头的行,可以运行以下命令:
- 要匹配以特定单词结尾的行,可以使用 $ 符号和单词模式。例如,要匹配以 “Linux” 结尾的行,可以运行以下命令:
- 要匹配包含数字的行,可以使用字符类 [:digit:] 或方括号 [0-9]。例如,要匹配包含数字的行,可以运行以下命令:
- 要匹配重复出现的字符,可以使用 *、+ 或 ? 符号。例如,要匹配重复出现的字母 “o”,可以运行以下命令:
- 要匹配分组模式,可以使用小括号 ()。例如,要匹配 “Hello” 或 “Linux”,可以运行以下命令:
- 要匹配重复次数的模式,可以使用 {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 天前(指定那一天)更改过属性的文件或目录。
实例:
- 首先查看下当前目录下的所有文件和目录信息
- 使用find按文件名查找,查找当前目录及子目录下以.txt文件结尾的文件
- 使用find按文件大小查找,查找当前目录及子目录下大于10k的文件
- 使用find命令按照文件的类型查找,查找当前目录及子目录下的目录
- 使用find命令查找10分钟内修改过的文件
- 使用find命令按用户或组查找文件拥有者和所属组是cy的文件
- 还有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]] 按指定的列进行排序。‘
实例:
- sort myfile.txt 这个指令是对文件进行默认排序,以默认的方式对文本文件的每一列按照ASCII码值进行排列,并将结果输出到标准输出
- 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 列出版本信息
实例:
- touch file2.txt这个指令是修改文件"testfile"的时间属性为当前的系统时间。
- 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:不复制文件,只是生成链接文件。
实例:
- cp file2.txt …/dir1 这个指令是将当前文件夹下的file2.txt文件复制到上级目录的dir1目录中。
- cp -r ..dir2 ..dir1的意思是将dir2目录复制到上级中的dir1目录中。注意:用户使用该指令复制目录时,必须使用 -r 或 -R 。这是为了递归将目录中的所有内容都复制到新目录中。
- cp -i file2.txt ..dir1 这个指令是复制文件,并在文件以及存在的时候进行确认,确认是否要进行覆盖
10. mv指令
语法:mv [options] source dest 或 mv [options] source… directory
功能:用来为文件或目录改名,或将文件或目录移入其他位置
选项:
- -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作
实例:
- mv file2.txt myfile.txt 这个指令是将 file.txt 文件改名为 myfile.txt
- mv ../dir2 ../dir1 这个指令是将dir2目录放入dir1目录中。注意:如果dir1目录不存在,那么该命令会将dir2目录改名为dir1
- mv ../dir1/* . 这个指令是将dir1目录中的所有文件和目录转移到当前目录下
11. rm指令
语法:rm [options] name ------ name包括文件名或者目录名,也可以是多个文件或目录
功能:用于删除一个文件或者目录
选项:
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
实例:
- rm file2.txt 这个指令是删除当前目录中的file2.txt文件,并且在删除时需要进行询问确认
- rm -r dir1 这个指令是删除目录的。注意:在删除目录的时候必须要加上选项 -r ,此时删除的时候也会进行询问确认
- rm -rf dir1 这个指令是删除目录,并且不需要进行确认,直接强制删除
12. head指令
语法:head [options] files
功能:用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
常用选项:
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
实例:
- head file2.txt 这个指令是显示file2.txt文件的开头10行,它是默认带参数 -n 10的,也就是该指令与 head -n 10 file2.txt 等价
- head -n 3 file2.txt 这个指令是显示file2.txt文件的开头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秒
实例:
- tail myfile.txt 这个指令会显示文件的最后十行
- tail -f myfile.txt 这个指令会跟踪名为 myfile.txt 文件的增长情况,并显示 myfile.txt 文件的最后 10 行。当将某些行添加至 myfile.txt 文件时,tail 命令会继续显示这些行。 显示一直继续,直到按下(Ctrl-C)组合键停止显示。这里因为图片无法演示动态的文件变化,所以就不进行实例展示了。
- tail -n 20 myfile.txt 这个指令会显示 myfile,txt 文件最后20行的内容
- 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
实例:
- more file 首先展示file文件的内容
- more -s file 这个指令会在展示file文件的时候将连续两行以上空白行则以一行空白行显示
- 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]: 向上翻动一页
实例:
- 首先使用less指令查看testfile文件的内容
- less -s testfile 这个指令会在展示file文件的时候将连续两行以上空白行则以一行空白行显示
- less testfile myfile 此时我们可以浏览多个文件,因为这里不太好展示,所以我就不放图片了。
less testfile myfile
说明:
输入 :n后,切换到 myfile
输入 :p 后,切换到testfile
16. 补充:管道用法详解
引言:管道用法是Linux中非常重要的知识点,这里我找到了一篇非常不错的博客:链接: Linux管道符|命令使用详解。我会借用他的博客的例子给大家再进行讲解。
“|”是Linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
例如:
cat hello.sh | sort | uniq | grep 'better’
操作实例:
- 以分页的形式查看自己的历史记录
history | less
history 是显示历史记录中你输入过的命令,直接使用时会将所有命令一次列出,不方便查看。有了管道符“|”之后,默认只显示第一屏内容,可以通过按回车键或滑动鼠标滚轮来显示其它内容,结束后按“Q”键退出。
- 利用echo命令查看管道的操作效果
可以很明显的看出,单独使用echo命令时直接将“2+4”作为文本输出了,而添加管理后,又将输出结果“2+4”作为输入内容传递给了计算器语言bc,对“2+4”经过运算后输出。 - 对输出的文本进行排序,将前面more命令输出的结果通过管道丢给sort命令,所以sort命令是对前面more命令输出的文本进行排序
- 去重,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"参数相同。
实例:
- 首先创建一个文件tmp,其中的内容是 abcdef g
- od -b tmp 这个指令是将文件tmp的内容按照ASCII数值的八进制形式,输出到标准输出中
- od -c tmp 这个指令是使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节:
- od -t d1 tmp 使用ASCII码进行输出,注意其中包括转义字符
- od -A d -c tmp 使用单字节十进制进行解释
18. wc指令
语法:wc [-clw][–help][–version][文件…]
功能:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
参数:
- -c或–bytes或–chars 只显示Bytes数。
- -l或–lines 显示行数。
- -w或–words 只显示字数。
实例:
- 在默认情况下,wc将计算指定文件的行数,字数,以及字节数,我们先查看testfile文件的内容,
- wc testfile 使用这个指令查看testfile文件的行数、字数和字节数 。下面的数字分别代表行数、字数和字节数
- 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 个文件里出现过的列。
实例:
- 首先使用cat指令查看aaa.txt和bbb.txt的文件内容
- 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 以并列的方式显示文件的异同之处。
实例:
- 首先我们使用cat指令查看aaa.txt和bbb.txt文件中的内容
- 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。
实例:因为这里博主没有打印机,所以我就给大家简单的写下指令把。
- 下面的命令行将在名为mailroom的打印机上打印report文件:
lpr -P mailroom report
- 使用一条打印命令可打印多个文件,下面的命令行在名为laser1的打印机上打印3个文件
lpr -P laser1 05.txt 108.txt 12.txt
22. 补充:权限相关概念理解
简介:为了方便我们下面讲解的三个指令,我在这个给大家简要介绍一下权限相关的概念理解。
Linux下有两种超级用户:超级用户(root)、普通用户。
- 超级用户:可以在linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
文件访问者的分类(人)
- 文件和文件目录的所有者:u—User(文件所有者)
- 文件和文件目录所有者所在组的用户:g—Group(文件所属用户组)
- 其他用户:o—Others(其他用户)
文件类型和访问权限(事务属性)
a) 文件类型
- d : 文件夹
- - : 软链接
- b :块设别文件(例如硬盘、光驱等)
- p :管道文件
- c :字符设备文件(例如屏幕等串口设备)
- s :套接口文件
b)基本权限
- r : Read对文件而言,具有读取文件内容的权限;
- w :Write对文件而言,具有修改文件内容的权限;
- x :execute对文件而言,具有执行文件的权限;
- - : 表示不具有该项权限
1. 文件权限值的表示方法
a)字符表示方法
b)8进制表示方法
2. 结合指令详细理解Linux权限管理
下面的两幅图片我结合指令详细的讲解了Linux的权限管理和文件属性。
23. chown指令
语法:chown [选项] 用户 文件名
功能:用于设置文件所有者和文件关联组的命令,只有属于组的文件拥有者和root才可以改变文件的权限。注意:你首先需要拥有这个用户你才能够进行修改。
常用选项:
- R : 处理指定目录以及其子目录下的所有文件
实例:
- chown sjc aaa.txt 这个指令将文件的所有者信息从root更改为了sjc用户,此时除了sjc用户或者root,其他用户对这个文件不能进行修改。
- chown :sjc aaa.txt 这个指令将文件的所属组信息更改为了sjc。注意如果是更改拥有者,不需要加" : " ,如果是需要更改所属组需要添加。
- chown -R sjc:sjc * 这个指令将当前目录下的所有文件的拥有者和所属组都更改为了sjc。注意此时因为包含目录,所以使用 -R 选项可以处理指定目录以及其子目录下的所有文件。
24. chattr指令
语法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录…]
功能:可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
- a:让文件或目录仅供附加用途。
- b:不更新文件或目录的最后存取时间。
- c:将文件或目录压缩后存放。
- d:将文件或目录排除在倾倒操作之外。
- i:不得任意更动文件或目录。
- s:保密性删除文件或目录。
- S:即时更新文件或目录。
- u:预防意外删除。
参数:
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v<版本编号> 设置文件或目录版本。
- -V 显示指令执行过程。
- +<属性> 开启文件或目录的该项属性。
- -<属性> 关闭文件或目录的该项属性。
- =<属性> 指定文件或目录的该项属性。
实例:
- 首先我们用lsattr指令查看file文件的文件属性,可以看出file文件的属性只有一个" e " 可扩展属性
- chattr +i file 此时file文件不能任意改动,我们可以用这个指令防止系统中某个关键文件被修改
- 可以看到此时我们想要修改file文件的时间,但是请求被拒绝了
- chattr +a messages 让文件messages只能往里面追加数据,但不能删除,适用于各种日志文件
- 此时我们删除messages的操作被拒绝了
25. chmod指令
语法:chmod[参数] 权限 文件名
功能:设置文件的访问权限,只有属于组的文件拥有者和root才可以改变文件的权限
常用选项:
- R :递归修改目录文件的权限
chmod命令权限值的格式
①用户表示符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限。
- - :向权限范围取消权限代号所表示的权限。
- = :向权限范围赋予权限代号所表示的权限。
- 用户符号:
- u :拥有者
- g :拥有者同组用
- o :其他用户
- a :所有用户
实例:
②三位八进制数字
因为文件的权限这里是固定位置的,用户、用户组其他用户的读、写、执行权限是固定位置的,所以此时如果有读的权限,那么该位置就是 r ,如果没有就是 - ,这个在计算机中可以用二进制来表示,有这个权限就是1,没有这个权限就是0。所以我们这里可以用三位八进制数字来设置文件的权限。
实例:
【常用选项 R 的使用方法】
我们不使用选项的指令chmod来更改下文件夹newdir的权限:
我们可以发现此时文件夹的权限更改了,但是文件夹里的文件权限并没有更改。
接着我们写指令带上选项 R ,发现这个时候不仅文件夹的权限更改了,文件的权限也更改了。
26. Linux系统中文件与目录操作类命令用法的简要概括
参考文献
- Linux管道符|命令使用详解
- Linux强大的文本搜索命令:egrep - 嵌入式er的文章
- linux下find这一强大命令的用法详解 - minichao的文章
- Linux 教程 | 菜鸟教程