Linuxl下C编程系列--Shell(续)

(29)Linux命令【l命令】 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 阅读详情

shell的输入与输出主要包括:
echo命令
read命令
cat命令
管道
tee命令
标准输入、输出和标准错误
重定向


echo [-e] [-n]  string
string : 字符串,可以含 shell 变量、转义符等,  一般用双引号括起来
-e :  让 echo 解释 string 中的转义符
-n :  禁止 echo 输出后输出 NEWLINE(换行)

cat [-n][-b][-t][-e] file1 file2 ...
cat 是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符
-n : 显示行号
-b : 显示行号(不含空行)
-t : 显示制表符
-e : 显示行结束符
创建文件:
cat file1 file2 > newfile 合并文件
cat > newfile 输入文本,按 ctrl+d  结束输入

管道
| : 把一个命令的输出传递给另一个命令作为输入。
例:ls –l | grep ^d

tee 命令
把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
tee [-a] filename 
-a : 追加到文件末尾
tee 命令一般与管道结合使用
例:ls  | tee list.out

grep:

不会对输入文件进行任何修改或影响
grep家族:grep,egrep,fgrep
形式:
grep [选项] pattern file1 file2 ...

pattern:可以是正则表达式(用单引号括起来)、                             或字符串(加双引号)、或一个单词。
 file1 file2 ... :文件名列表,作为 grep 命令的输入;grep 的输入也可以来自标准输入或管道;

可以把匹配模式写入到一个文件中,每行写一个,然后使用 -f 选项,将该匹配模式传递给 grep 命令。
grep -f patternfile file1 file2 ...
常用选项:
-c 只输出匹配的行的总数
-i 不区分大小写
-h 查询多个文件时,不显示文件名
-l 查询多个文件时,只输出包含匹配模式的文件的文件名
-n 显示匹配的行及行号
-v 反向查找,即只显示不包含匹配模式的行
-s 不显示错误信息

例:
1.查询多个文件,可以使用通配符 “ * ”
 如:grep "math2"  *.txt
 grep "12"  *
2.反向匹配
 ps aux | grep "ssh" | grep –v "grep"
3.匹配空行
 grep -n '^$' datafile
 grep -v '^$' datafile > datafile2
4.精确匹配单词: /< 和 />
 找出所有包含 以 north 开头 的单词的行
 grep '/<north' datafile
 找出所有包含 以 west 结尾 的单词的行
 grep 'west/>' datafile
 找出所有包含 north 单词的行
 grep '/<north/>' datafile
5.递归搜索目录中的所有文件:-r
grep -r "north" datafile  ~/Teaching/linux/
6.关于某个字符连续出现次数的匹配
grep 'o/{2,/}'  helloworld
'o/{2,4/}' , 'o/{2,4/}' , 'lo/{2,4/}'


流编辑器sed
sed 是一个精简的、非交互式的编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出。
sed如何工作的:
sed 逐行处理文件(或输入),并将输出结果发送到屏幕。
即:sed 从输入(可以是文件或其它标准输入)中读取一行,将之拷贝到一个编辑缓冲区,按指定的 sed 编辑命令进行处理,编辑完后将其发送到屏幕上,然后把这行从编辑缓冲区中删除,读取下面一行。重复此过程直到全部处理结束。
sed 只是对文件在内存中的副本进行操作,所以 sed 不会修改输入文件的内容。sed 总是输出到标准输出,可以使用重定向将 sed 的输出保存到文件中。

三种调用方式:
1.在命令行中直接调用
2.将sed命令插入脚本文件,然后调用
3.将sed命令插入到脚本文件,生成sed可执行脚本,在命令行中直接键入脚本名

常见的 sed 编辑命令小结:
 p 打印匹配行 s 替换命令
 = 显示匹配行的行号 l 显示指定行中所有字符
 d 删除匹配的行 r 读文件
 a/ 在指定行后面追加文本 w 写文件
 i/ 在指定行前面追加文本 n 读取指定行的下面一行
 c/ 用新文本替换指定的行 q 退出 sed

在 sed_cmd 中可以使用 shell 变量,此时应使用 双引号。

一些 sed 行命令集:
 '/north/p' 打印所有包含 north 的行
 '/north/!p' 打印所有不包含 north 的行
 's//.$//g' 删除以句点结尾的行中末尾的句点
 's/^  *//g' 删除行首空格(命令中 ^  * 之间有两个空格)
 's/  */ /g' 将连续多个空格替换为一个空格
   命令中 */ 前有三个空格,后面是一个空格
 '/^$/d’ 删除空行
 's/^.//g' 删除每行的第一个字符,同 's/.//'
 's/^/%/g' 在每行的最前面添加百分号 %
 '3,5s/d/D/' 把第 3 行到第 5 行中每行的 第一个 d 改成 D

 

awk:
awk 是一种用于处理数据和生成报告的编程语言
 awk 可以在命令行中进行一些简单的操作,也可以被写成脚本来处理较大的应用问题
 awk 与 grep、sed 结合使用,将使 shell 编程更加容易

awk如何工作的:
awk 逐行扫描输入 ( 可以是文件或管道等 ),按给定的模式查找出匹配的行,然后对这些行执行 awk 命令指定的操作

也有类似的三种使用方式。

awk的执行过程:
①  如果存在 BEGIN ,awk 首先执行它指定的 actions
② awk 从输入中读取一行,称为一条输入记录
③ awk 将读入的记录分割成数个字段,并将第一个字段放入变量     $1 中,第二个放入变量 $2 中,以此类推;$0 表示整条记录;    字段分隔符可以通过选项 -F 指定,否则使用缺省的分隔符。
④ 把当前输入记录依次与每一个 awk_cmd 中 pattern 比较:     如果相匹配,就执行对应的 actions;     如果不匹配,就跳过对应的 actions,直到完成所有的 awk_cmd
⑤ 当一条输入记录处理完毕后,awk 读取输入的下一行,重复上    面的处理过程,直到所有输入全部处理完毕。
⑥ awk 处理完所有的输入后,若存在 END,执行相应的 actions
⑦ 如果输入是文件列表,awk 将按顺序处理列表中的每个文件。

awk 中正则表达式中常用到的元字符有:
^ 只匹配行首 ( 可以看成是行首的标志 )
$ 只匹配行尾 ( 可以看成是行尾的标志 )
* 一个单字符后紧跟 *,匹配 0个或多个此字符
[ ] 匹配 [] 内的任意一个字符 ( [^] 反向匹配 )
/ 用来屏蔽一个元字符的特殊含义
. 匹配任意单个字符
str1|str2 匹配 str1 或 str2
+ 匹配一个或多个前一字符
? 匹配零个或一个前一字符
( ) 字符组
 Linux 下使用的 awk 是 gawk


操作由一条或多条语句或者命令组成,语句、命令之间用分号 “ ; ” 隔开。操作中还可以使用流程控制结构的语句
awk 命令:
 print 输出列表:打印字符串、变量或表达式,输出列表中各参数之间用逗号隔开;若用空格隔开,打印时各输出之间没有空格
 printf ( [格式控制符], 输出列表 ) :格式化打印,语法与 C语言中的 printf 函数类似
 next:停止处理当前记录, 开始读取和处理下一条记录
 nextfile:强迫 awk 停止处理当前的输入文件而处理输入文件列表中的下一个文件
 exit:使 awk 停止执行而跳出。若存在 END 语句,则执行 END 指定的 actions

为了避免碰到 awk 错误,要注意以下事项:
 确保整个 awk_script 用单引号括起来
 确保 awk_script 内所有引号都成对出现
 确保用花括号括起动作语句,用圆括号括起条件语句
 如果使用字符串,要保证字符串被双引号括起来 ( 在模式中除外 )

 awk 语言学起来可能有些复杂,但使用它来编写一行命令或小脚本并不太难。awk 是 shell 编程的一个重要工具。在shell 命令或编程中,可以使用 awk 强大的文本处理能力 

Linuxl下C编程系列-Shell命令 shell的输入与输出主要包括: echo命令 read命令 cat命令 管道 tee命令 标准输入、输出和标准错误 重定向 立即下载

相关推荐

Pikachu靶场环境搭建(Windows环境下安装详细教程)

Pikachu靶场是一个漏洞测试练习平台。其中包含了常见的web安全漏洞,如果你是一个渗透测试学习者没有靶场的练手,那么pikachu是一个很好的测试平台。

weixin_42857656的博客 1827

Linux介绍及常用命令(全面超详细的流程)

本文根据尚硅谷的课程整理而成,方便各位搬砖人快速掌握linux以及查看常用命令。Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

tang5615的博客 1315

基于STM32的多模态智能风扇控制系统设计与实现

本文详细介绍了基于STM32单片机的多模态智能风扇控制系统的设计与实现。系统集成了红外遥控、蓝牙手机控制及人体感应等多模态交互方式,通过PWM技术实现无级调速,并设计了安全优先的控制逻辑。文章从硬件选型、核心原理、软件编程到系统调试,提供了完整的实战指南,适合嵌入式开发爱好者学习与实践。

weixin_28285943的博客 238

shell脚本——调试(-n / -x /-c)

我们在前面介绍的调试手段是通过修改shell脚本的源代码,从其输出相关的调试信息来定位错误的,那有没有不修改源代码来调试shell脚本的方法呢?有的,那就是使用shell的执行选项,下面将介绍一些常用选项的用法:-n 只读取shell脚本,但不实际执行-x 进入跟踪方式,显示所执行的每一条命令-c "string" 从strings中读取命令"-n"可用于测试shell脚本是否存在语法错误,但不会...

杰儿__er 的博客 4万+

手把手教你用三菱PLC控制JET伺服原点:从硬件接线到GXWORKS3程序调试

本文详细介绍了如何使用三菱PLC控制JET伺服系统实现原点回归功能,涵盖硬件接线、参数配置到GX Works3程序调试的全流程。通过实战指南,帮助工程师快速掌握伺服控制技术,提升工业自动化项目的实施效率。

weixin_30642561的博客 535

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

sh -c的必要性

在Linux使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。 比如要向 test.asc 文件中随便写入点内容,可以: $ echo "信息" &gt; test.asc # 或者 $ echo "信息" &gt;&gt; test.asc 下面,如果将 test.asc 权限设置为只有 root 用户才有权限进行写操作: $ sudo chown root.root test....

BobChill的博客 7万+

ElaticSearchUtil工具类封装

package com.xxx.util; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction; import org.elasticsearch.action.ad

会飞的狼 6295

Linuxl下C编程系列--Shell

shell脚本(.sh):类似windows下的批处理bat.文件比批处理强大,已经是一强大的编程语言了。echo "please enter your name:";read fname;echo ${fname}   //{}可以省略默认数据类型为 字符类型env 查看环境变量echo $HOME  查看当前用户目录echo $PATH./执行;也可以修改vi /etc/pro

Nicholas黎的专栏 1248

利用VBA宏实现LightTools仿真数据自动化导出至Excel

本文详细介绍了如何利用VBA宏实现LightTools仿真数据自动化导出至Excel的完整流程。通过调用LTAPI接口,工程师可以自动执行仿真、抓取照度与光强等数值数据、捕获并粘贴仿真图像,从而将重复性工作自动化,显著提升光学设计工作的效率和准确性。

weixin_28314575的博客 503

华为OD机试真题2025双机位A卷 Python&JavaScript 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 1460

Linux c程序中获取shelll脚本输出

Table of Contents 1. 前言 2. 使用临时文件 3. 使用匿名管道 4. 使用popen 5. 小结 1. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比 如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码...

linux 编程 88

一文吃透 Tools for Applying SAP Notes:从 SNOTE、TCI 到 Solution Manager 与 SAP Cloud ALM

本文系统梳理了SAP技术与运维团队应用SAP Notes的高效工具与方法,涵盖On-Premise与云环境。文章首先阐述了精研SAP Notes工具的必要性,指出其是实施错误修复、法务变更和性能改进的关键载体。随后详细介绍了SNOTE、TCI、Solution Manager、Cloud ALM和Maintenance Planner等核心工具的定位与适用场景,并通过采购异常案例展示了标准更正流程。针对复杂修复场景,文章提出了TCI的批量处理方案,并强调将Note实施纳入变更治理流程的重要性。最后总结了三种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 354

minishell的重定向实现

minishell的重定向实现 Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作,操作句柄为文件描述符,可以将文件描述符想象成两个指针,相当于指针所指的内容变了。 常用到的两个输出重定向的符号">" 和 “>>” 第一个是清空重定向,会先清空...

PNUHC的博客 400

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

linux l开头是什么文件,linux中以.开头的文件是什么类型的文件

1.列出文件清单命令:lsls命令能够列出当前目录下的所有内容。ls 命令的执行方式为:# ls [-选项] [文件名或者目录名]进入到Linux命令行中后,我们至少要知道当前所处的位置有哪些内容,这些信息就可以使用ls命令来获得。在Linux中,ls命令是最常使用的命令之一,因为在命令行下要随时查看目录内容。如果不加任何选项的话,ls命令仅列出当前目录下的文件和目录名,例如,想要查看/etc...

weixin_33427476的博客 2442

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linuxl中shell变量$#、$@、$0、$1、$2的含义解释

为什么80%的码农都做不了架构师?>>> ...

weixin_34289744的博客 1611

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux ls -l 名:命令详解

ls 只显示文件名或者文件目录 ls -l(这个参数是字母L的小写,不是数字1) 用来查看详细的文件资料 在某个目录下键入ls -l可能会显示如下信息: 文件属性(占10个字符空间) 文件数 拥有者 所属的group 文件大小 建档日期 文件名    drwx------ 2 Guest users ..

qq_2580123的博客 643

Linux Command sed 文本处理

sed介绍 Sream EDitor流式编辑器(非交互)===【vim(交互) word,记事本】 非交互,基于模式匹配过滤及修改文本 逐行处理,并将结果输出到屏幕 可实现对文本的输出,删除,替换,复制,粘贴,导出,导入等操作 sed语法 sed [选项] '条件命令' 文件 1选项: -e:多点编辑,可以执行多个子命令 -f:从脚本文件中读取命令(sed操作可以事先写入脚本,然后通过-f读取并.........

爱死亡机器人 1186

linuxl命令之tail

tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ] 参数解释: -f 该参数用于监视File文件增长。 -c Number 从 Number 字节位置读取指定文件 -n Number 从 Number 行位置读取指定文件。 -m Number 从 Number...

镜相人生 1198

【博客155】shell -c选项的作用

内容: 记录shell -c选项的作用 shell -c选项的作用:告诉shell程序选取下一个命令参数作为命令输入,而不是从标准输入或者从一个给定的文件中读命令 概述: sh -c 命令,它可以让 bash 将一个字串作为完整的命令来执行 例子: 1.往一个文件加入测试信息 2.将这个文件的权限修改为管理员权限 3.再加入的时候需要管理权限才可以 4.使用sudo时也是不行,因为echo有...

qq_43684922的博客 3255

sudo 重定向问题

本文来自:http://www.linuxgem.org/posts/8147 其实需要重定向的不仅仅只有echo命令 众所周知,使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。本文介绍如何将 echo 命令与 sudo 命令配合使用,实现向那些只有系统管理员才有权限操作的文件中写入信息。 比如要向 test.asc 文件中随便写入点内容,可以: $ ec

yuanchao99的专栏 5127

c语言中L''作用,L/C问题: 请问L/C上的49:Confirmation Instruction 有什么作用啊[1]

承上后续:请BRUCE前辈再多加指教:我们要求非洲肯尼亚一客人开保兑信用证,虽然在开过来的信用证中49条这样写到49:ConfirmationInstruction:Confirm (49.保兑指示:保兑)但是其开出的信用证没有CONFIRMATION L/C 字样,应该不属于保兑信用证.因为非洲人信誉一向不好,我们要求客人请中国银行做为保兑行,并且客人请信用证中作为偿付行的美国运通银行出具...

weixin_36229293的博客 2659

Linux-Unix—Windows

Linux和Windows的区别 和Linux一样,Windows系列是完全的多任务操作系统。它们支持同样的用户接口、网络和安全性。但是,Linux和Windows的真正区别在于,Linux事实上是Unix的一种版本,而且来自Unix的贡献非常巨大。是什么使得Unix如此重要?不仅在于对多用户机器来说,Unix是最流行的操作系统,而且在于它是免费软件的基础。在Internet上,大量免费软件都是针

Nicholas黎的专栏 1588

Linuxl下C编程系列--基础知识及基本命令

Linux下C开发编辑器:VI编译器:选择GNU C/C++编译器gcc调试器:应用广泛的gdb函数库:glibc系统头文件:glibc_header若想开发图形界面,还需选上GNOME(c)/KDE(c++)软件开发IDE:(大多数人还是直接使用gcc)Kylix:号称Linux下的DephiKdevelopRHIDE:类似Turbo C++  (很少人使用)要构架一个完整的C开发环境,

Nicholas黎的专栏 1578
上一篇: STL 总结
下一篇: C文件操作相关函数解析
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值