Shell打印输出命令

1. echo命令

  • Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:echo string
  • 您可以使用echo实现更复杂的输出格式控制。

1.1 显示普通字符串

echo "It is a test"

这里的双引号完全可以省略,以下命令与上面实例效果一致:

echo It is a test

1.2 显示转义字符

echo "\"It is a test\""
#结果将是:
#"It is a test"

1.3 显示变量

  • read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
#!/bin/sh
read name
echo "$name It is a test"
  • 以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:
[root@www ~]# sh test.sh
OK #标准输入
OK It is a test #输出

1.4 显示换行

echo -e "OK! \n" # -e 开启转义
echo "It is a test" # 输出结果:
# OK!
#
# It is a test

1.5 显示不换行

#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
# 输出结果:
#
# OK! It is a test

1.6 显示结果定向至文件

echo "It is a test" > myfile

1.7 原样输出字符串,不进行转义或取变量(用单引号)

echo '$name\"'
#输出结果:
#$name\"

1.8 显示命令执行结果

echo `date`
#注意: 这里使用的是反引号 `, 而不是单引号 '。
#结果将显示当前日期
#Thu Jul 24 10:08:46 CST 2014

2. printf 命令

  • printf 命令模仿 C 程序库(library)里的 printf() 程序。
  • printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。
  • printf 使用引用文本或空格分隔的参数,外面可以在 * printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。

printf 命令的语法:printf format-string [arguments...]

  • 参数说明:

    • format-string: 为格式控制字符串
    • arguments: 为参数列表。
  • 实例如下:
$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell

2.1 printf实例

#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
  • 执行脚本,输出结果如下所示:
姓名     性别   体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99
  • %s %c %d %f都是格式替代符

    • %-10s 指一个宽度为10个字符
    • -表示左对齐,没有则表示右对齐,任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
    • %-4.2f 指格式化为小数,其中.2指保留2位小数。

更多实例:

#!/bin/bash

# format-string为双引号
printf "%d %s\n" 1 "abc" # 单引号与双引号效果一样
printf '%d %s\n' 1 "abc" # 没有引号也可以输出
printf %s abcdef # 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc def printf "%s\n" abc def printf "%s %s %s\n" a b c d e f g h i j # 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n"

执行脚本,输出结果如下所示:

1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j
and 0

2.2 printf的转义序列

序列 说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed)
\n 换行
\r 回车(Carriage return)
\t 水平制表符
\v 垂直制表符
\|一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符
$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB> $ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B> $ printf "www.runoob.com \a"
www.runoob.com $ #不换行

3.read读取控制台的输入

  • read [选项] (参数)

    • -p:指定读取值时的提示符
    • -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
  • 参数:变量:指定读取值的变量名

【Linux】5.6 Shell打印输出指令的更多相关文章

  1. Linux中的shell

    shell的含义: 首先shell的英文含义是"壳": 它是相对于内核来说的,因为它是建议在核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核. Li ...

  2. linux基础之Shell Script入门介绍

    本文介绍下,学习shell script编程的入门知识,通过几个入门实例,带领大家走进shell script的神圣殿堂,呵呵,有需要的朋友参考下. 本文转自:http://www.jbxue.com ...

  3. Linux程序设计之shell程序设计

    看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...

  4. Linux中的shell到底是什么?

    (曾经有一段充足的时间放在我面前,可以学linux,而我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此.) 最近,要将项目代码部署到linux环境下运行,但是对linux毫无基础,之前 ...

  5. Linux中的shell到底是什么

    (引自:https://zhidao.baidu.com/question/557066905.html) [一] shell的含义: 首先shell的英文含义是"壳": 它是相对 ...

  6. Linux常用三十七条指令

    Linux常用三十七条指令 基础指令(11):ls,pwd,cd,mkdir,touch,cp.mv,rm,vim,>/>>/,cat 进阶指令(10):df,free,head,t ...

  7. 渗透测试中Linux下反弹shell的认识

    最近老是觉得自己白天工作累,晚上理应休息 堕落了几天才发觉自己真垃圾,加紧向前吧. 0x00 前言 在平时渗透还是工作中经常会遇到shell反弹的情况,网上一搜反弹shell都是一大堆,但是真正遇到反 ...

  8. linux(02)基础shell命令

    Linux(02)之shell命令 一,Linux命令行的组成结构 在我们的linux启动,登陆成功之后会显示: 这就是linux的命令行的组成结构 二,常见命令 1,Linux系统命令操作语法格式 ...

  9. Linux bash反弹shell原理引起的一点思考

        最近,一起做安全测试的兄弟问我:Linux反弹shell的命令是什么,我毫不犹豫地在笔记中找到发给了他,可是脑海中突然闪过有个疑问,为啥这样能反弹shell呢,用了那么多次却从来没有想过这个问 ...

  10. 【Linux】【Shell】【Basic】Bash

    命令历史:shell进程会在其会话中保存此前用户提交执行过的命令: ------------------------------------------------------------------ ...

随机推荐

  1. react之Lazy和Suspense(懒加载)

    React.lazy React.lazy 函数能让你像渲染常规组件一样处理动态引入(的组件). 什么意思呢? 其实就是懒加载. 其原理就是利用es6 import()函数.这个import不是imp ...

  2. 前端(一)-Html

    1.网页基本信息 <!DOCTYPE html> 浏览器使用的规范 <head> 网页头 <body> 主体部分 <meta> 元数据 meta的nam ...

  3. 彻底讲透Spring三级缓存,原理源码深度剖析!

    一.前言循环依赖:就是N个类循环(嵌套)引用.通俗的讲就是N个Bean互相引用对方,最终形成闭环.在日常的开发中,我们都会碰到类似如下的代码 @Servicepublic class AService ...

  4. 加速 AI 训推:Lepton AI 如何构建多租户、低延迟云存储平台

    Lepton AI 是一款面向开发者的 AI 平台,旨在提供易用.高效且可扩展的基础设施能力.该平台适用于各种训练.推理需求,GPU充足,在保证高性能的同时,能够灵活应对不断变化的工作负载.用户可以快 ...

  5. cmake-4

    cmake-4学习,参考 cmake构建c++项目快速入门2-1 cmake构建c++项目快速入门2-2 了解 cmake的工作原理: Windows下用cmake编译cmake (1)先下载cmak ...

  6. Volar Vetur 在 VSCode 里的配置

    VSCode 对 vue2 vue3 项目如何配置 1. 在 vscode 安装 vetur.Vue - Official(之前叫 Volar) 两个插件 2.你若是 vue3 项目,直接在你项目工作 ...

  7. stdio.h的缓冲机制解析

    1. 令人迷惑的printf() 在C语言中,由于stdio.h中的缓冲机制,printf的输出通常会受到缓冲区的影响. 这种影响可能非常微妙,并常常令人疑惑,比如我们来看下面这段代码 #includ ...

  8. Kali 关闭自动锁屏功能

    Kali 关闭自动锁屏功能 1.点击 [开始] -> [设置] -> [电源管理器] 2.选择 [安全性],将 [自动锁定会话] 选为 [从不],将 [当系统休眠时锁定屏幕] 取消勾选,点 ...

  9. 闲话 717 - LGV 引理的小应用

    这是我们的某一天的联考题目: \(n\le 500\). 显然使用平面图完美匹配计数可以获得 \(O(n^6)\),但是有一种神秘的对路径的双射.当时我们都认为这是超级人类智慧,但是今天看书发现是书上 ...

  10. Idea无法下载插件或下载插件报错

    Plugin Python was not installed: Cannot download 'https://plugins.jetbrains. file ->  settings -& ...