【Linux】管道文件 打包压缩 文本编辑器nano 进度条

目录

什么是管道文件?  

打包和压缩

文本编辑器

nano的安装

nano的使用

退出nano编辑,ctrl+x

普通用户无法sudo,该怎么解决

Linux小程序-进度条 

 预备知识

        1.回车换行

        2.缓冲区

准备工作

 代码实现

        1.processBar.h代码编写

        2.main.c代码编写

        3. processBar.c代码编写

结果展示  


什么是管道文件?  

当我们需要从提取的数据信息再进行提取时,我们就需要一个临时文件来存储第一次提取的数据信息,以供第二次进行提取,如下:

 在不创建临时文件的前提下,我们使用管道文件,代码如下:

head -1020 log.txt  |  tail -20

上述代码中," | "是一种符号 ,后面会被"系统"解释称为 管道文件,管道文件不会真的在磁盘中存在,属于内存级的文件。

管道:与现实生活中的管道一样,有一个入口和一个出口,数据从管道的入口进入,另一方从管道的出口拿取数据。

管道也可以实现连续提取数据,如下:

cat log.txt | head -50 | tail -20 | wc -l

通常支持上述的流水线工作。

打包和压缩

为什么?

  • 能被打包和压缩的,一定是一个整体,由多个文件 -> 一个文件,好处是不容易造成文件缺失
  • 打包压缩,体积变小 --如果未打包压缩,下载时间变长,存储空间变大

安装zip/unzip

yum install -y zip unzip

打包和压缩的方案有很多

tar czf xxx  ----打包压缩

tar tzf  xxx.tgz  ----预览

tar  xzf xxx.tgz   ----解压解包

tar  ->  打包后缀

.gz  ->  压缩后缀

xxx.tar.gz  --->  xxx.tgz

文本编辑器

Linux下的记事本 nano

nano的安装

nano --version  //判断是否已经安装了nano,如以下情况是已经安装了

//安装指令

yum install -y nano

nano的使用

nano text.c  //进入文件开始编写

退出nano编辑,ctrl+x

普通用户无法sudo,该怎么解决

把用户添加进用户信任列表里 ,即白名单里,而Linux所谓的白名单就在

/etc/sudoers 

普通用户是无法修改配置文件的,需要在管理员身份root下

vim  /etc/sudoers 

进入配置文件后,找到如下位置

 在这里添加需要执行sudo命令的用户,下图所示是用户名

Linux小程序-进度条 

 预备知识

        1.回车换行

                回车换行是两个动作;

                回车是将光标移至当前行的最左侧,

                换行是将当前光标位置移至下一行的相同位置。

        2.缓冲区

                由c语言维护的一段内存 

                1.stdout:标准输出 

                2.stdin  :标准输入

                3.stderr:标准错误

                linux系统中,一般是缓冲区满或者程序运行结束后进行刷新,这样达不到我们想要的效果,于是我们用fflush清空缓冲区,强制刷新。

准备工作

        1.创建三个文件

        2.在processBar.h 和 main.c 中写入以下内容

        3.创建makefile文件,将上述processBar.c和main.c两个文件一次编译形成可执行文件 

         

 代码实现

        1.processBar.h代码编写

  1 #pragma once //防止头文件重复包含
  2 #include<stdio.h>
  3 #define BODY '-'  //设置进度条的身体样式
  4 #define RIGHT '>' //设置进度条的头部样式
  5 #define NUM 102    
  6 #define TOP 100    //设置倒计时时长
  7 void processbar(int speed);  //声明进度条函数

        2.main.c代码编写

  1 #include "processBar.h" 
  2 int main()
  3 {
  4     processbar(50000);  //调用倒计时函数                                                                               
  5     return 0;
  6 }   

        3. processBar.c代码编写

#include "processBar.h"
#include <string.h>
#include <unistd.h>
//设置进度条的颜色
#define YELLOW "\033[1;33m"
#define NONE "\033[m"
//设置进度条旁边的转动圈
char  *lable="|/-\\";
void processbar(int speed)
{
    char bar[NUM];
    memset(bar,'\0',sizeof(bar));
    int cnt=0;
    int len=strlen(lable);
    while(cnt<=TOP)
    {
        printf("["YELLOW"%-100s"NONE"]""[%d%%][%c]\r",bar,cnt,lable[cnt%len]);                        
        fflush(stdout); //强制刷新
        bar[cnt++]=BODY;
        if(cnt<100) bar[cnt]=RIGHT;
        usleep(speed); // sleep(1) 这边采用毫秒为单位快一点
   }
   printf("\n");
}

结果展示  

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

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

相关文章

文案馆头像壁纸微信小程序源码【支持流量主】

文案馆头像壁纸微信小程序源码【支持流量主】 源码介绍&#xff1a;文案馆头像壁纸微信小程序源码是一款可以获取套图、头像、壁纸的小程序。小程序源码内置流量主功能 需求环境&#xff1a;微信小程序phpmysql 下载地址&#xff1a; https://www.changyouzuhao.cn/13453.ht…

docker (五)-docker存储-数据持久化

将数据存储在容器中&#xff0c;一旦容器被删除&#xff0c;数据也会被删除。同时也会使容器变得越来越大&#xff0c;不方便恢复和迁移。 将数据存储到容器之外&#xff0c;这样删除容器也不会丢失数据。一旦容器故障&#xff0c;我们可以重新创建一个容器&#xff0c;将数据挂…

【2024】如何订阅Netflix奈飞?Netflix奈飞购买教程

【2024】如何订阅Netflix奈飞&#xff1f;Netflix奈飞购买教程 Netflix奈飞作为全球领先的在线流媒体平台之一&#xff0c;拥有丰富的影视资源和独家内容&#xff0c;成为了人们追剧的热门选择。本文将为您介绍如何订阅Netflix奈飞&#xff0c;并提供详细的购买教程&#xff0…

redis高级篇

为什么用单线程 开始多线程和io复用 linux连接redis其实就是一个socket过程 bigkey记录案例和生产故障 插入100w数据 不使用key*那使用什么&#xff1f;&#xff1a;scan bigkey发现删除优化策略

【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch

文章目录 01 Elasticsearch Sink 基础概念02 Elasticsearch Sink 工作原理03 Elasticsearch Sink 核心组件04 Elasticsearch Sink 配置参数05 Elasticsearch Sink 依赖管理06 Elasticsearch Sink 初阶实战07 Elasticsearch Sink 进阶实战7.1 包结构 & 项目配置项目配置appl…

JVM-JVM中对象的结构

对象内存布局 对象里的三个区&#xff1a; 对象头&#xff08;Header&#xff09;&#xff1a;Java对象头占8byte。如果是数组则占12byte。因为JVM里数组size需要使用4byte存储。 标记字段MarkWord&#xff1a; 用于存储对象自身的运行时数据&#xff0c;它是synchronized实现轻…

AliOS编译三方库

文章目录 1、官网教程2、编译NDK2.1 下载ndk2.2 编译环境准备2.3 安装ndk 3 cmake交叉编译3.1 编译工具链3.2 编译三方库 4 自带编译配置文件的交叉编译 1、官网教程 AliOS开发官网链接&#xff1a;AliOS开发者官网 应用开发下NDK开发有相关NDK开发介绍 2、编译NDK 2.1 下载…

037-安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类

037-安全开发-JavaEE应用&JNDI注入&RMI服务&LDAP服务&JDK绕过&调用链类 #知识点&#xff1a; 1、JavaEE-JNDI注入-RMI&LDAP 2、JavaEE-漏洞结合-FastJson链 3、JavaEE-漏洞条件-JDK版本绕过 演示案例&#xff1a; ➢JNDI注入-RMI&LDAP服务 ➢JNDI注…

C语言scanf函数详解..

1.前言 前面说过了printf函数 他是将二进制表示的整数、浮点数、字符、字符串根据转换规范转换成字符或者字符串 并且打印到了控制台上 那么既然有了输出函数 那么肯定也有输入函数咯 的确如此 他就是scanf函数 他是将字符或者字符串根据转换规范转换成二进制表示的整数、浮点…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十二)(3)

实验十二&#xff1a;微分方程模型 练习三 1.分别用数值解命令ode23t和ode45 计算示例3中微分方程的数值解,同用命令ode23 算得的数值解以及解析解比较,哪种方法精度较高?你用什么方法比较它们之间的精度? clc;clear; f(x,y)2*yx2; figure(1) [x,y]ode23t(f,[1,2],1); plo…

三、Maven项目搭建及Destination(队列、主题)

Maven项目搭建及Destination&#xff08;队列、主题&#xff09; 一、Idea中Maven项目准备1.创建Module2.创建java包3.配置pom.xml 二、队列&#xff08;Queue&#xff09;1.JMS编程架构2.代码实现生产者3.代码实现消费者4.队列消费者三大情况 三、消费者类型1.同步式消费者1.1…

【MATLAB】鲸鱼算法优化混合核极限学习机(WOA-HKELM)回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 鲸鱼算法优化混合核极限学习机&#xff08;WOA-HKELM&#xff09;回归预测算法是一种结合鲸鱼优化算法和混合核极限学习机的混合算法。其原理主要包含以下几个步骤&#xff1a; 初始化&am…

VMware Tools安装教程(适用windows虚拟机)

一、资源 VMware-tools安装包已绑定在资源中 二、步骤 1、点击已经开启的虚拟机中的此图标&#xff0c;点击设置 2、将镜像文件选中&#xff0c;点击确定 3、之后会自动进入安装过程&#xff0c;点击下一步 4、选择典型安装&#xff0c;下一步直到完成&#xff0c;完成后重启…

Swift Combine 合并多个管道以更新 UI 元素 从入门到精通十七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

【Deep Learning 3】CNN卷积神经网络

&#x1f31e;欢迎来到机器学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月17日&…

Netty中的内置通信模式、Bootstrap和ChannelInitializer

内置通信传输模式 NIO:io.netty.channel.socket.nio 使用java.nio.channels包作为基础–基于选择器的方式Epoll:io.netty.channel.epoll由JNI驱动的epoll()和非阻塞IO.这个传输支持只有在Linux上可用的多种特性&#xff0c;如果SO_REUSEPORT&#xff0c;比NIO传输更快&#xf…

【深度学习】Pytorch 系列教程(三):PyTorch数据结构:2、张量的数学运算(1):向量运算(加减乘除、数乘、内积、外积、范数、广播机制)

文章目录 一、前言二、实验环境三、PyTorch数据结构0、分类1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;2. 数据类型&#xff08;Data Types&#xff09;3. GPU加速&#xff08;GPU Acceleration&#xff09; 2、张量的数学运算1. 向量运算…

数字孪生与智慧城市:共筑未来城市的科技基石

一、引言 随着科技的飞速发展&#xff0c;数字孪生与智慧城市已成为未来城市建设的两大关键技术。数字孪生为城市提供了一个虚拟的数字镜像&#xff0c;使我们能全面、深入地了解城市的运行状态。而智慧城市则借助先进的信息通信技术&#xff0c;提升城市的智能化水平&#xf…

算法刷题:复写零

复写零 .习题链接题目描述算法原理初始值步骤1步骤2我的答案: . 习题链接 复写零 题目描述 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素…

【OpenAI Sora】开启未来:视频生成模型作为终极世界模拟器的突破之旅

这份技术报告主要关注两个方面&#xff1a;&#xff08;1&#xff09;我们的方法将各种类型的视觉数据转化为统一的表示形式&#xff0c;从而实现了大规模生成模型的训练&#xff1b;&#xff08;2&#xff09;对Sora的能力和局限性进行了定性评估。报告中不包含模型和实现细节…