1. #!、shebang意义
Linux环境中的任何脚本语言,都是以这样一个被称为shebang的特殊行作为起始的,在这行中,字符#!被置于解释器路径之前。/bin/bash是解释器的位置
/wiki/Shebang
2. echo、printf
echo 后面不用引号,用双引号,单引号区别,并总结双引号中需要转义(\)的特殊字符
printf使用引用文本或由空格分隔的参数,我们可以在printf中使用格式化字符串。我们还可以指定字符串的宽度、左右对齐方式等。在默认情况下,printf并不像echo命令一样会自动添加换行符,我们必须在需要的时候手动添加,比如在下面的脚本中:
#!/bin/bash
printf “%-5s %-10s %-4s\n” No Name Mark
printf “%-5s %-10s %-4.2f\n” 1 Sarath 80.3456
printf “%-5s %-10s %-4.2f\n” 2 James 90.9989
printf “%-5s %-10s %-4.2f\n” 3 Jeff 77.564
输出结果:
No    Name      Mark
1    Sarath    80.35
2    James      91.00
3    Jeff      77.56
%s、%c、%d、%f都是格式化字符,其所对应的参数可以置于带引号的格式化字符串之后。
%-5s格式化为左对齐宽度为5的字符串替代(-表示左对齐),如果不用-指定对齐方式,字符串则采用右对齐形式。宽度指定了保留给某个变量的字符数,列
和列本身有一个空字符串。对Name而言,保留宽度为10,所以看起来列和列之间有11个字符串。因此,任何Name字段的内容都会被显示在10字符宽的
保留区域内,如果内容不足10字符,余下的则会以空格符填充。如果超过10个字符,列对齐效果将被打乱。
%-4.2,其中.2指定保留2个小数位,对小数部分四舍五入。注意,在每行格式字符串后都有一个换行符\n。
3. 颜输出
session如何设置和读取打印彩文本对应颜码:重置=0,黑=30,红=31,绿=32,黄=33,蓝=34,洋红=35,青=36,白=37
打印彩背景对应颜码:重置=0,黑=40,红=41,绿=42,黄=43,蓝=44,洋红=45,青=46,白=47
echo -e “\e[1;31mThis is red text\e[0m”
echo -e “\e[1;42mGreen background\e[0m”
4. cat /proc/`pgrep java`/environ | tr ‘\0′ ‘\n’
tr ‘\0′ ‘\n’ 重新格式化输出,将\0(null字符)替换成\n(换行)
5. bc
设定小数精度:scale=2 将小数位个数设置为2.
echo “scale=2;3/8″ | bc
.37
进制转换:
echo “obase=2;100″ | bc
1100100 #十进制转换成二进制
echo “obase=10;ibase=2;1100100″ | bc
100 #二进制转换成十进制
计算平方以及平方根:
echo “sqrt(100)” | bc
10
echo “10^10″ | bc
10000000000
6. stdin、stdout、stder、tee
0 – stdin(标准输入)
1 – stdout (标准输出)
2 – stderr (标准错误)
$echo a1 > a1;cp a1 a2;cp a2 a3 ;chmod 000 a1
$ cat * | tee - | cat -n
cat: a1: Permission denied
1  a1
2  a1
$
a1
a1
tee命令接收到来自stdin的数据。它将stdout的一份副本写入文件。同时将另一份副本作为后续命令的stdin。命令cat -n将从stdin中接收到的每一行数据前加上行号并写入stdout。-a参数可以用于追加内容
可以使用stdin作为命令参数,只需要将-作为命令的文件名参数即可:
$ echo who is this | tee -
who is this
who is this

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。