1854_bash中利用管道进行批量参数传递以及由此实现简单的代码行数统计

Grey

全部学习内容汇总: GreyZhang/bash_basic: my learning note about bash shell. (github.com)

1854_bash中的参数传递以及利用bash进行简单的代码行数统计

有时候需要处理多个文件,把每一个文件作为参数传递给某一个程序。这时候可以用到 xargs,而基础的linux教程中提供的wc程序,其实可以用来实现简单的代码行数的统计。

主题由来

这么多年来,自己造轮子的事情没少干。比如说,实现对一个工程C代码的代码行数统计。不过,好的是我之前造好的轮子一直用了很久,而且提供了一些细节性的处理。比如说,过滤掉注释只看有效代码等功能。不过,简单的看文件的自然行数,这样的处理功能是有现成的工具可以用的。如果对于统计来说统计信息就是这样的效果,那么可能利用已有的工具来处理在很多地方都会很通用。而且,这种工具不回限定编程语言。

解决这样的问题,其实关键点在于 xargs 的使用。而这里有一份值得参考的资料: How to Use the xargs Command on Linux

这一份资料我找到的时间比较晚,其实如果早一点的话,或许find的补课也会一起免除了。

实际探索体验以及效果

  • xargs的作用就是获取一个命令的输出,当作参数传递给另一个命令。

  • 关于unix类型的操作系统的文件特性,这里做了一个简单的介绍。这些信息,之前在看MIT的6.828的课程的时候没少看。

  • 为什么会有这样的一个命令出现呢?主要是因为并不是所有的命令都可以把其他命令的标准输出作为输入。
  • 这里给出来的应用例子,其实刚好也算是给上面的说明给出了几个命令的例子。
  • 除了从管道获取输入之外, xargs 还可以从文件获取信息。

  • wc是可以接收文件的,之前我看到的例子对我有一些误导,当时误以为是不可以的。

  • xargs可以支持交互式的确认操作。
  • 默认下,回车代表这not。

  • 这里又是一个组合应用的例子,其实也是很好的find使用的例子。

如何进行C语言代码行数的统计

在了解这样的功能之前,我其实从网络上找到了别人的使用示范进行修改后基本上实现了我的一个需求。具体如下:

find -iname '*\.c' -o -iname '*\.h' | xargs cat | wc -l

如下是代码的执行效果:

  • 从上面的结果中,我们能够直接看到一个汇总的行数。而-l其实就是获取并计算了总行数。

其实,wc能够统计到更多的信息。结合这里的教程信息,上面的统计可以写成这样子:

find -iname '*\.c' -o -iname '*\.h' | xargs wc

如下是执行的效果:

  • 这里不仅统计出来每一个文件的信息,而且还计算了汇总的信息。汇总后的信息自然还是跟之前统计的结果一致。

小结

开卷有益,多去看看别人的成果会很受益。相比我们自己造出来的轮子,类似bash等命令带给我们的可靠与稳定等体验要好得多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/265874.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高频知识汇总 | 【操作系统】面试题汇总(万字长博通俗易懂)

前言 这篇我亲手整理的【操作系统】资料,融入了我个人的理解。当初我在研习八股文时,深感复习时的困扰,网上资料虽多,却过于繁杂,有的甚至冗余。例如,文件管理这部分,在实际面试中很少涉及&…

Ai图片处理

Ai也可以直接导入PS文件,只不过需要进行一个相关的选择,一般来说是将图层转化为对象 第二个为图层拼合为单个图像(不常用) 第三个则是将隐藏的图片也进行显示 如果你觉得图片的信息的过少好想插入其他的图片,可以选择…

认识Linux背景

1.发展史 Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史 要说Linux,还得从UNIX说起 UNIX发展的历史 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Mu…

BDD - Python Behave Tags 过滤

BDD - Python Behave Tags 过滤 引言实例创建 feature 文件创建 step 实现 Tag 过滤执行执行单个标签 --tagstagname执行多个标签 OR 关系 --tagstag1,tag2多个标签 AND 关系 --tagstag1 --tagstag2单标签非关系 --tags ~tagname 引言 随着项目进展,QA 创建的 Beh…

【JMeter】使用BeanShell写入内容到文件

一、前言 ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时,就经常能够遇到这种情况。要想达到这种目的,我们一般采取BeanShell后置处理器来将内容写入到文件。 二、提取 ​ 在目前大多数的…

记一次 Nginx 调参的踩坑经历

最近在基于SSE(Server Sent Events)做服务端单向推送服务,本地开发时一切顺利,但是在部署到预发环境时就碰到1个很诡异的问题,这里需要简单介绍下我们的整体架构: 整体架构 可以看到所有的请求都会先到统一…

2. 结构型模式 - 桥接模式

亦称: Bridge 意图 桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用 问题 抽象? 实现? 听上去挺吓人? 让我们慢慢来&#x…

2023年软件测试已经崩盘了吗?为什么很难找到工作?

最近后台很多粉丝给我留言: 2023年软件测试已经崩盘了吗,为什么都找不到工作了? 确实,今年经济大环境不好,企业也都在降本增效,如果技术能力还在被应届生竞争岗位的阶段,只会越来越难。 找不…

3d max高质量渲染时,硬件的要求有什么?

渲染过程中,想要追求,效果图高质量渲染,高效率渲染的过程中,3d max高清渲染不只是三维软件的一个要求,对于本地计算机的硬件要求配置也是很重要的。 今天,小编带大家来聊聊3d max高质量渲染过程中&#xff…

20 Vue3中使用v-for遍历普通数组

概述 使用v-for遍历普通数组在真实开发中还是比较常见的。 基本用法 我们创建src/components/Demo20.vue&#xff0c;代码如下&#xff1a; <script setup> const tags ["JavaScript", "Vue3", "前端"] </script> <template…

单例模式实现

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 单例模式 1. 什么是单例模式2. 饿汉模式3.…

机器学习的一些有趣的点【异常检测】

机器能不能知道自己不知道&#xff0c;而不是给出判断中的一种&#xff1f; Classifier&#xff08;分类&#xff09;Anomaly Detection&#xff08;异常检测&#xff09; 机器能不能说出为什么知道&#xff1f; 有时候可能是因为数据的问题导致了这种错觉。 机器学习是否会有错…

虾皮跨境电商的收款方式及选择指南

虾皮&#xff08;Shopee&#xff09;作为一家知名的跨境电商平台&#xff0c;为卖家提供了多种收款方式&#xff0c;以满足不同卖家的需求。本文将介绍虾皮跨境电商平台的主要收款方式&#xff0c;并提供选择指南&#xff0c;帮助卖家根据自身需求和目标市场选择最合适的收款方…

机器学习---K近邻算法

1. KNN算法 K近邻算法&#xff0c;即K-Nearest Neighbor algorithm&#xff0c;简称KNN算法&#xff0c;是一个理论上比较成熟的方法&#xff0c;也 是最简单的机器学习算法之一&#xff0c;1968年由 Cover 和 Hart 提出。 该方法的思路是&#xff1a;如果一个样本在特征空间…

人工智能中GAN 的五大有趣应用

引言 你能看出这张照片中面部的共同点吗&#xff1f; 这些人都不是真实存在的&#xff01;这些面部图像都是由 GAN 技术生成的。 “GAN” 这个词是由 Ian Goodfellow 在 2014 年提出的&#xff0c;但相关概念早在 1990 年就存在了&#xff08;Jrgen Schmidhuber 开创&#xf…

图像识别中的 Vision Transformers (ViT)

引言 Vision Transformers (ViT) 最近已成为卷积神经网络(CNN) 的竞争替代品&#xff0c;而卷积神经网络 (CNN) 目前在不同的图像识别计算机视觉任务中处于最先进的水平。ViT 模型在计算效率和准确性方面比当前最先进的 (CNN) 模型高出近 4 倍。 Transformer 模型已成为自然语…

【vtkWidgetRepresentation】第十七期 vtkDistanceRepresentation

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享vtkDistanceRepresentation相关内容,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录 前言 1. vtkDistanceRep…

ESP8266网络相框采用TFT_eSPI库TJpg_Decoder库mixly库UDP库实现图片传送

用ESP8266和TFT_ESPI模块来显示图片数据。具体来说&#xff0c;我们将使用ILI9431显示器作为显示设备&#xff0c;并通过UDP协议将图片数据从发送端传输到ESP8266。最后&#xff0c;我们将解析这些数据并在TFT屏幕上显示出来。在这个过程中&#xff0c;我们将面临一些编程挑战&…

SpringBoot+JaywayJsonPath实现Json数据的DSL(按照指定节点表达式解析json获取指定数据)

场景 若依前后端分离版手把手教你本地搭建环境并运行项目&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_前后端分离项目本地运行-CSDN博客 在上面搭建SpringBoot项目的基础上&#xff0c;并且在项目中引入fastjson、hutool等所需依赖后。 Jayway JsonPat…

05. Springboot admin集成Actuator(一)

目录 1、前言 2、Actuator监控端点 2.1、健康检查 2.2、信息端点 2.3、环境信息 2.4、度量指标 2.5、日志文件查看 2.6、追踪信息 2.7、Beans信息 2.8、Mappings信息 3、快速使用 2.1、添加依赖 2.2、添加配置文件 2.3、启动程序 4、自定义端点Endpoint 5、自定…