当前位置: 首页 > ops >正文

echo、seq、{}、date、bc命令

文章目录

  • echo、seq、{}、date、bc命令
    • echo
      • 案例
    • seq命令
      • 案例
    • {}花括号
      • 列表扩展
      • 序列扩展
      • 嵌套扩展
    • date
      • date命令
    • bc(高精度计算器)

echo、seq、{}、date、bc命令

echo

echo命令是一个常用的Shell命令,用于在终端上输出文本。它的基本语法如下:

echo [option] [string]
# 其中,option选项是可选的,可以用于控制输出的格式,string是要输出的文本,也可以为空。
-n  :不换行,输出完后不自动换行
-e  :支持转义字符- \t:表示制表符- \n:表示换行符等- \r:表示回车符- \a:表示响铃符- \b:表示退格符- \f:表示换页符- \v:表示纵向制表符- \\:表示反斜杠- \':表示单引号- \":表示双引号
-E :禁用转义符(默认行为)

案例

例1:输出字符串

输出一个字符串"Hello, world!"并在末尾加换行符

[root@ubuntu2204csq101 ~]# echo 'Hello,world!'
Hello,world!

例2:输出字符串取消换行

如果要取消自动换行,可以使用-n选项

[root@ubuntu2204csq101 ~]# echo -n 'Hello,world!'
Hello,world![root@ubuntu2204csq101 ~]# 

例3:输出制表符

如果要输出一个制表符,可以使用转义字符"\t"

[root@ubuntu2204csq101 ~]# echo -e 'Hello\tworld!'
Hello	world!

例4:将echo的输出输入到文件中

[root@ubuntu2204csq101 ~]# echo 'Hello, world!' > output.txt
[root@ubuntu2204csq101 ~]# cat output.txt 
Hello, world!
#这个命令会将字符串"Hello, world!"写入到名为output.txt的文件中
#如果文件已经存在,会覆盖原有内容;如果文件不存在,会创建一个新文件

seq命令

seq(sequence 的缩写),用来生成一系列的数字,可以指定起始值、增量值和终止值。seq 命令可以用于生成数字列表,或者与其他命令配合使用,例如在 bash 循环中。基本语法如下

seq [OPTION]... [FIRST] [INCREMENT] LAST
#FIRST:序列的起始值,默认为 1。
#INCREMENT:序列的增量值,默认为 1。
#LAST:序列的终止值,必须指定。
#OPTION:可选的参数,用于控制输出的格式、分隔符等

seq 命令支持以下常用的选项或参数:

选项说明
-f指定输出的格式,可以使用 %g(默认)、%e(指数形式)或 %f(浮点形式)表示数字,也可以添加其他字符作为前缀或后缀
-s指定输出的分隔符,默认为换行符
-w使输出的数字具有相同的宽度,不足的部分用 0 填充

案例

例1:生成从 1 到 10 的数字序列

如果只指定一个数字作为参数,seq 命令会从 1 开始,以 1 为增量,生成到该数字的序列

[root@ubuntu2204csq101 ~]# seq 10
1
2
3
4
5
6
7
8
9
10

例2:生成5到15的数字序列

如果指定两个数字作为参数,seq 命令会以第一个数字为起始值,第二个数字为终止值,以 1 为增量,生成数字序列

[root@ubuntu2204csq101 ~]# seq 5 15
5
6
7
8
9
10
11
12
13
14
15

例3:生成10到50,以10为增量的数字序列

如果指定三个数字作为参数,seq 命令会以第一个数字为起始值,第三个数字为终止值,第二个数字为增量,生成数字序列

[root@ubuntu2204csq101 ~]# seq 10 10 50
10
20
30
40
50

例4:生成从 10 到 1,以 -1 为增量的数字序列

如果要生成递减的数字序列,可以指定一个负数作为增量

[root@ubuntu2204csq101 ~]# seq 10 -1 1
10
9
8
7
6
5
4
3
2
1

例5:生成从 1 到 2,以 0.2 为增量的小数序列

seq 命令也可以生成小数序列,只要指定一个小数作为参数即可

[root@ubuntu2204csq101 ~]# seq 1 0.2 2
1.0
1.2
1.4
1.6
1.8
2.0

例6:使用-s选项指定输出的分隔符

[root@ubuntu2204csq101 ~]# seq -s ':' 5
1:2:3:4:5

例7:使用 -w 选项使输出的数字具有相同的宽度

seq 命令默认输出的数字的宽度是根据数字的位数决定的,如果要使输出的数字具有相同的宽度,可以使用 -w 选项,这样不足的部分会用 0 填充

[root@ubuntu2204csq101 ~]# seq -w 9 11
09
10
11

例8:使用 -f 选项指定输出的格式

seq 命令默认输出的数字的格式是 %g,即一般的数字格式,如果要使用其他格式,可以使用 -f 选项,可以使用 %e(指数形式)或 %f(浮点形式)表示数字,也可以添加其他字符作为前缀或后缀

[root@ubuntu2204csq101 ~]# seq -f '[INFO] This is log message #%g' 1  10
[INFO] This is log message #1
[INFO] This is log message #2
[INFO] This is log message #3
[INFO] This is log message #4
[INFO] This is log message #5
[INFO] This is log message #6
[INFO] This is log message #7
[INFO] This is log message #8
[INFO] This is log message #9
[INFO] This is log message #10

seq命令参考:Linux seq命令教程:生成数字、日期、字母等序列(附实例详解和注意事项)-Linux入门自学网

{}花括号

{}的核心作用是按照括号内的模式生成多个字符串,语法格式为:前缀{模式}后缀

模式 可以是列表序列嵌套组合,扩展后会将 “前缀 + 模式中的每个元素 + 后缀” 组合成新字符串。

列表扩展

语法{元素1,元素2,元素3,...}

#1.基础用法:配置touch使用,创建多个文件名
touch file{1,3,5}.txt  
#2.配合 mkdir 创建多个文件夹
mkdir doc{_draft,_final,_archive}  

序列扩展

语法{起始值..结束值}{起始值..结束值..步长}

#1.整数序列(默认步长1)
[root@ubuntu2204csq101 ~]# echo num{1..10}
num1 num2 num3 num4 num5 num6 num7 num8 num9 num10
#2.奇数序列(设置步长2)
[root@ubuntu2204csq101 ~]# echo num{1..10..2}
num1 num3 num5 num7 num9
#3.字母序列(a-z或A-Z)
[root@ubuntu2204csq101 ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z

嵌套扩展

语法{模式1{模式2}..}

#1.列表序列
[root@ubuntu2204csq101 ~]# echo {A,B}{1..3}
A1 A2 A3 B1 B2 B3
#2.序列嵌套列表
[root@ubuntu2204csq101 ~]# echo file{1..2}_{a,b}.log  
file1_a.log file1_b.log file2_a.log file2_b.log
#3.三层嵌套(日期组合)
[root@ubuntu2204csq101 ~]# echo {2023,2024}-{01..02}-{01..30}  
2023-01-01 ... 2023-01-15 2023-02-01 ... 2024-02-15
#4.创建多重文件
[root@ubuntu2204csq101 ~]# mkdir -p /back/{csq{1..3}/csq{1..3}.html,zhw,hehe}
[root@ubuntu2204csq101 ~]# tree /back/
/back/
├── csq1
│   ├── csq1.html
│   ├── csq2.html
│   └── csq3.html
├── csq2
│   ├── csq1.html
│   ├── csq2.html
│   └── csq3.html
├── csq3
│   ├── csq1.html
│   ├── csq2.html
│   └── csq3.html
├── hehe
└── zh

date

date命令用于显示或设置当前系统时间和日期。在Linux系统中,date命令通常用于获取当前时间、设置系统时间、计算时间差等功能。

date命令的–date选项

该选项可以用于指定日期和时间,以指定的格式输出。它的语法如下:

date --date="string"
# 其中,string是一个日期和时间的字符串,可以是相对时间或绝对时间。

下面是一些常见的用法:

  1. 昨天、今天和明天
    可以使用关键字"yesterday"、"today"和"tomorrow"来表示昨天、今天和明天,例如:
date --date="yesterday"
date --date="today"
date --date="tomorrow"
  1. 相对时间
    可以使用类似"1 day ago"、“1 month ago”、“1 year ago”、“1 hour ago”、“1 minute ago”、"1 second ago"的相对时间来表示一段时间之前的日期和时间,例如:
date --date="1 day ago"
date --date="1 month ago"
date --date="1 year ago"
date --date="1 hour ago"
date --date="1 minute ago"
date --date="1 second ago"

也可以使用类似"1 day"、“1 month”、“1 year”、“1 hour”、“1 minute”、"1 second"的相对时间来表示一段时间之后的日期和时间,例如:

date --date="1 day"
date --date="1 month"
date --date="1 year"
date --date="1 hour"
date --date="1 minute"
date --date="1 second"
  1. 绝对时间
    可以使用类似"2021-09-25 13:30:00"的绝对时间来表示指定的日期和时间,例如:
date --date="2021-09-25 13:30:00"

--date选项只能用于输出日期和时间,不能用于修改系统的日期和时间。如果要修改系统的日期和时间,可以使用date命令的-s选项。

date命令

date [OPTION]... [+FORMAT]
# 其中,OPTION是可选的命令选项,+FORMAT是可选的输出格式。

下面是一些常用的选项:

  • -s:设置系统时间为STRING指定的时间,要求用户具有root权限。

  • -u:以UTC(协调世界时)格式输出时间。

  • -R:以RFC-2822格式输出时间。

下面是一些常用的+FORMAT选项:

- %Y:年份

- %m:月份

- %d:日期

  • %H:小时

  • %M:分钟

  • %s:秒

  • %Z:时区,如CST(中国标准时间)。

  • %a:星期几的缩写

  • %A:星期几的全称

  • %b:月份的缩写

  • %B:月份的全称

  • %c:完整的日期时间,如Wed May 25 10:30:45 CST 2022。

  • %s:自1970年1月1日0时0分0秒以来的秒数。

例如,下面的命令会输出当前时间的完整信息:

[root@localhost ~]# date
Fri Apr 28 09:29:45 CST 2023

如果要输出当前时间的时间戳(即自1970年1月1日0时0分0秒以来的秒数),可以使用+%s选项:

[root@localhost ~]# date +%s
1682646351

如果要将系统时间设置为指定的时间,可以使用-s选项,例如:

[root@localhost ~]# date -s "2023-04-28 9:47:00"
Fri Apr 28 09:47:00 CST 2023

bc(高精度计算器)

bc命令是一个计算器程序,可以进行高精度的数学计算。它可以读取标准输入或文件中的表达式,并计算表达式的结果。下面是一些常见的用法:

  1. 基本运算
    bc支持基本的数学运算符,包括加减乘除和求模运算,例如:
echo "3 + 4" | bc
echo "3 - 4" | bc
echo "3 * 4" | bc
echo "3 / 4" | bc
echo "3 % 4" | bc

这些命令分别输出7、-1、12、0和3,分别表示加、减、乘、除和求模的结果。
2. 指数运算
bc支持指数运算,可以用"^"符号表示,例如:

[root@localhost ~]# echo "2 ^ 8"| bc
256

这个命令输出256,表示2的8次方的结果。
3. 小数计算
bc可以进行小数计算,需要将scale变量设置为小数点后的位数,例如:

[root@localhost ~]# echo "scale=2; 3 / 4" | bc
0.75

这个命令输出0.75,表示3除以4的结果保留两位小数。
4. 大数计算
bc可以进行高精度的计算,可以处理超过计算机位数的整数和小数,例如:

[root@localhost ~]# echo "12345678901234567890 * 98765432109876543210" | bc
1219326311370217952237463801111263526900

这个命令输出1219326311370217954013316222663771887900,表示两个超大的整数的乘积。
5. 函数

bc支持一些数学函数,例如sin、cos、tan、sqrt等,可以用函数名和参数来调用,必须加上 -l参数才行例如:

[root@localhost ~]# echo " s(0.5)" | bc -l
0.47942553860420300027

这个命令输出0.47942553860420300000,表示sin(0.5)的结果。

bc默认是整数计算器,如果要进行小数计算,需要使用scale变量,如果要进行高精度计算或使用数学函数,需要使用-l选项。

http://www.xdnf.cn/news/19029.html

相关文章:

  • Shell 秘典(卷二)——号令延展秘术 与 流程掌控心法・if 天机判语篇精解
  • SpringMvc下
  • log4jshell CVE-2021-44228 复现
  • 智能标签分类:新一代任务管理工具的进化方向
  • LangChain如何使用通义千问的向量模型
  • 【C语言入门级教学】sizeof和strlen的对⽐
  • Java使用apache.commons.math3的DBSCAN实现自动聚类
  • HTML 核心标签全解析:从文本排版到媒体嵌入
  • vue3中安装tailwindcss
  • C++函数继承
  • docker 搭建zookper集群,快照虚拟机多机模拟
  • 园区智慧水电管理系统:让能源管理从“成本黑洞”变“利润引擎”
  • 【实时Linux实战系列】实时数据可视化技术实现
  • 【机器学习】 12 Latent linear models
  • 【拍摄学习记录】03-曝光
  • 解决通过远程桌面访问ubuntu20.04出现的异常问题
  • IDA-pro-mcp 的核心功能 常用的prompt
  • 【机器学习入门】3.1 关联分析——从“购物篮”到推荐系统的核心逻辑
  • 【CanRun】Python终端[颜色文字]输出
  • 代理IP服务器平台推荐,企业级动态住宅IP资源哪里找?
  • 每周AI看 | 微软开源VibeVoice-1.5B、OpenAI历史性交棒、网易云商出席AICon全球人工智能开发与应用大会
  • windows下安装kafka
  • LoRA三种不同训练流程在配置和保存权重的差异(64)
  • Ubuntu 服务器 KERNEL PANIC 修复实录
  • 开源vs商用美颜sdk:美白滤镜功能在直播中的优劣对比
  • gdb打印长字符产变量信息
  • CST混合求解任务的场路联合仿真(下)
  • ACID分别如何实现
  • 【C/C++】柔性数组
  • 科学融智学引领人机协同教育新范式