您的位置:首页 > 运维架构 > Linux

Linux中对目录和文件管理所使用的命令(操作部分,可全程跟做!)

2019-08-14 01:53 1396 查看

我们继续接着上篇和大家说说Linux中对目录和文件管理所使用的命令的操作:
此处需要用到的软件有安装好CentOS 7的VMware虚拟机和已经连接过CentOS 7的Xshell远程控制终端。
我们打开VMware中的CentOS 7登录到root账户,我们打开终端之后先安装一下httpd的服务,因为此次实验中我们需要用到其中的配置文件,具体命令如下:yum install httpd

中途需要输入两次y并敲回车确认安装,最终完成后如下图:

此时我们需要如下命令启动此服务:systemctl start httpd,再输入ifconfig查看IP,为了能够访问我们建立的服务,还需要输入命令关闭防火墙:systemctl stop firewalld.service
再输入setenforce 0,操作过程如下:

这个时候我们把得到的地址192.168.195.136,输入到我们的浏览器中,进入界面之后就会得到我们用CentOS 7搭建的Apache的网站

这个时候如果我们想查看它其中的配置文件需要回到命令界面输入:vim /etc/httpd/conf/httpd.conf(进入到的是配置文件目录下的配置文件)

  • 此时我们敲回车进入此文件之后发现里面的内容有很多,此处一共有353行,一个屏幕无法同时承载这么多行,此时如果我们使用:cat /etc/httpd/conf/httpd.conf这条查看命令,此时我们只能看到尾部的内容,因为此时我们处在图形化界面的终端,所以可以友好的让我们使用鼠标的滚轮可以上下滚动界面查看内容
  • 但是现实环境中我们有可能不会遇上这种图形化界面的环境,而是init 3的字符界面终端,此时我们输入账户:root,密码:123123,在输:cat /etc/httpd/conf/httpd.conf进入到刚刚我们看到的配置文件中,此时我们是无法使用鼠标的滚轮实现上下翻页的功能的:

  • 此时如果读取的文件中内容过多,不能同时承载太多行,字符界面终端进行处理时,只能看到末尾的内容,这时我们就可以使用到more这条命令来进行处理了。
    输入:more /etc/httpd/conf/httpd.conf,这时进入的是一种阅览的模式,它会从头开始显示,然后在行末显示出此段位于文章篇幅的%多少的位置:

    接下来我们还可以如下操作:
  • 按回车逐行翻滚动
  • 按空格向下翻一屏(随着页数的翻动篇幅位置的百分比也会跟着变化
  • 按b向上翻页
    我们一直空格翻页到94%的位置,再次按空格,本来应该下面还有一页的,但是此时自动退出了, 得到如下界面:

    所以这条命令的问题就在于:我们不知道哪一页是最后一页,只要一不小心点快了就会自动退出了,还要重头再来,无法再回看,此时我们就可以用less这条命令来进行处理。
    输入:less /etc/httpd/conf/httpd.conf,此时进入的就是开头的界面。

    接下来我们还可以如下操作:
  • 按page up和page down上下翻页
  • 按b上页
  • 按空格下一页
  • 按/可以查找,例如:server,它会把所有带这个单词的都给列出来
  • 按n会针对查找到的词进行逐个向下匹配
  • 按N会针对查找到的词进行逐个向上匹配
  • 按空格(一直按),到最末页他不会直接退出,会在末行显示END提示结束,此时我们按b是可以进行回看的
  • 按q退出此模式

接下来的

head
tail
命令是按行进行查询的,一般我们在需要查看账户账号信息的时候需要用到,接下来我们进行试验(提前将Xshell与centos 7连接好),进入Xshell的界面:
查询账户文件的话输入:vim /etc/passwd,得到如下图:

如果我们看前10行,输入:head /etc/passwd:

如果我们只看前三行,输入:head -3 /etc/passwd:

如果我们只看尾十行,输入:tail /etc/passwd:

接下来我们进行统计命令(wc)的操作:
输入:wc /etc/httpd/conf/httpd.conf:

其中:353代表行、1801代表单词数、 11753代表字节数
如果想分别统计格式如下:

接下来我们进行检索和过滤命令(grep)的操作:
输入cd /etc/httpd/conf/进入相对应目录找到配置文件,再输入vim httpd.conf敲回车,这时会发现其中有#号为开头的是注释,是描述信息,不起任何作用;不带#的就是功能,如果我们在功能前面加上#,那么功能就会失效
此时我们只看文件中有#号的行,输入:grep “#” httpd.conf,敲回车得到所有#号的行:

如果我们在字符终端中这样输入会是什么结果,输入:grep “#” /etc/httpd/conf/httpd.conf,敲回车此时只能看到末尾的看不完全,如下图:

这种状态下我们应该怎么办?
1.我们输入:grep “#” /etc/httpd/conf/httpd.conf > /opt/httpd01.txt(其中>为重定向符号),此时信息导出生成到opt文件夹当中,并且起名叫httpd01.txt
2.再输入:cd /opt/进入此目录
3.再输入ls查看详细信息,此时显示有生成的httpd01.txt的文件在此文件夹下
4.再输入:vim httpd01.txt进入查看下,这时我们能够看到所有带#号的行就被全部导入到其中了,具体操作和结果如下图:


我们还可以进行反向过滤(此时过滤的就是所有不带#号的行):
输入:grep -v “#” /etc/httpd/conf/httpd.conf > /opt/httpd01.txt(此处我们将过滤的信息导入到的还是刚刚的文件当中,我们看看会有什么样的结果)
再输入:vim httpd01.txt进入查看下,这时我们能够看到所有不带#号的行就被全部导入到其中了,而原先带#号的内容则没有了,结果如下图:

此时我们总结如下:重定向在此处虽然能够将导出的内容生成到一个文件当中,但是如果是同名文件,会直接覆盖原本里面的内容,而且不会提醒。
如果我们想在不动到文件中原先内容的情况下,再继续追加应该如何操作呢?
输入:grep “#” /etc/httpd/conf/httpd.conf >> opt/httpd01.txt(>>为追加符号,此时新增的内容不会覆盖原有的内容,会跟在之前的内容后面进行添加)此处我们过滤的是带有#号的行
再输入:vim httpd01.txt进入查看下,这时我们能够看到前面是不带有#号的行,翻页之后有#行被添加在后面,结果如下图:

我们还可以尝试一下cat能不能配合重定向符号使用?
输入cat /etc/passwd > /opt/abc.txt
再输入ls查看详细信息
再输入vim abc.txt,查看其中信息,这时我们发现所有的账户信息被导入在这个文件中了

我们还可以尝试一下cat能不能配合重定向符号使用?
输入cat /etc/passwd > /opt/abc.txt
再输入ls查看详细信息
再输入vim abc.txt,查看其中信息,这时我们发现所有的账户信息被导入在这个文件中了
输入:grep -v “#” /etc/httpd/conf/httpd.conf > /opt/httpd02.txt(过滤没有#号的行导入到opt文件夹中,同时重命名为httpd02.txt)
再输入:vim /opt/httpd02.txt,此时我们看到显示出的信息都是没有#号的,但是我们同时也发现其中是有空行的。

这时我们应该如何过滤空行呢?
此时如果我们输入:grep -v “^$” /opt/httpd02.txt > /opt/httpd02.txt,会显示如下内容:

因为这个文件此时正在被使用,就无法执行此命令!
总结:grep不能同时操作同一个文件,不能同时对一个文件做导入导出
那我们只能新生成一个文件并把内容导过去,输入:grep -v “^$” /opt/httpd02.txt > /opt/httpd03.txt
再输入:vim /opt/httpd03.txt,此时我们再进入此新文件中查看内容,但是里面是空的,其中的问题是因为在之前的导入过程中因为进程的问题,内容在被转移过程中直接消失,只要没有中途的失败,那么得到的正确结果应该是过滤了空行的显示,如下图:

此时如果我们想显示有几个用户可以登录系统(只显示数字):
输入:grep “bash$” /etc/passwd | wc -1敲回车,此时会显示数字为2(此处“|”为管道符号,把前面一条命令的操作结果转给下一条命令继续执行),结果如下图:

接下来我们对我们之前建立的txt文件进行压缩和解压缩的操作:
首先我们找到opt下的文件,输入:cd /opt/
再输入:ls,可以看到我们之间创建的三个txt文件,而且这几个文件中都是有内容的
我们现在直接在此目录下直接创建压缩包,该如何操作?
第一步:输入:gzip -9 http01.txt敲回车,这时压缩包创建完成
第二步:输入:ls敲回车,这个时候我们可以看到httpd01.txt.gz格式的压缩包文件在目录中了,但是此时我们也可以发现源文件消失,过程结果如下图:

结论:直接用gzip或bzip2格式创建压缩包时,一旦创建压缩包之后,源文件就会消失

解压的操作如下:
第一步:输入:gzip -d http01.txt.gz敲回车,这时候解压缩完成
第二步:输入:ls敲回车,这个时候我们可以看到httpd01.txt.gz格式的压缩包从目录中消失,此时http01.txt的文件已经被解压出来,过程结果如下图:

总结:直接用gzip -d/9或bzip2 -d/9格式解压缩包时,一旦文件被解压出来之后,压缩包就会消失

那么我们用什么样的方法才能像微软一样,使源文件不消失呢?
此时我们就要用到归档命令,tar命令
例如此时我们要把目录下刚刚的httpd01.txt换成gzip格式:
第一步:输入:tar czvf httpd.tar.gz httpd*.txt,此时就将目录下的httpd开头的txt文件一起打到了压缩包里

第二步:输入:ls,可以看到三个源文件没有消失,而且压缩包创建成功,过程和结果如下图:

我们再对此压缩包进行解压到data目录下
第一步:输入:tar zxvf httpd.tar.gz -C /data/敲回车,此时三个txt文件被解压到了data目录下
第二步:输入ls /data/敲回车,此时我们就可以看到三个文件在目录中,过程和结果如下图:

那么如果创建bzip2的压缩包步并解压缩到data目录中的操作骤如下:

接下来就是最重要的vi编辑器:

我们接着之前的实验文档进行操作,
输入:vim httpd01.txt,此时我们敲回车进入的是文本的命令模式:

输入:1G(跳转至第一行)
输入::set nu(显示行号)

此时我们怎么在命令模式下进入输入模式呢?
我们以光标所在点的英文字母“S”为参考点
1.输入:a,末行显示插入,此时进入插入模式,输入内容abc,内容插入在S之后
按Esc退出到命令模式
2.光标回到“S”输入“i”,此时进入插入模式,输入内容abc,内容插入在S之前
按Esc退出到命令模式
3.光标回到“S”输入“o”,此时进入插入模式,输入内容abc,内容插入在S的下一行
按Esc退出到命令模式
4.光标回到“S”输入“O”,此时进入插入模式,输入内容abc,内容插入在S的上一行
按Esc退出到命令模式
此时我们将光标移动到英文字母“R”处作为参考点:

  • 跳转到行首:按数字0或Home按键
  • 跳转到行尾:按符号$或者按End按键
  • 跳转到最后一行:按大写G
  • 跳转到第54行:按54G
  • 跳转到第103行:按103G
  • 跳转到屏幕的中间行:按大写M
    复制、粘贴、删除的操作如下:
  • 光标在第一行所在位置,想删除单个字符:按x或者Delete
  • 删除整行:按dd
  • 删除1-3行:按3dd
  • 删除到行首:按d^
  • 删除到行尾:按d$
  • 删除单词:按dw
  • 复制一行:按yy,再粘贴,按:p
  • 复制三行:按3yy,找到位置再粘贴,按:p
  • 上下两行对调位置:ddp(dd是剪切,p粘贴在下一行)
    文件内容查找和撤销编辑及保存退出的操作如下:
    回到刚才的界面,查找文件中的Directory这个单词,
    输入:
    /Directory
    就是自上而下查找出文本中有这个单词的地方,此时再按n就是向下寻找,按N就是向上寻找
    输入:
    ?Directory
    就是自下而上的查找, 按N就是向上寻找
    如果我们使用dd,对其中的行进行了删除,此时我们想恢复就是不保存退出,按U就是恢复所有操作,或者输入:
    :q!

    如果此时我们想保存退出,在末行模式的情况下输入:
    :wq
    ,或者在命令模式按ZZ就可以保存退出了
    替换行间内容:按Shift+r,此时我们输入192.168.10.10它会替换原来的内容,当我们按Dtlete的时候它又会恢复成原来的内容,如下图所示:

    接下来我们还是使用之前的实验文档,此处编写两个简单的新文件
    输入:echo “this is test01” > test01.txt
    输入:echo “this is test02” > test02.txt

    这时我们得到两个新的文件,进入编辑:
  • 输入:vim test02.txt进入到编辑,如果中途想切换到test02
  • 输入::号进入末行模式,再接着e test02.txt敲回车就进入了tst02中
  • 此时我们在test01中,我们想把test02中的内容复制到test01里:
  • 输入::号进入末行模式,再接着r test02.txt敲回车就把test02中的文字复制到了tst01中

接下来我们还是使用之前test01.txt,此处进行文件替换的操作:
首先进入文档中编辑其中一行内容为this this this is test01,并且粘贴到下面所有行
此时我想修改光标所在行第一个单词“this”改为“the”,输入:

:s .this/the/

此时我想修改光标所在行剩余两个单词“this”改为“the”,输入:
:s .this/the/g

只替换9-15行的所有单词“this”改为“the”,输入:
:9,15 s .this/the/g


替换全文的单词“this”改为“the”,输入:
:% s/this/the/g
敲回车,此时全文的this改为the,结果如下图:

以上就是所有Linux中的目录和文件管理的基本操作实验,谢谢大家!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: