Shell编程实例——参考(二)

Shell脚本编程30分钟入门学习 Shell脚本编程30分钟入门学习转载 阅读详情

11、echo选项与转义序列

echo 接受 3 个参数(参见下表)​。

在这里插入图片描述
echo 也可以接受多个以反斜线起始的转义序列(参见下表)​。除了 \f,这些转义序列的行为差不多都能预测,在有些显示器上,\f 会清理屏幕,而在另一些显示器上,它会产生换行,而且在大多数打印机上会弹出纸张。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12、printf

printf 命令从 bash 2.02 就存在了,该命令分为 3 部分(除命令名之外)​。

printf [-v var] format-string [arguments]

-v var 是可选的,可以将输出赋给变量 var,而不再发往标准输出。

format-string 描述了格式说明。这部分最好作为字符串常量放在引号中。arguments 是一个列表,例如,对应于格式说明的一系列字符串或变量值。

如有必要,格式会被重用,以便处理完所有的参数。如果格式要求的参数多于现有的参数,多出的那些格式说明符就假定提供的参数是 0 值或空串(视情况而定)​。

格式说明前面要加上百分号(%)​,说明符可以是下表中的某一个。主要的格式说明符有两种,分别是用于字符串的 %s 和用于十进制整数的 %d。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
printf 命令能够指定输出字段的宽度和对齐方式。格式表达式可以在 % 和格式说明符之间使用 3 个可选的修饰符。

%<flags<>width.precision<> format-specifier>
(%<标志<>宽度.精度<> 格式说明符>)

输出字段的宽度是一个数字值。如果指定字段宽度,该字段的内容默认采用右对齐。要想左对齐,必须指定 - 标志​。因此,%-20s 输出的就是字段宽度为 20 个字符的左对齐字符串。如果字符串的宽度不足 20 个字符,那么会用空白字符填充该字段。以下示例将格式说明符放在格式字符串内的一对 | 之间,以看出输出字段的宽度。下面是一个文本右对齐的示例。

printf "|%10s|\n" hello@

结果为:

|        hello|

接下来是一个文本左对齐的示例:

printf "|%-10s|\n" hello

结果为:

|hello        |

精度修饰符用于小数或浮点数,控制着结果中的数位个数。对于字符串值来说,它控制着最多能从该字符串输出多少个字符。

你甚至可以通过 printf 参数列表中的值来动态指定宽度和精度。为此,在格式表达式中指定 *,而非字面数值。

$ myvar=42.123456
$ mysig=6
$ printf "|%*.*G|\n" 5 $mysig $myvar
|42.1235|
$

这个示例中的宽度是 5,精度是 6,要输出的值取自变量$myvar。精度是可选的,其具体含义视控制字母而定,参见下表。

在这里插入图片描述
在这里插入图片描述
%b 和 %q 是对 bash(以及其他 POSIX 兼容 shell)的补充,其提供实用特性的代价是,无法移植到其他 shell 和Unix 中的 printf 命令。以下两个示例更清晰地演示了两者的功能。

%q 的 shell 引用:

$ printf "%q\n" "greetings to the world"
greetings\ to\ the\ world
$

%b 的 echo 风格转义序列:

$ printf "%s\n" 'hello\nworld'
hello\nworld
$ printf "%b\n" 'hello\nworld'
hello
world
$

下表展示了能够在 %b 格式输出的字符串中转换的转义序列。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,printf 格式说明符中的字段宽度和精度之前可以加上一个或多个标志。我们已经见过用于左对齐的标志 -。其余的标志如下表所示。

在这里插入图片描述
在这里插入图片描述
以下这些 printf 用法示例用到了一些 shell 变量,如下表所示。

PI=3.141592653589

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来还有一个无法在表格中很好呈现的示例。编写printf 语句的传统方式是,将包括换行在内的所有格式化信息全部嵌入格式化字符串。上表中就是这么做的。我们鼓励这种做法,但你并不是非得这么做,有时不这样反而会更容易些。注意,下例中的→代表输出中的制表符。

$ printf "%b" "\aRing terminal bell, then tab\t then newline\nThen line 2.\n"
Ring terminal bell, then tab → then newline
Then line 2.

最后,我们着实喜欢 bash 4.2 中引入的 %(datefmt)T,有了它,就不必创建子 shell 来调用 date 了,如下所示。

$ printf "%(%F)T\n" '-1'
2017-02-06

$ printf "%(%F_%T)T\n"
2017-02-06_20:31:25

$ printf "%(%F_%T%z)T: %s\n" '-1' 'Your log line here...'
2017-02-06_20:32:24-0500: Your log line here...

bash 得经历几次发布后才能稳定住 %(datefmt)T !有时候可以忽略 -1 参数,有时候不能,这取决于你使用的 bash 版本以及所执行的操作。为了获得最大的可移植性,不要忽略该参数。

13、用strftime格式化日期和时间

下表展示了常用的日期和时间字符串格式化选项。查询系统中 date 和 strftime(3) 的手册页,两者的选项及其含义视系统而异。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14、模式匹配字符

下表列出了 bash 中的模式匹配字符。本节中的内容摘自 Bash Reference Manual。

在这里插入图片描述
下面的 POSIX 字符类可以用于方括号内(详见系统 grep或 egrep 的手册页)​。

[[:alnum:]] [[:alpha:]] [[:ascii:]] [[:blank:]] [[:cntrl:]] [[:digit:]]
[[:graph:]] [[:lower:]] [[:print:]] [[:punct:]] [[:space:]] [[:upper:]]
[[:word:]]  [[:xdigit:]]

字符类 word 能够匹配字母、数字以及字符 _。

[=c=] 匹配所有与字符 c 拥有相同排序规则权重(由当前语言环境定义)的字符,而 [.symbol.] 则匹配排序规则符号 symbol。

这些字符类都会受到语言环境设置的影响。要想获得传统的 Unix 值,可以使用 LC_COLLATE=C 或 LC_ALL=C。

15、extglob扩展模式匹配运算符

下表中的运算符适用于使用 shopt -s extglob 时。匹配时区分大小写,但你可以用 shopt -s nocasematch(bash 3.1+)修改。该选项会影响到 case 和 [​[ 命令。

在这里插入图片描述

16、tr转义序列

下表列出了 tr 转义序列。

在这里插入图片描述
在这里插入图片描述

17、readline的init文件语法

GNU readline 库为 bash 和其他一些 GNU 实用工具提供了命令行。其可配置性出奇得好,但大多数人并未意识到这一点。

表 22、表 23、表 24 中列出了部分可用的变量。完整的细节参见 readline 的文档。

你可以在 init 文件中使用 set 命令来更改 readline 的变量值,从而改变 readline 的运行时行为。语法很简单:

set variable value

以下示例展示了如何将默认的类似于 Emacs 风格的按键绑定更改为 vi 行编辑命令。

set editing-mode vi

在适当的情况下,变量名及其值不用区分大小写也能被识别。未识别的变量名称会被忽略。

如果布尔类型变量(可以设置为 on 或 off)的值为空、on(不区分大小写)或 1,则将其设置为 on。若是其他值,则设置为 off。

另外,启用 readline 变量 show-mode-in-prompt 时,才会显示模式字符串变量​。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

18、Emacs模式命令

下表给出了一份完整的 readline Emacs 编辑模式命令清单。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

19、vi控制模式命令

下表给出了一份完整的 readline vi 控制模式命令清单。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

20、ASCII编码表

我们钟爱的不少计算机图书中都有一份 ASCII 图表(参见下表)​。即便是在 GUI 和 Web 服务器时代,你也会惊讶地发现自己仍需要时不时地从中查找某个字符。在使用tr 命令或查找一些特殊的转义字符序列时,ASCII 显然仍有用武之地。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于GEC6818开发板的C/C++贪吃蛇小游戏 f.开始游戏(进入游戏,并没有马上开游戏,需要点击播放才能开始)2.相关宏,全局变量(可以根据自己需要进行修改)k.显示文字前的相关初始化。k.自定义font.h文件。1.需要的主要头文件。l.在开发板上显示字1。m.在开发板上显示字2。a.显示固定大小图片。h.线程1:获得坐标。 阅读详情

相关推荐

从零开始:使用Mask2Former训练你的专属数据集

本文详细介绍了如何从零开始使用Mask2Former训练自定义数据集。内容涵盖环境搭建、数据准备(将LabelMe格式转换为COCO格式)、数据集注册与模型配置、训练启动与调试,以及最终的模型推理与应用。通过实战步骤和常见问题解决方案,帮助读者掌握使用Mask2Former进行实例分割的核心流程,实现专属模型的训练与部署。

weixin_28678151的博客 452

Linux之Shell编程详解

Shell编程 文章目录Shell编程一、Shell介绍二、Shell脚本的执行方式三、Shell的变量1. Shell变量介绍2. 自定义变量四、设置环境变量五、位置参数变量六、预定义变量七、运算符八、条件判断九、流程控制1. if语句2. case语句3. for循环4. while循环十、读取输入十一、函数1. 系统函数2. 自定义函数十二、Shell工具1. cut2. sed3. awk4. sort 一、Shell介绍 Shell是一个可以让用户向Linux内核发送命令以便运行程序的命令行解释器

立志成为一个前端、后端、测试全方位发展的程序员 1万+

GraphRAG + Ollama 本地化部署实战:从零搭建知识图谱问答系统

本文详细介绍了如何在本地部署GraphRAG与Ollama,搭建一个完全自主可控的知识图谱问答系统。通过逐步指导环境配置、项目初始化、核心设置修改以及源码适配,成功将GraphRAG从依赖云端OpenAI API转向本地Ollama服务,并选用qwen2.5:7b和nomic-embed-text模型。该方案有效解决了数据隐私与持续API成本问题,特别适合中小企业构建内部知识库或智能客服系统。

x2y3z4a5b的博客 919

系统编程 期末复习二 Shell编程

《系统编程》期末复习二 Shell编程一、输入/输出重定向二、管道三、命令连接符四、Shell语法4.1 执行Shell脚本4.2 执行Shell脚本4.3 执行Shell脚本4.4 执行Shell脚本4.5 执行Shell脚本4.6 执行Shell脚本4.7 执行Shell脚本4.7.1 条件判断4.7.2 if语句4.7.3 select语句4.7.4 switch-case语句4.8 执行Shell脚本4.8.1 for循环4.8.2 while循环4.8.3 until循环五、Shell脚本调试六、

fixupyourmind的博客 383

中微8S6990实战:5分钟搞定GPIO配置与按键中断(附避坑指南)

本文以中微8S6990单片机为例,详细讲解了GPIO按键中断的快速配置方法与实战避坑指南。内容涵盖GPIO初始化、中断配置、软件消抖优化及低功耗唤醒等关键步骤,并提供了利用逻辑分析仪进行调试验证的有效方法,帮助开发者快速构建稳定可靠的嵌入式按键交互系统。

weixin_29194817的博客 281

扬声器设计避坑指南:用Comsol分析反电动势对THD的影响(附案例文件)

本文深入探讨了扬声器设计中反电动势对总谐波失真的关键影响。通过COMSOL仿真,详细分析了BL值非线性、音圈电感变化等电磁-力-声耦合机制,并提供了从参数化建模到系统级优化的实战指南,帮助工程师精准量化并降低谐波失真,提升扬声器音质。

xx56789的博客 521

Shell编程参考与注意事项

欢迎Shell 与 Bash的关系Shell 是什么shell 与 bash脚本举例如何执行Shell脚本1. 作为可执行程序2. 作为解释器参数编程需要注意的参考资料整理 Shell 与 Bash的关系 Shell 是什么 Shell 是用户与Linux内核之间的接口。Shell 是一个命令解析器,用户在命令提示符输入的命令都由Shell 解释然后传给内核。 shell 与 bash bash(...

坐于屋顶望月球 596

eNSP常见故障处理

eNSP无法启动设备一直停在#井号的问题的解决方案?

lvshiliang123的博客 2万+

Linux Shell编程参考大全

本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用。

dabokele的博客 1万+

【WRF教程第3.5期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例

WW、forever的博客 1422

使用ClickHouse JDBC官方驱动,踩坑无数

这个问题我在网上查原因说是由于Zookeeper压力过大,表变成只读状态,导致ClickHouse插入数据失败。写入数据频率过高。Zookeeper中的集群节点挂掉。而我们项目出现这个问题的原因是第一个:写入数据频率过高。但是在网上搜资料的过程中,我又发现了另外一个问题:我们项目用了JDBC驱动,但ClickHouse官方并不推荐。。证实了官网确实不建议使用驱动:而应该改成驱动,并且推荐使用0.3.2以上的版本:于是,后面几天开始了ClickHouse的JDBC驱动升级之旅。

2万+

【亲测免费】 Linux Shell 命令行及脚本编程实例详解

Linux Shell 命令行及脚本编程实例详解 去发现同类优质开源项目:https://gitcode.com/ 资源介绍 本仓库提供了一个名为“Linux shell 命令行及脚本编程实例详解.pdf”的资源文件下载。该文件是一本关于Linux开发和运维的实用手册,特别适合作为手头工具书使用。 文件描述 标题: Linux shell 命令行及脚本编程实例详解.pdf 内容: 该文件详细介绍...

gitblog_06663的博客 442

【推荐100个unity插件】动画重定向,快速在不同角色间共享动画,共用非人形Humanoid(泛型generic)动画——Retarget Pro

Retarget Pro是一款高效的Unity动画重定向工具,可快速在不同角色间共享动画。主要特点包括:1分钟快速设置,支持编辑器和运行时重定向;适用于人形、动物、武器等各类角色;提供基础重定向、IK重定向和FPS专用重定向三种功能模块;通过Rig组件和骨架资产实现骨骼链匹配,支持批量处理。插件包含示例项目和预设资源,操作简便且效果优于Unity原生Humanoid系统,特别适合处理手指等精细动画。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 548

Shell编程实例——参考(一)

下表展示了可用的提示符自定义格式代码,其中,\[和\]在 bash 1.14 之前不可用,\a\e\H\T\@\v\V在 bash 2.0 之前不可用。\A\D\j\l\r仅可用于bash 2.0 之后以及 bash 3.0+。

吴声子夜歌的博客 186

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

csh 语法实例参考

csh实例 参考:   #!/bin/csh -vx#csh -vx show the command before running to help debug#just to check syntax#csh -n $0#argvif ($#argv     echo "Sorry, but you entered too few parameters"    echo "usage: 

http://itech.cnblogs.com 837

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

shell编程的核心内容

  很多LINUX的初学者以前可能用过很多dos的命令,对SHELL这种命令式的编程语言略知一二,但并没有接触很多SHELL的用法,没能真正抓住这种强大的编程语言的内涵,在这编文章里,我们用简短的篇幅使LINUX学习者掌握这门语言。在这篇文章里,我们不会关注SHELL每个命令的具体用法,因为这些在网上查是完全可以搜索出来的,有很多资料可以参考,我们会通过实例直抵SHELL的真谛,关注它的控制结

李亚锋老师 2873

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

linux shell编程总结

    本周学习了unix/linux shell编程,参考的是《LINUX与UNIX Shell 编程指南》,David Tansley著;徐焱,张春萌等译,由机械工业出版社出版的了,往内页那么一翻,都是2000年3月译的了,原书估计会更老,不过图书馆能找到合适于我这种初学者的也许就这么本了,将就着的吧。    这本书是以Bourne shell这个UNIX系统都支持的标准shell。Bou

ltbook的专栏 4557

shell基础实例二

初学shell,给大家分享我的一下我的练习题目,有不对或者写的不好的地方还请大家指出。 1.写脚本模拟Linux登录shell。具体为: Login:(输入用户名user) Password:(输入密码123456) 如果都输入正确就换行显示:“Both the account and password are right!Login Success!”如果输入错误就换行显示:“Input is error!Login Failed!” 参考代码 #!/bin/bash #var Login

蜻蜓队长的博客 1719

shell编程实例教程

Bourne Shell及shell编程版权信息作者Altmayer.bbs@altmayer.dhs.org文章出处黄嘴企鹅论坛 javalee转贴文档制作拒绝正版作者声明 本文内容为大连理工大学LINUX选修课讲义欢迎大家转载但禁止使用本材料进行任何商业性或赢利性活动转载时请保留本版权声明作者何斌武hbwork@dlut.edu.cn,大连理工大学网络中心April 1999. URL: ft...

i'm thinking... 209

什么是 Shell,Shell 功能介绍和脚本编程入门实例

1. 概述 Shell 是一种交互工具,为用户提供了启动程序、管理文件系统中的文件和运行在Linux系统上的进程。 Shell 的核心是命令行提示符,命令行提示提示符是 Shell 负责交互的部分,允许输入命令,然后解释命令,并在内核中执行。 Shell 包含了一组内部命令,这些命令可以创建文件(touch命令)、移动文件(mv命令)等; 2. 在这里插入代码片输出 HelloWorld 示例 打开控制台终端,输入以下命令,创建helloWorld.sh脚本。 vi helloWorld.sh 点击回车进

学习笔记 1072

SHELL编程基础(二)

SHELL编程基础(二) 编写一个简单的程序 #thisissample//注释 echo"hello,welcometoFedora6" echo"Loggedin$USER." env|grepPATH echo$PATH 1、变量 1)用户变量 VAL=val 如 St?nt=tom echoSt?nt e...

hopegrace的博客 220

Linux shell编程

我们用的是:bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。[注]:Bash (the Bourne-Agian shell)由 Brian Fox 为GNU项目编写,目的是代替sh。

2401_84382970的博客 1194

Shell编程

    利用Shell编程,我们可以方便的实现更复杂的功能。比如说列出当前目录下所有的C文件,我们可以在命令行下直接输入以下脚本:        for file in *.c        do        print  "$file"        done    我们可以把这些脚本写入文件中,通过调用文件来执行脚本,这对于编写大型脚本是十分有帮助的。下面我就来介绍Shell编程的一

Junlix的专栏 2178

shell 编程实例学习

1 删除普通空文件当前目录下 新建 rm_empty_file.sh ,运行后删除当前目录下的空文件#!/bin/bashls > filesfor file in `cat files` do if [ ! -s $file ] then rm -i $file fi donerm -rf files #!/bin/bashfor file in $(l

master-dragon的专栏 5406

shell编程

顾名思义,变量就是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。变量几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。从本质上讲,变量就是在程序中保存用户数据的一块内存空间而变量名就是这块内存空间的地址。在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的变量名却保持不变。定义变量:变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115本地(自定义变量)变量 环境变量 export。

2202_75588230的博客 1305
上一篇: Shell编程实例——参考(一)
下一篇: Shell编程实例——命令行处理
吴声子夜歌
博客等级 码龄9年 2688粉丝 2270原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值