shell入门学习笔记-12-命令详解: echo与printf

版权声明:本文为博主hanchao5272原创文章,转载请注明来源,并留下原文链接地址,谢谢! https://blog.csdn.net/hanchao5272/article/details/86562062

系列目录与参考文献传送门: shell入门学习笔记-序章

命令详解

admindeMacBook-Pro:myshell admin$ type cd
cd is a shell builtin
admindeMacBook-Pro:myshell admin$ type ifconfig
ifconfig is /sbin/ifconfig
admindeMacBook-Pro:myshell admin$ type ls
ls is hashed (/bin/ls)
admindeMacBook-Pro:myshell admin$ echo $PATH
/Users/admin/local/apache-maven-3.5.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin
admindeMacBook-Pro:myshell admin$ cd /usr/bin
  • 通过type来查看命令来源/类型。
  • 内建命令执行速度相对快,因为执行内建命令相当于调用shell进程的一个函数。
  • 外部命令执行速度相对慢,因为执行外部命令需要出发磁盘I/O,需要fork出单独的进程,然后退出进程。
命令 命令 命令 命令 命令 命令
bash : . [ alias bg
break builtin cd command compgen complete
declare dirs disown echo enable eval
exit export fc fg getopts hash
history jobs kill let local logout
printf pushd pwd read readonly return
shift shopt source suspend test times
type typeset ulimit umask unalias unset

echo输出字符串

不换行输出

aadmindeMacBook-Pro:myshell admin$ echo -n "------"
------admindeMacBook-Pro:myshell admin$

admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
echo 521
echo 1314
echo !
echo "---------"

echo -n 521
echo -n 1314
echo !
admindeMacBook-Pro:myshell admin$ . a.sh
521
1314
!
---------
5211314!
  • 通过-n参数使得echo输出完之后,不换行,所以会产生------admindeMacBook-Pro:myshell admin$类型的效果。
  • 建议最后一个echo不添加-n

转义字符

admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
echo 521
echo 1314
echo !
echo "---------"

echo -e "521\c"
echo -e "1314\c"
echo !
admindeMacBook-Pro:myshell admin$ . a.sh
521
1314
!
---------
5211314!
  • 通过-e参数,对转义字符进行转换。
  • 通过-e-c结合使用,同样能够达到不换行的效果。

输出至文件

admindeMacBook-Pro:myshell admin$ echo hello > c.txt
admindeMacBook-Pro:myshell admin$ cat c.txt
hello
admindeMacBook-Pro:myshell admin$ echo world > c.txt
admindeMacBook-Pro:myshell admin$ cat c.txt
world
admindeMacBook-Pro:myshell admin$ echo hello >> c.txt
admindeMacBook-Pro:myshell admin$ cat c.txt
world
hello
  • >覆盖。
  • >>追加。

printf格式化打印

序列 说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed)
\n 换行
\r 回车(Carriage return)
\t 水平制表符
\v 垂直制表符
\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符
admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
printf "%10s %-10s %5d %-5d %c %-4.2f %4.2f\n" "rightAlign" "leftAlign" 4321 1234 "hhh" 33.212 22.321
printf "%10s %-10s %5d %-5d %c %-4.2f %4.2f\n" "htAlign" "leftAl" 321 123 "hhh" 33.212 22.321
printf "%10s %-10s %5d %-5d %c %-4.2f %4.2f\n" "Align" "left" 321 123 "hhh" 33.212 22.321
admindeMacBook-Pro:myshell admin$ . a.sh
rightAlign leftAlign   4321 1234  h 33.21 22.32
   htAlign leftAl       321 123   h 33.21 22.32
     Align left         321 123   h 33.21 22.32
abcadmindeMacBook-Pro:myshell admin$ printf "%2s\n" "abc"
abc
admindeMacBook-Pro:myshell admin$ printf "%2s\n" 111
111
admindeMacBook-Pro:myshell admin$ printf "%2d\n" 111
111
admindeMacBook-Pro:myshell admin$ printf "%2d\n" "111"
111
admindeMacBook-Pro:myshell admin$ printf "%2.1f\n" 2.11
2.1
admindeMacBook-Pro:myshell admin$ printf "%2.1f\n" 22.11
22.1
  • %s - string , %d - decimal , %c - char , %f - float
  • %10s占位为10的字符串,不足补空格,超长全显示,默认向右对齐。%-10s向左对齐。
  • %4.2f占位为7的浮点数,其中整数部分占位4,小数点后占位2。整数部分不足补空格,超长全显示,默认向右对齐。
  • 需要手动控制换行\n
admindeMacBook-Pro:myshell admin$ printf "%c\n" abc
a
admindeMacBook-Pro:myshell admin$ printf "%1c\n" abc
a
admindeMacBook-Pro:myshell admin$ printf "%2c\n" abc
 a
admindeMacBook-Pro:myshell admin$ printf "%3c\n" abc
  a
admindeMacBook-Pro:myshell admin$ printf "%-3c----\n" abc
a  ----
  • %c只会截取字符串的第一个字符。
  • %c的长度参数作用:截取的字符处于第几个位置。
admindeMacBook-Pro:myshell admin$ printf "%2.2f\n" 11.1111 22.2222 33.333
11.11
22.22
33.33
admindeMacBook-Pro:myshell admin$ printf "%s %s\n" a a b b c
a a
b b
c
admindeMacBook-Pro:myshell admin$ printf "%s-%c-%d-%f\n"
--0-0.000000
  • 多余的参数仍会按照格式输出。
  • 如果没有参数,则%s%c按照null输出,%d按照0输出,%f按照0.000000输出。

猜你喜欢

转载自blog.csdn.net/hanchao5272/article/details/86562062