可以这样学习linux命令

通过综合练习,可以强化linux命令的学习。

带着问题学习linux命令及其相关知识,是十分有效的方法。

我们通过查询当前目录下的子目录这个问题,学习与训练linux 中一些重要命令。

综合练习强于单个命令的分散学习,知识的串联,可以打通知识结点,巩固已学知识!

本讨论关注的重要知识点:

命令;选项;参数;重定向;管道;文件及文件类型;Linux三剑客

前期准备:

以root身份在xshell中登录成功。

在/home/zhang3目录下创建一些文件(压缩文件、普通文件、目录等)

后续的所有操作都是在此目录中。

在前篇文章(Linux centos7查看目录下的目录的方法_qq_36142959的博客-CSDN博客)中,介绍了6种方法,简单实用,推荐多了解。我们在此基础上,拓展一下。以问题为起点,学习其他linux命令及方法。

1.通过压缩文件查找目录

在压缩文件学习中,常用的打包压缩命令有:gzip、zip、tar等。

在用gzip压缩文件时,不能压缩目录,仅能压缩普通文件。此方法的思路就是:我们把当前目录进行压缩,不能压缩的就是目录。把此思路用命令表达出来,就完成了我们的小目标。

命令:

gzip -q ./* |xargs ls | grep -v .gz

管道(|)处理是运用shell命令最重要的方式!

一次命令处理不一定满足要求,通过管道,把第一次的处理结果再送给后一个命令处理。如仍未满足要求,再利用管道方法继续。

常和管道方法相随的命令是grep。xargs命令也有强大功能!

在本命令中,-q选项是安静模式,不输出各种提示与错误信息。

第一项命令是采用安静模式压缩当前目录。通过管道把结果送入下一条命令。

第二项命令是把前一项命令结果查询显示出来。不加xargs命令,不能正确执行。本命令执行结果有多余信息,还需要再次处理。

第三项命令是搜索不包括.gz的文件,结果如下。

压缩当前目录,可以写作.、./、./*

用ls命令查看当前目录,一般文件都进行了压缩。而目录及其内容没有变化。

如果不需要对当前目录下的文件压缩,可以通过解压命令还原已压缩的文件。

gunzip  *.gz

2.利用file命令查询目录

file命令不常用。主要功能是判断一个文件是哪一文件类型。通常是:  file  文件名

对于把file命令用于多个文件,会有多个执行结果。

利用此命令查询当前目录下的目录,仍需要管道及grep命令

file  ./* | grep  "directory"

第一项命令的结果,信息太多,我们需要过滤一下。

3.利用sed命令查询目录

sed命令主要功能是处理文件中的行。匹配上的行可以增删改查。

为了查询目录,我们可以先为目录添加一个/标记。

命令:

ls -p |sed -n '/\/$/p'

ls -F不同文件不同标识结尾,ls -p只能给文件夹加标识“/”

\/是转义字符,表示/就是真正的/。

4.利用awk命令查询目录

awk命令主要功能是处理文本文件中的行及行中字段。为了验证awk功能强大,此处尝试利用此命令查询目录。

ls -F |awk  '/\/$/'

ls -l ,输入结果中第二列中大于1的是目录(没有硬链接的情况下,如有硬链接此结果不准)

ls -l | awk '{if($2>1) print $0}'

5.利用for循环查询目录

我们利用ls可以查出当前目录下很多文件。再利用for循环对每一个文件进行识别,看是不是目录。主要知识点有反引号的使用、变量及变量调用、条件判断、echo打印输出等

可以一行录入:

for dir in `ls ./`;do if [ -d $dir ];then echo $dir;fi;done

也可以分行输入:

for dir in `ls ./`

do

        if [ -d $dir ];then

                echo $dir

        fi

done

6.编写shell脚本查询目录

编写一个查询给定目录中的目录的shell脚本,可以录入一个目录,执行脚本,查询出结果。

利用for循环编写比较简单。下面列出一个简单的脚本,仅供参考。

#! /bin/bash

# find directory

read -p "录入一个目录:" dir

echo `ls $dir` >t1.txt

for _dir in `cat t1.txt`

do

         if [ -d $_dir ];then

                   echo $_dir

         fi

done

执行脚本,录入当前目录,结果如下

根据颜色查询目录

此方法不可行。

为什么不能根据颜色查询目录?

一般情况下,用ls查看目录内容,可看到不同文件有不同的颜色显示,如目录常常显示为蓝色,压缩文件为红色,可执行文件为绿色,软链接文件为天蓝色,等等。

当看到列出目录这个话题时,首先想到的是找出蓝色文件,一一列出来就是目录列表了。

通过人眼判断可以快速找到结果,但用系统命令通过颜色列出目录名称不可能!原因在于,颜色不是目录的自身属性,而是shell解释器根据个人好恶添加上去的。查询结果显示不同颜色主要是方便查看,更易识别判断。当不需要时可以随时取消。所以不能通过颜色反推目录!

我们可以设置ls --color

为查询结果添加不同颜色,也可以不加此选项而取消颜色显示!!

其他文件如何设置的颜色数值,可查询文件: /etc/DIR_COLORS

其中,DIR:1;34 目录:高亮,蓝色

如果哪位高手可以实现根据颜色查询目录,欢迎指导!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_36142959

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值