草庐IT

Linux系列 目录和文件管理

网络豆 2023-04-03 原文

  • 作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

 

前言

简介

本章重点

一.检查文本内容

​编辑

1.cat命令——显示并连接(Concatenate)文件的内容

2.more和less命令——分页查看文件内容

3.head和tail命令——查看文件开头或末尾的部分内容

 二.统计和检索文件内容

1.wc命令—统计文件内容中的单词数量(Word Count)行数等信息

2.grep命令——检索、过滤文件内容


前言

本章将会讲解Linux中的目录和文件管理


简介

在之前的文章中,学习了Linux命令的格式,以及目录和文件管理的基本命令操作,本章将进一步学习管理目录和文件的高级操作,主要包括查看和检索文件内容,备份和恢复文档,以及使用vi文本编辑器创建或修改文本文件。


本章重点

  1. 文件内容的查看及检索
  2. 压缩归档文件的制作与释放

一.检查文本内容

对于一个文本格式的配置文件,可以利用不同的查看方式来获知文件内容,如直接显示整个文件内容,分页查看文件内容,或者只查看文件开头或末尾的部分内容,在Linux操作系统中,分别由不同的命令来实现这些操作。

1.cat命令——显示并连接(Concatenate)文件的内容

cat命令本来用于连接(Concatenate)多个文件的内容,但在实际使用中更多地用于查看文件内容.cat命令是应用最为广泛的文件内容查看命令,使用该命令时,只需要把要查看的文件路径作为参数即可 。

例如:以下操作就可以查看/etc/sysconfig/network-scripts/ifcfg-ens33 配置文件中的内容,并了解第一块以太网卡的配置信息。

[root@localhost -]# cat /etc/sysconfig/network-scripts/ifcfg-ana33

如果需要同时查看多个文件的内容,可以添加多个文件路径作为查看对象。例如,以下操作将依次显示/eto/redhat-release,/proc/version文件的内容,前者记录了 CnetOS系统的发行版本信息。后者记录了系统内核及开发环境,时间等信息。

[root@localhost -]# cat /etc/redhat-release /proc/veraion


2.more和less命令——分页查看文件内容

使用cat 命令可以非常简单地直接显示整个文件的内容,但是当文件中的内容较多时,很可能只能看到最后一部分信息,文件前面的大部分内容都来不及看到。而more和less命令通过采用全屏的方式分页显示文件,便于我们从头到尾仔细地阅读文件内容。

 more 命令是较早出现的分页显示命令,表示文件内容还有更多(more)的意思,less命令是较晚出现的分页显示命令,提供了比早期more命令更多的一些扩展功能。两个命令的用法基本相同。

使用more命令查看超过一屏的文件内容时,将进行分屏显示,并在左下角显示当前内容在整个文件中的百分比。在阅读界面中,可以按Enter键向下逐行滚动查看,按Space键可以向下翻一屏按b键向上翻一屏,按q键退出并返回原来的命令环境。

[root@localhoat -]# more /etc/httpd/conf/httpd.conf

more命令除了可以分屏查看文件内容以外,还可以结合管道符号|分屏查看执行命令时的输出息这在命令输出内容较多的情况下特别有用。例如,以下操作可以分页查看/etc/目录下扩展名为“conf”的配置文件。

[root@localhost -]# ls -lh /atc/*.conf | more

 less命令使用方法与more命令基本类似,但是比more更好的是,less命令结合管道符号“|”分屏查看执行命令时输出的信息时,既可以向下翻页,也可以向上翻页,而more命令只能向下翻页,不能向上翻页。


3.head和tail命令——查看文件开头或末尾的部分内容

head和tail是一对作用相反的命令,前者用于显示文件开头的一部分内容,后者用于显示文件末尾的一部分内容。可以使用“-n”选项(n为具体的行数)指定需要显示多少行的内容,若不指定行数默认只显示十行。

执行“head一4/etc/passwd命令,可以查看用户账号文件/etc/passwd开头第一行至第四行的部分内容。

[root@localhost ~]# head -4 /etc/passwd

 tail命令则正好相反,用于查看文件末尾的内容,tail命令通常用于查看系统日志(因为较新的日志记录总是添加到文件最后),以便观察网络访问,服务调试等相关信息,配合“-f”选项使用时,还可以跟踪文件尾部内容的动态更新,便于实时监控文件内容的变化。

例如,以下操作可以查看系统公共日志文件/var/log/messages的最后十行内容,并在末尾跟踪显示该文件中新记录的内容

(按Cul+C组合键终止)。

[root@localhost -]# tail -f /var/log/messages


 二.统计和检索文件内容

在维护Linux操作系统的过程中,除了查看文件内容以外,有时还需要对文件内容进行统计,或者查找符合条件的文本内容。下面将学习统计和检索文件内容的两个命令工具。


1.wc命令—统计文件内容中的单词数量(Word Count)行数等信息

wc命令用于统计文件内容中包含的行数,单词数量,字节数等信息,使用文件名作为参数,可以同时统计多个文件,较常用的选项如下所述.

  • -c:统计文件内容中的字节数.
  • -1:统计文件内容中的行数.
  • -w:统计文件内容中的单词个数《以空格或制表位作为分隔).

当文件的行数,单词数或字节数具有特定的意义时,使用 wc命令可以巧妙地获得一些特殊信息

例如:Linux操作系统中的用户账号数据保存在/etc/passwd文件中,其中每一行记录对应一个用户则以下操作可以统计出当前Linx操作系统中拥有的用户账号数量,具体操作如下:

[root@localhost -]# wo -1 /eto/passwd

若将wc命令与管道符号一起使用,还可以对命令输出结果进行统计,例如,若要统计/etc/目录下共包含多少个扩展名为”.conf”的文件,可以先通过“find/etc-name“*.conf*”命令找出符合条件的文件位置,由于fird命令的输出结果也是每行一个文件记录,因此只需结合管道符号执行“wc-I”操作即可得出符合条件的文件数量,具体操作如下。

[root@]ocalhont -]# find /etc name "*.conf" | wo -l

使用不带任何选项的wc命令时,默认将统计指定文件的字节数、行数、单词个数(相当于同时使用“-c”“-1”“-w”三个选项),例如,以下操作统计出/etc/hosts文件中共包含2行,10个单词、158字节的内容,然后通过‘cat/etc/hosts”命令列出文件内容,可核对统计结果是否正确。

[root@localhost -]# wo /etc/hosts

2.grep命令——检索、过滤文件内容

grep命令用于在文件中查找并显示包含指定字符串的行,可以直接指定关键字符串作为查找条件,也可以使用复杂的条件表达式(例如.““word”表示以word开头.“words”表示以word结尾,“s”表示空行),使用grep命令的基本格式如下:

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

grep命令较常用到的几个选项如下。

  • -i:查找内容时忽略大小写(lgnore Case)
  • -v:反转查找(hnvert),即输出与查找条件不相符的行

例如:执行“grep“tp”/etc/passwd”命令,可以在账号文件/etc/passwd中查找包含“ftp”字符串的行,实际上输出了名为ftp的用户账号的信息,具体操作如下:

[root@localhost -]# grop "ftp" /etc/pasavd

在维护Linux操作系统的过程中,经常会遇到包含大量内容的配置文件,而其中往往包含了许多空行和以“#”开头的注释文字,当只需要分析其中的有效配置信息时,这些空行和注释文字的存在不利于快速浏览,使用grep命令可以过滤掉这些无关信息,例如.以下操作可以显示/etc/yum.conf文件中以“#”开头的行和空行以外的内容。


 创作不易,求关注,点赞,收藏,谢谢~  

有关Linux系列 目录和文件管理的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  4. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  5. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  6. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  7. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  10. Ruby 写入和读取对象到文件 - 2

    好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信

随机推荐