1 变量
1.1 2>&1
解释:将“标准错误”输出到“标准输出文件中”。
示例:cat /etc/hosts >> $LOG 2>&1
说明:
1、使用 > 或 >> 时,默认为标准输出 1 重定向, 所以 > file
就是 1> file
的省写。
2、举个例子:ls test.txt >> 1.log
命令
- 如果目录下存在test.txt,则
cat 1.log
结果为test.txt
。 - 如果目录下不存在test.txt,执行命令出现报错
test.txt not found
,而cat 1.log
结果为空
。 - 如果目录不存在,执行命令换为
ls test.txt >> 1.log 2> 2.log
,前台无报错,而cat 2.log
结果为test.txt not found
。2.log前可加空格,也可不加空格。 - 如果目录不存在,执行命令换为
ls test.txt >> 1.log 2>&1
,前台无报错,而cat 1.log
结果为test.txt not found
。
3、&1
起到的作用是,将“标准错误输出”输出到标准输入的文件中,即仍输出到1.log中。
参考的优秀文章:【linux命令】Linux shell中 2>&1的含义解释(标准输入输出)及nohup后台启动
1.2 参数
序号 | 参数 | 说明 |
---|---|---|
1 | $# | 表示执行脚本传入参数的个数 |
2 | $* | 表示执行脚本传入参数列表 |
3 | $$ | 表示进程id |
4 | $@ | 表示执行脚本传入所有参数 |
5 | $0 | 表示执行脚本名称 |
6 | $1 | 表示第一个参数 |
7 | $2 | 表示第二个参数 |
8 | $? | 表示脚本执行状态0正常,其他表示有错误 |
1.3 crontab脚本执行失败
在脚本中引用环境变量
问题探究参考:《SHELL脚本在crontab环境下执行失败问题处理》
root用户添加:
source /etc/profile
普通用户添加:
source ~/profile
2 操作
2.1 计算
1、使用bc进行计算
[db2inst1@localhost ~]$ echo "1+2"|bc
3
[db2inst1@localhost ~]$ echo "1.00+2"|bc
3.00
[db2inst1@localhost ~]$ echo "1.00*2"|bc
2.00
2.2 输出命令结果的两种方式
[db2inst1@localhost ~]$ echo $(date)
2023年 11月 17日 星期五 11:27:35 CST
[db2inst1@localhost ~]$ echo `date`
2023年 11月 17日 星期五 11:27:41 CST
2.3 筛查、去重、排序
//先将结果通过grep/awk命令筛选要查看的列,再使用sort命令进行排序,然后再使用uniq命令去重。以查看DB2数据库链接对应的IP地址举例。
$ db2 list applicaitons |grep -i dbname | grep -i schamename | awk '{print $1,$4}' | awk -F"." '{print $1,$2,$3,$4}' | sort | uniq
2.4 分组统计
$ ps -ef|awk '{print $1}' | sort | uniq -c | awk '{printf "%-20s%-15s\n",$2,$1}'
3 格式/排版/美化
3.1 echo
1、一个命令输出多个空行
echo '\n\n\n'
3.2 颜色
色彩 | 黑 | 红 | 绿 | 黄 | 蓝 | 洋红青 | 白 |
---|---|---|---|---|---|---|---|
前景色 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
后景色 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
[db2inst1@localhost ~]$ echo -e "\033[41;36m Hello world \033[0m"