连Shell基本输出都不会,还写什么脚本?——echo与printf命令深度总结

如果你连Shell的基本输出命令都不会使用,那么确实很难写出有意义的Shell脚本。`echo` 和 `printf` 是Shell中用于输出的两个基本命令,它们可以帮助你向终端显示信息。下面是对这两个命令的简单总结:
### echo
`echo` 是一个非常常用的命令,用于在终端中输出文本。它的基本语法如下:
```sh echo [选项] [字符串] ```
#### 常用选项:
- `-n`:不输出换行符。 - `-e`:启用转义字符的解释。
#### 示例:
```sh echo "Hello, World!" echo -n "This will not add a newline." echo -e "This is a test." ```
### printf
`printf` 是一个更强大的命令,它类似于C语言中的`printf`函数,可以格式化输出。它的基本语法如下:
```sh printf [选项] 格式化字符串 [参数] ```
#### 常用选项:
- `-v`:将字符串放入竖直模式。 - `-s`:不输出结尾的换行符。
#### 格式化字符串中的转义字符:
- ` `:换行符。 - ` `:制表符。 - `%%`:输出一个百分号。
#### 示例:
```sh printf "Hello, World! " printf "%s is %d years old. "

相关内容:

rc="https://p3-sign.toutiaoimg.com/tos-cn-i-axegupay5k/2f7cb7dd5d1a4fd58fb8d41959c5b64c~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1766182445&x-signature=ya4uajhgD1fGSLax4fvUzAZQrEY%3D">lass="xiangguan" id="content">在 Linux 系统中使用 echo 命令和 printf 命令都可以实现信息的输出功能,下面我们分别看这两个命令的应用案例。

echo

1.使用 echo 命令创建一个脚本文件菜单
功能描述:echo 命令主要用来显示字符串信息, 语法格式如下:

echo  字符串
比如创建一个简单的菜单展示页面:

#!/bin/bash
echo "1.查看网卡信息"
echo "2.查看内存信息"
echo "3.查看磁盘信息"
……
2.echo默认的命令有些单调,默认以黑色字输出、无法居中展示。echo 命令支持-e 选项,使用该选项可以让 echo 命令识别后面的转义符号含义,其中033 或e 后面可以跟上终端编码,终端编码可以用于定义终端的字体颜色、背景颜色、定位光标等,从而丰富我们的使用体验。


b 退格键(Backspace)
f 换行但光标仍停留在原来的位置

 换行且光标移至行首
r 光标移至行首,但不换行
	 插入Tab键
 打印
033或e 设置终端属性,如字体颜色、背景颜色、定位光标等
比如用上面的常用的转义符号来演示:

正常情况

# echo "hello world"
hello world

-b

# 退格键(Backspace)
# echo -e "hellobworld"
hellworld
# 
# echo -e "hellebbo world"
helo world

-f

# 换行但光标停留在原来的位置
# echo -e "hellofworld"
hello
     world
# 

-t

# 插入Tab键
# echo -e "hello	world"
hello   world

设置终端属性

# echo -e "033# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "e# echo -e "033# echo -e "033 参数
一般 printf 参数就是要输出的内容,可以搭配的格式如下:

%d或%i 十进制整数
%o 八进制整数
%x 十六进制整数
%u 无符号十进制整数
%f 浮点数(小数点数)
%s 字符串
b 退格键(Backspace)
f 换行但光标仍停留在原来的位置

 换行且光标移至行首
r 光标移至行首,但不换行
	 Tab键
效果演示:

%d或%i %o %x

# 以下进制均不带换行符
# 10进制
# printf "%d" 12
12# 
# 在12前空出5个字符
# printf "%5d" 12
   12# 
# 在12后空出5个字符
# printf "%-5d" 12
12   # 



# 八进制整数
# printf "%o" 12
14# 

# 十六进制整数
# printf "%x" 12
c# 

# 无符号10进制整书,拥有最大值,超过无法打印记
# printf "%ud"  9223372036854775808
9223372036854775808d# 

# 加上换行
# printf "%d
" 12
12
# 

f

# 换行后停留在原来的位置上
# printf "%df" 12
12
  # 

%f

# 打印小数
# printf "%f
" 1.11
1.110000
# 

# 保留小数点后三位
# printf "%.3f
" 1.11
1.110
# 

# 右对齐8个宽度
# printf "|%8.3f|
" 1.11
|   1.110|
# 

# 左对齐8个宽度
# printf "|%-8.3f|
" 1.11
|1.110   |
# 

%s

# 打印字符串
# printf "%s
" "hello"
hello
# 

# 右对齐
# printf "|%8s|
" "hello"
|   hello|
# 

# 左对齐
# printf "|%-8s|
" "hello"
|hello   |
#
2.用printf编写一个菜单

#!/bin/bash
clear
printf "e[42m%s
e[0m" "---------------------------------"
printf "e[2;10H%s		
" "这里是菜单"
printf "e[32m%se[0m
" "1.查看网卡信息"
printf "e[35m%se[0m
" "2.查看内存信息"
printf "e[36m%se[0m
" "3.查看磁盘信息"
printf "e[34m%se[0m
" "4.查看 CPU 信息"
printf "e[33m%se[0m
" "5.查看账户信息"
printf "e[42m%s
e[0m" "---------------------------------"
echo

欢迎关注评论!

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章